There are no standard ways to advance nowadays. While it is possible to pursue a career as an engineer at a technical university and advance quickly, many programmers have achieved “senior” status without specialised training. Regardless of the career path, there are significant differences – technical and non-technical – of engineering maturity. It is worth paying attention to such maturity when deciding who to promote or hire to senior positions.
Juniors should sometimes get inspiration from someone else’s code – it’s a chance to gain more experience
Nowadays, software engineering requires so many skills that it is difficult to find a specific definition or the only right model of senior engineers’ competences. There is also no classic path to promotion to this position – some IT companies use a rigid way to climb up the career ladder, while others do not have strict procedures. Even more so, “no engineer doesn’t wake up one day as a ‘senior’ just because your title reflects that upon a promotion”.
However, there is a contractual level of professionalism a candidate for a “senior” should demonstrate. Their knowledge and experience often determine the success of projects, teams, and even companies, and having them in a group is the basis of success. So what does it mean to be a senior engineer?
Seniority and experience function
When someone starts working as a programmer, they notice more and more exciting and useful tools over time. However, it is difficult to know immediately when and under what circumstances to apply proven methods, and when to take a risk and try something new.
Developing your programming skills requires time, experience and hours spent working on a variety of projects and with different people. This is how you gain knowledge and get tools for diagnosing and solving problems.
Novices versus experts
Senior engineers don’t necessarily write bug-free code, but they’ve been in the profession long enough to realise that they can’t know everything about coding. Instead, they know when not to do something and how to avoid risk.
New engineers should sometimes get inspiration from someone else’s code, even though they may find it dull and monotonous. However, to achieve a high level of professionalism and gain experience, it is worth accepting and appreciating this practice.
- stick to a schedule or plan
- operate from a knowledge-based and rational perspective
- are aware and analytical; therefore they act, decide or choose slower
- have a little or limited situational perception
- take actions that are based on attributes and aspects
- base on experience and proven methods
- see a given problem in a broad context
- spot deviations from norms and patterns
- do not rely on rules, guidelines or maxims
- perceive the situation intuitively
- apply the analytical approach only in new situations
“Generation X (and even more so generation Y) are cultures of immediate gratification. I’ve worked with a staggering number of engineers that expect the “career path” to take them to the highest ranks of the engineering group inside 5 years just because they are smart. […]
Not everyone can be senior. If, after five years, you are senior, are you at the peak of your game? After five more years will you not have accrued more invaluable experience? […]”, writes John Allspaw in his book Web operations – keeping the data on time.
A senior engineer is a mature engineer
The author of the above words, referring to real-life opinions, observations of professionals and experts, created – on his blog kitchensoup.com – one of the most interesting analyses of the “elder”. Interestingly, in addition to work experience and acquired technical skills, he takes non-technical competencies to the workshop, observing them in depth.
Speaking of senior engineers, not to confuse titles with vague expectations, he refers to engineering maturity: “There are technical areas where a mature engineer should have some level of mastery or understanding that a newcomer does not.” According to the conducted analysis, he distinguished ten features and acceptable practices of mature engineers.
10 features of a mature senior engineer:
1. Understand the value of non-technical areas at work
Mature engineers know that regardless of how complete and elegant their designs are, it won’t matter if they can’t cooperate with other people. They can’t build anything on condescending and diminishing behaviour or by exalting themselves. Part of the satisfaction of engineering is enjoying the company of the people you work with in designing and building. They are self-aware when it comes to communication.
There is a fundamental difference between criticising the human character and censoring the product of labour.
2. They seek constructive criticism of their projects
This means they have a concept of where they could improve and are continuously asking colleagues and managers to check how they are doing. And successful engineers, when completing a project or getting ready for a project, ask themselves and others a lot of questions like: “Even if it’s technically correct, is it understandable enough for the rest to support it, solve problems, and extend it? Could I have missed anything?” They are open to criticism. They know that what they do won’t be completely in their hands, and peer review allows them to make better design decisions.
The degree to which others want to work with you is a direct indicator of whether you will be successful in your career – so be the engineer everyone wants to work with.
3. They are not afraid of making estimates
All companies are based on plans and estimates, and all engineers working on a project are committed to working together. This means that they have a duty to be predictable to others. From The Unwritten Laws of Engineering: “Promises, schedules, and estimates are necessary and important instruments in a well-ordered business. Many engineers fail to realise this, or habitually try to dodge the irksome responsibility for making commitments. You must make promises based upon your own estimates for the part of the job you are responsible for, together with estimates obtained from contributing departments for their parts. […]”.
Avoiding responsibility for estimates is another way of saying, “I’m not ready to rely on building critical infrastructure.”
4. They have an innate sense of anticipation
After writing the code, many engineers can say: This code looks good, I’m proud of myself. However, a mature engineer asks other people to review it and collects their feedback. The specialists ask themselves more questions: How long will it take to be rewritten? How will the implementation affect post-launch resource consumption? How much do I expect CPU/memory/disk/network power to increase or decrease? Will others be able to understand this code?
5. They understand that not all of their projects are stage work
No matter how exciting and interesting the project is, there are always boring and repetitive tasks to complete. Those less mature engineers may consider such tasks to be below their dignity or position. “Sometimes the saving grace of a tedious task is their simplicity and maturity manifests in finishing them quickly and moving on. Sometimes tasks are tedious because they require extreme discipline and malleable attention span. It’s an odd phenomenon that the most tedious tasks, only to be carried out by the most senior engineers, can also be the most terrifying.” (Kellan Elliot-McCrea, Etsy’s chief technology officer)
For mature engineers, the success of a project is much higher than the potential praise they can personally receive for working on it – they do not prioritise their own contribution over the team’s success.
6. They improve the skills and knowledge of the people around them
To make progress, senior engineers should be able to clearly communicate details to others. They don’t have to be great at performing in public but can convey their opinion to the younger engineers they work with. This is a team game – no one gets good without expressing their ideas and involving others. “At Etsy, we call this a ‘generosity of spirit’. This is one of our core engineering values, but also a primary responsibility of our Staff Engineer position, a career-level position”, said Elliot-McCrea.
The “elders” realise that the best engineering achievements in the world are done by teams, not by single brilliant and lonely engineers.
7. Understand the difference beetween mentoring and sponsorship
Many successful engineers remember their mentor who taught them what it means to be an “elder”. Whether it is in terms of position or not, the “elders” become champions for the youngsters. By practising this skill, they can be not only helpful but also balance the level of the entire team. As the visibility and value of their work increases, the basis for influencing the environment is the type of sponsorship of people within it. There are many benefits in developing this.
8. Clearly identify trade-offs when making judgements and decisions
They realise that all engineering decisions, implementations, and designs exist within a spectrum. Mature engineers can quickly pinpoint contexts in which one successful approach or solution may and may not work. They know that it is challenging to be useful and accurate at the same time because work is on the verge of optimality and fragility. At a later stage in a project’s life, when the original design is no longer scaled up or needs to be replaced or rewritten, they can look back from the perspective of earlier decisions. And instead say: “Yes, I have come this far, and I knew that at some point, we would have to expand or change it.”
Understanding what is “premature” and what is not is what distinguishes older engineers from younger engineers.
9. They are empathetic and aware of how vital others’ feelings are
There are usually many stakeholders in complex projects. In each project – designers, product managers, operations engineers, programmers, and business developers – all have various perspectives. Seniors realise that their goals and views may differ. Being empathetic in this sense means having the ability to view a project from other perspectives and take that into account in their own work. Empathy can help understand what another team member thinks about the technology or a technical decision. Mature engineers know this and adapt accordingly.
Goal conflicts are an inherent part of any engineering work, and complaining about them, rather than treating them as a condition for success, is a sign of a less mature engineer.
10. They are aware of cognitive biases
Cognitive biases (emotions, thoughts, beliefs) may, at some point, limit the progress of an engineer’s career. In contact with team members, it is possible to be unaware of them when data is interpreted to contradict the facts. As a result, it can have a surprising impact on how work is done and how the team works. You may not realise when they appear nor know how to defend against them, but most mature engineers have such a level of self-awareness that they at least recognise that they are vulnerable to them.
As with most technical fields, the longer you practice something, the more likely you will develop into a professional. But that’s not enough. Technology is changing so fast these days that you need to learn continually and stay up to date at all times. Senior, successful engineers never assume that they know everything. They know they should keep abreast with the latest technology updates to ensure the best value and quality of work. Fortunately, engineers are inherently curious to understand how stuff works. This gives them a natural learning ability, enables them to develop and build a career.