Ask HN: What do you expect from a senior software engineer?
24 points| dnoberon | 6 years ago
What are you expectations?
What skills or concepts should they have mastered?
How quickly should they be able to deliver features or products?
By nature the question is a little amorphous, but I think it beneficial for mid-career developers to understand the expectations of experienced developers, and hiring managers, with regards to senior level positions and work.
[+] [-] Mxtetris|6 years ago|reply
Those mistakes and learnings together inform their judgement when approaching tasks and allow them to ask questions like:
* Is this code robust enough? (They ask because of the many times they pushed code and suddenly everything broke.)
* Should we even be building this? (They ask because of that one time they didn't ask, and wasted weeks of effort on something that was never used.)
* Is approach A the best way to achieve our goal? (They ask because of that one time they tried A, thought it would take one week, but spent two months on it instead.)
* What happens when we're asked to add X feature? (They ask because of that one time they were surprised by a feature request and had to rewrite a bunch of their code.)
[+] [-] mooreds|6 years ago|reply
http://www.mooreds.com/wordpress/archives/2812
Short answer is it is different for each job. I would ask for rubrics from interesting companies (interesting to you) rather than hn at large.
[+] [-] littleblah|6 years ago|reply
https://littleblah.com/post/2019-09-01-senior-engineer-check...
[+] [-] barefoot|6 years ago|reply
In addition, they will do it while abstracting away all of the pain and complexity as part of that process, communicating only to provide accurate updates on progress and asking thoughtful probing questions. They make all of their work seem effortless in the process.
[+] [-] NotSammyHagar|6 years ago|reply
[+] [-] rafiki6|6 years ago|reply
They should have a proper understanding of what it takes to build a reliable and robust system end to end.
"How quickly" is the wrong question. It's not about speed of delivery, but quality. A senior engineer would know that and if someone asks them to build something quick, they should be honest about the loss in quality and technical debt that will be incurred due to speed of delivery.
[+] [-] frou_dh|6 years ago|reply
That might sound obvious, but people can end up with senior titles on their resume just by hanging around places doing nothing but maintenance and small additions for long enough, and barely accruing any design chops.
[+] [-] dnoberon|6 years ago|reply
[+] [-] username90|6 years ago|reply
[+] [-] dnoberon|6 years ago|reply
[+] [-] rvz|6 years ago|reply
Some of the typical expectations of what I regard as 'senior' are usually as follows.
Technical Skills:
* A polyglot at many programming languages and has no trouble at learning new ones to a proficient level if required.
* Has useful open-source projects and significant open-source contributions in widely used projects. (Bonus for commit-access) No silly hello-world/test-123/git-push-demo repositories.
* Competent at data-structures and algorithms and must be able to write a proof to help explain some of the time/space complexities of these concepts.
* An understanding of the appropriate tool/library for the scenario, dismisses programmer zealotry and can compare and reason about choosing one tool over another.
* Writes clean documentation, tests (or delegates them to SDETs) and uses continuous integration for changes in the code.
* Expert-level on at least one version-control software, Git/SVN or TFS and conducts code-reviews on patches either in open-source or company-level contributions.
* Knowledge of a development methodology to use for software development and delivery to meet the user/client requirements.
Soft skills:
* Participates or leads in the interviewing process and justifies the questions they ask with the projects that they work on.
(It is really no good, throwing a leet-code problem and then the candidate asks if you use it and you will look rather silly as an interviewer if you don't.)
* Gives both technical and non-technical presentations at conferences or meetings about difficult engineering problems or the like.
* Can communicate towards many teams and or different audiences eloquently and understands different perspectives of the user. Not just engineering teams.
* Mentors junior programmers to adopt the best practices enforced in the company to become better programmers.
In this industry we have self-proclaimed 'senior' engineers that don't know what a AVL-Tree is, can't implement a LRU cache or cannot talk to a non-technical audience about what they do. If these 'engineers' contributed to a large compiler project, then all of these requirements would have been met. Unfortunately in 2019, the title of being 'senior' can be given to literally anyone (even with less than 2 years of experience) in their own organization but elsewhere, they are equivalent to a entry-level coder with a heavily decorated CV.
They may look 'good' on paper, but I think that is not enough to truly find out if they are senior-level. So my approach is more or less of a senior-software-engineering CAPTCHA test.
[+] [-] dnoberon|6 years ago|reply
This situation is one of the reasons I asked the question. The title is being overused imo - and assigned by management to developers instead of by peers or an actual technical benchmark.
"So my approach is more or less of a senior-software-engineering CAPTCHA test."
I love this quote, and will use it from now on :D
Personally I think the industry as a whole is fairly bad at judging a developer's skill level at anything past a junior level when it comes to hiring.
[+] [-] stuxnet79|6 years ago|reply
[+] [-] Alexharper|6 years ago|reply
[deleted]