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...
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)
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).
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".
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
*Understanding what clients really want, even if the client doesn't know it yet.