A Career in Programming

The journey continues!

In our previous blog we have seen the arduous path a Pre-Apprentice must take just to become a Software Engineer, the lowest professional job in the industry. In the following paragraphs we will show you what a novice engineer must achieve in order to firstly become an Advanced Software Engineer and then a Senior Engineer.

Advanced Software Engineer

The biggest advance in this position is the fact that a programmers’ world no longer revolves around themselves and their tasks, but they start focusing on their projects and peers. Yes, you read it correctly, their projects, since they tackle projects as a whole. They work from task to task, and actively seek guidance from others, since the danger of going down a rabbit hole still looms.

This position lasts from two, up to four years, which is one of the longer periods in the industry. No wonder, since advanced programmers are expected to learn how to write correct and clean code (with guidance), constantly staying in line with the stated best practices. In addition to that, they are expected to take part in technical design of features, as well as specialize in one or more areas (e.g. Ruby, Go, Javascript development).

Professionally, making the same mistake twice should by now have become a thing of the past, although the learning process is still ongoing. The programmer’s education is now self-directed and he does not rely on the feedback of senior engineers that much.

In essence, although an Advanced Software Engineer co-owns an area of project/product, he/she must still be eager to learn and ready to take initiative since those are crucial element in progressing to a Senior Engineer.

A Career in Programming

Senior Engineer

Now things really get serious. A Senior Engineer is in charge of a whole team and is responsible for projects with well-defined tasks. He is the go-to guy whom others approach for guidance. Taking initiative is therefore key to this role, since Senior Programmers have to understand and make design decisions and tradeoffs in their area.

Beside the technical issues, like not spending more time than necessary debugging, they also have to communicate with non-technical team members to give technical advice. Knowledge of industry trends, the company’s infrastructure and build system is also a must.

Since Senior Engineers possess a strong record of ownership of their projects, they are expected to contribute to common code because they have end-to-end responsibility. In addition, they are expected to identify problems and/or risks not only of their own work, but as well of others.

The leadership part of a Senior Engineer’s job is based on the ability to communicate. They should convey technical decisions through design docs, tech talks, blog posts etc. Apprenticeship programme is still important, but now a Senior Engineer assumes the role of a mentor to young programmers, pairing up with them and providing them with feedback and reviewing their design and code.

Senior Engineers have to mediate as well, bridging across various functions and departments, such as Product, Design, Analytics, etc. Communication-wise, their most important role is the aforementioned one of identifying problems both for their own and adjacent work, and discussing them in order to find the best solution as early as possible.

All in all, a Senior Engineer is the person whom everybody looks up to if a problem arises. However, to be the best of the best and earn promotion, most Senior Engineers decide to take up some type of Tech Lead responsibilities. As an alternative, they can demonstrate a notable degree of people leadership by assuming mentorships, which indicates that they are ready to become Advanced Senior Engineers.

But more on this post in our next week’s blog.