Hello HN, I am doing a research to try to get a feeling of what different people in the industry consider to be essential qualities of a "senior" software engineer.<p>If you could pick 3 qualities that makes a software engineer worthy of the "senior" title, what would they be?
What’s worthy of a senior title varies company to company. Does your company have a career ladder?<p>A few popular ones that you can look at:<p>- <a href="https://medium.com/building-carta/engineering-levels-at-carta-d33db2a55a20" rel="nofollow">https://medium.com/building-carta/engineering-levels-at-cart...</a><p>- <a href="https://career-ladders.dev/engineering/" rel="nofollow">https://career-ladders.dev/engineering/</a><p>- <a href="https://www.progression.fyi/" rel="nofollow">https://www.progression.fyi/</a>
1. Takes leadership to find what they don't know<p>2. Works to Understand the business purpose of features<p>3. Cursory knowledge of all immediate dependencies (doesn't stop at application if you use a database)
Being at least 28 years old. Not kidding, well, maybe. In general, "seniority" in many fields in life comes with age; there is no shortcut. It's not very different in IT. Besides the accumulation of experience, with age you gain perspective and become more respectful towards your peers. You'll find many adults who have only one perspective (their own) and that are not respectful to their colleagues: these are not seniors not matter how much they know or how good they are.<p>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).
1. Good Problem domain knowledge and versatile "T-shaped" breadth/depth of Solution Domain technologies.<p>2. Good communication skills to interact with Clients/Marketing/Sales/Management/Peers/Juniors.<p>3. Actual varied work experience e.g. <i>Code Complete</i> has a line like "actual 10 years experience and not 1 year experience repeated 10 times".
I am a JavaScript developer so my opinions are limited to that slice of software.<p>Senior used to mean someone experienced enough to become an advanced problem solver. Those days are long over.<p>Now senior is equivalent to <i>expert beginner</i>. 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.<p>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).
You could pick three out of this list: <a href="https://davidxiang.com/2021/07/18/20-micro-habits-of-high-impact-software-engineers/" rel="nofollow">https://davidxiang.com/2021/07/18/20-micro-habits-of-high-im...</a>
Senior engineers can solve technical problems juniors can't. Senior engineers can provide technical leadership and ensure juniors don't get lost. Seniors are great at product management so keeps your product on track instead of wasting time building features you don't need.<p>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.
The ability to decompose a task into parts
The ability to complete all those parts alone (or with team help, if necessary)
The ability to delegate those parts to team members<p>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 turnkey DX tooling and set up functional, enjoyable value delivery workflows for teams<p>- Able to engineer efficient and horizontally scalable greenfield architectural solutions<p>- Able to pick up existing/legacy solutions and work with/modernise/replace them with minimal business impact
Able to do all the things autonomous: planning (and ACCURATELY calculating costs), talking* with clients, learning possible new required skills in no time.<p>*Understanding what clients really want, even if the client doesn't know it yet.