Hacker News new | ask | show | jobs
by aethr 2676 days ago
When I started at my current company, Senior Developer titles were given out by management. They didn't have the capability or the information to judge people based on technical skills, and the title was mainly used as a perk to keep employees at the company to avoid having to retrain. I feel like this happens in a lot of places, and is probably the cause of what the author describes in the article.

I'm now a director at the same company, and I've laid out criteria for achieving the Senior role that developers seem to understand. It's now something that they can work towards instead of simply aging into, and it makes the title more meaningful.

Core criteria for a Senior Developer:

* Mastery of their toolset, maybe not 100% but enough to solve any problem.

* Ability to take an entire project from start to completion without assistance. This doesn't mean they don't get any assistance or can't ask for help, but if no one is available, they should be able to arrive at a sensible solution to any problem.

* Understand our business, and prioritize decisions that have a net benefit for the business / team. Balance personal desires for perfection against the pragmatic needs of the customer and our business. We're here to do a job.

* Uses their time effectively. If I see a developer who has a few days of downtime between booked client work, I want to see them take on a task or learn a skill that will benefit the business.

* Client facing attitude and communication that reflects positively on the team. We don't put developers in front of clients often, but each should be able to provide notes in a JIRA to help a client understand an issue or clarify available options. Clear, concise, polite and helpful.

These are skills that I think the average developer would gradually learn in five years on the job, but having them spelled out helps junior and mid level devs understand what is important to the business.

3 comments

One thing that I would say is missing from your list is that a senior developer should actively be working with junior developers. Not necessarily as a mentor, but they should be available to help less senior people improve their craft.
I agree this is an important skill (and attitude), but whether it's a core requirement for senior probably depends on the size of your shop. Senior devs who are keen to mentor, passionate about fixing organizational flaws (process development), and are good at managing upwards are starting to tick boxes for Team Lead or engineering management.

If the team is big enough to support it, I think it's acceptable to have a senior dev who doesn't give a lot back in terms of mentoring but handles their projects and doesn't create messes.

What's the next step up from Sr then?

I agree that you don't have to mentor people but I think that makes you way less effective than you would be normally. Now you may be making a distiction on working with others and mentoring but I think it's the same, if your helping others become more effective at any task thats mentoring.

Ive also seen a tendency of people who are excellent solo to make broader scope problems due to less trust or just less communication with others.

I'm also always very worried when I hear a piece of software was written by one person.

Some people just don't enjoy teaching that much. I think generally most people get satisfaction from helping others, but some devs just seem to prefer working mostly on their own. They still have to write pragmatic and maintainable code (the "dont make messes" part), and they don't level up others in the business, but they can still be incredibly valuable.

In smaller shops, there really isn't anywhere "further" to go past Senior unless you want to take on leadership of other devs. And it makes sense, in a lot of cases once you get to a certain level of experience the most valuable thing you can do is pass on some knowledge and act as a multiplier for others.

You can lead without being a manager, eg lead by example, lead without force, lead by halping when asked, or providing guidance when asked. That's all mentoring. That's all pure technical. We may be agreeing.

But I wouldn't want to be in a place where there was just good at coding was the end of my growth.

At some point your effectiveness only comes from being a force multiplier - by helping other people getting ahead.
That is impossible for most, where would you get all juniors? People are only junior for a couple of years in a 40 year career, should we assign a team of seniors to mentor each junior?
Interestingly, the criteria that apply to a Senior Developer can be also applied to a Technical Co-founder and a Software Contractor. Essentially, someone who is independent enough to be a Senior Developer, should be also independent enough to run his own business, if he only wanted that.
I agree, at least to have the technical and customer facing skills. Running a consulting business also requires marketing and sales skills and I don't know if it makes sense to require those for a senior developer position.
"Uses their time effectively. If I see a developer who has a few days of downtime between booked client work, I want to see them take on a task or learn a skill that will benefit the business."

No one can keep up the context switching for extended periods of time, but some are better at faking it than others.

"I'm now a director at the same company"

Right.