If you could pick 3 qualities that makes a software engineer worthy of the "senior" title, what would they be?
A few popular ones that you can look at:
- https://medium.com/building-carta/engineering-levels-at-cart...
Although, I am still curious from your perspective, what would be the 3 most valuable traits of a senior software engineer?
2. Works to Understand the business purpose of features
3. Cursory knowledge of all immediate dependencies (doesn't stop at application if you use a database)
Thanks
Obviously, one also needs to have a bunch of good domain knowledge; but this is independent of age, and it's rather easy to acquire (just work harder/more).
I have witnessed very very "senior" engineers who didn't really showcase any senior trait, nor they were helping the company or the colleagues in any significant way. Conversely, I have seen very fresh engineers showcasing the diligence and a level of knowledge that you would expect from someone with longer time in the industry. Those tend to be exceptions, but they happen.
Time in the industry is definitely a relevant factor, but I'd say it's also not a guarantee for more seniority...
2. Good communication skills to interact with Clients/Marketing/Sales/Management/Peers/Juniors.
3. Actual varied work experience e.g. Code Complete has a line like "actual 10 years experience and not 1 year experience repeated 10 times".
I really love your clarification on point 3. I like to think time spent on the industry is not necessarily an indication for actual experience. I have seen people that have spent years and years in the same company doing the same tasks over and over and I tend to believe that they have grown much less than other professionals that managed to be exposed to more challenges during the same time-span.
I also love the idea of T-shaped profiles and of course communication skills are a must!
For example, "Communication Skills" is not mere language fluency. It refers to interaction with each of the listed stakeholders using their language, understanding their pov and anticipating their needs. Thus with "Clients" focus on "What and Why", with "Marketing" on "Product Positioning and Product Family", with "Peers" on "Module interfaces and Technical details" etc. etc. Basically the "Senior" Engineer needs to have a 360-degree view of both the primary Engineering discipline and all the ancillary Business disciplines (as needed).
Senior used to mean someone experienced enough to become an advanced problem solver. Those days are long over.
Now senior is equivalent to expert beginner. They are really fast and confident at using tools. This advanced and rapid tool usage means they can solve some problems quickly, but they cannot imagine any solutions aside from their favorite tools. The most important limitation there is that most senior developers cannot write original software. It’s a world of a few commonly known problems with commonly applied repeated solutions and everything else is discarded with excuses that equally lack originality.
If, as a JavaScript developer, you are able to write original software without popular tools you are commonly viewed as something like a dark wizard, equal bits of magic and evil. People view this as mysterious and incompatible with reality (you won’t be hired).
At least one of the above or similar things. The important part here is to not think that you need anything in particular to be a senior engineer, there are lots of ways to grow the value you bring to a team and it is much better to have a diversity of senior engineer types than to focus on any one kind.
That's it. From there if you're good at the technical stuff you become more of an IC and if you're good at the management stuff you go into management. The first applies to both cases.
- Able to engineer efficient and horizontally scalable greenfield architectural solutions
- Able to pick up existing/legacy solutions and work with/modernise/replace them with minimal business impact
Great points also in being equally proficient in working on greenfield as well as brownfield (legacy) projects.
Thanks for sharing this
*Understanding what clients really want, even if the client doesn't know it yet.
No human can do this for software projects. There are too many variables.