back

by rvz·7y ago·view on hn ↗
I expect such a 'senior software engineer' to be extremely competent with some of the best practices in the industry and to have a very strong portfolio of experience that is worthy of the role.

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.

2 comments
"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."

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.

Correct, this is why we still test senior developers with algo interviews. The reality is no one knows what the hell a senior developer is.
The tone of this post is rather negative, but I think you make a lot of good points.