Chief Software Architect
Job Title: Software Architect
Education: M.Sc. in Computer Science, University of Montreal B.Sc. in Computer Science, University of Montreal
Previous Experience: I started as Software Engineer for a large telecommunication company in Canada and then moved on to Senior Software Engineer at three different companies over the course of seven years.
Job Tasks: My current company's product is an appliance that helps organizations keep track of what their employees do on the company's file servers. The appliance is deployed inside the company's data centers near their file servers.
As Chief Software Architect at the company it is my job to make all important decisions as to the direction to take the product. This includes the choice of operating system running on the appliance, breaking down the required functionality into several high level components. I define how these components should interact and if/how external entities should interact with the components.
Another facet of my work is to interact with customers and investors to answer technical questions. This happens very frequently during early sale engagements with prospective customers as their IT (information technology) staff will be asking questions as to how the appliance will fit in their existing environment. I will also be involved later on in the deployment planning phase to make sure we have everything we need for a successful and quick deployment. Finally, I will often be called upon when problems arise with deployed appliances to help diagnose the source of the problem and provide directions on how to fix the problem.
A typical day at work normally starts with a stop at the coffee machine followed by going through a pile of emails. Normally there is at least one meeting per day but often there are more. Most meetings are technical and involve other engineers. The remaining ones are normally strategic planning with upper management or product direction planning with the product management team. I spend of lot of time during the day discussing design with engineers in front of a white board. I also spend lots of time researching products that could be used to add features or reduce the cost of our solution. The remainder of my time is spent writing code or fixing bugs in the software. While the hours are pretty flexible as a software engineer the fact that I have a lot of meetings does reduce that flexibility.
There is often some travel (about 10%) required in my job, mostly to meet with customers or investors. The business trips can go from two days to a week but rarely more than that.
Best and Worst Parts of the Job: What I like the best about my job is being involved with lots of different people: engineers, product managers, upper management, customers, and investors. I also really enjoy the fact that I get to make more design decisions so I really make a difference in the product.
What I don't like about my job is that you have to deal with a lot of politics.
1. In order to become a software architect you must be able to look at the big picture. Too often engineers will only look at their little piece of the puzzle and have no interest in what goes on beyond that.
2. It is also very important to develop your communication skills. This is critical in order to be able to convey your ideas to non-technical folks.
3. Last but not least, you must have a deep and broad technical expertise. People will rely on your to make the right decision and the basis for any good decision is knowledge. You must also be able to recognize knowledge in others and not hesitate to ask people their opinion on a subject. Often others will bring up some points you had not thought of and it will help you make better decisions.
Additional Thoughts: There are two ways you can evolve your career as a software engineer. You can move into management starting with leading teams and then managing people or you can stay in the "technical branch" and move on to eventually become a software architect. It is very hard (and often a bad idea) to keep coding when you go up the management side. It is much more desirable on the technical side. The problem is that a lot of companies do not offer explicit career growth opportunities on the technical side but don't hesitate to ask your manager how it can be done as it often can.