Senior Engineers Reduce Risk
medium.com
medium.com
In a market where there are more job openings than employable candidates, and competition for talent leads to rampant ego-stroking and title-inflation... the term "senior" has become just another word for "competent". Someone who can work independently without hand-holding.
So how do we verbally distinguish that from, "No, I really DO mean 'senior'"? Most people get 40+ working years in a career. How do you encourage humility and self-awareness, so that people don't honestly believe they've reached the 90th percentile after the only first 10% of that journey?
That depends on the company they are working for though. I have seen people (from tech and non-tech roles) tell me they are seniors/managers because they have X-years of experience.
More often then not, if someone needs to tell me they have X-years of experience rather than showing through example, I roll my eyes, and stay away.
At what age did they start? I've worked with people who were just getting started in their late 30s after a career change or kids growing up enough to become more independent, etc.
That is absolutely absurd. Plenty of tech titans and small startups have architects and senior devs in their 40's and up (I'm one, and at trade conferences I'm hardly even an outlier).
Not to mention that 90% of the industry is in the "enterprise" world (seemingly invisible to much of HN's readership), which is largely composed of devs in their 40's, 50's, and 60's. The high-octane older guys often go into consulting in their later years, where they're billing at $200-400+ an hour while giving technical direction to a team of warm bodies fresh out of school (or off the boat).
If you seriously believe that engineering is something that you do from age 25 to 35, before starting your "real career" in PowerPoint, then that's incredibly sad. Why not just go the MBA route to begin with?
And, for what it's worth, I agree: one should not be considered "senior" after 3, or 5 years. Actually, tenure matters less than perspective and problem-solving approach.
edit Also, we've all met that dev that just "gets it" and can be extremely productive regardless of time at a job/company/project. That dev also "got it" when they were pretty new to the industry.
Rookies worry too much about "job hopping". I can't count the number of people I've interviewed who had "10 years experience"... but really they just had "the same year 10 times".
2 jobs in 10 years brings an understanding of that long-term team success but a relatively small window into dev jobs as a whole.
These sentences are in direct conflict with one another.
I said that one should not be considered senior based on a time period. And then proceeded to offer two (non-time-related) characteristics I considered to be hallmarks of seniority.
1. I think that 3 - 5 is too short - there's so much to learn, and a lot of experience to be gained from seeing how your designs age.
2. That said, time doesn't matter as much as engagement, problems tackled, and attitude. But - it's still conditional on 1. above. You may *think* you "get" it, but it may turn out that your great designs don't age well, etc.
So, it's a combination of both. Not purely tenure, not purely attitude.On that token, Pragmatic Thinking and Learning is an awesome book for improving your problem solving approach, better understanding cognitive biases, and learning more effectively.
https://www.amazon.com/Pragmatic-Thinking-Learning-Refactor-...
The problem also comes up for the 3-5 year mark when pay is involved. At my current company, it was impossible to make a certain salary without being promoted to Senior. The bigger problem was that the company has a slightly unrealistic view of the market, and to get any decent talent you'd have to be in the Senior pay bracket.
Ultimately I think the best solution is to screen appropriately and decouple salary from title. I think the best model would be to never hire anyone as a Senior, but let the Seniors emerge.
I also feel that this model of hiring is emphasized by the craze over agile (and particular SAFE) where all the engineers are supposed to be like lemmings that take orders from product owners. If you get the right team I suppose this is possible to do, but the lack of senior leadership on a team (and it's deferral to non-technical people like scrum masters and product owners) leads to unnecessary bikering among engineers on the 'right' way to solve a problem.
But you're right, there is no perfect system.
As far as I can tell, the company I'm at follows the model alexbanks described, and it seems to work quite well. We generally do not hire people on in senior or lead roles. If someone has 15 years of experience and they're a team lead at their previous job, the chances are still very high they'll have to start as a "normal" developer with us. (Notably, we do not tie salary to title. A "software developer" can have an arbitrarily high salary if needed.) If they demonstrate the capacity for leadership, we will identify that and very quickly offer them more responsibility and promotions whenever the opportunity arises.
Really it seems like we just need more granularity than "senior" or "not senior."
That's my perspective at 3 years into startup software engineering.
This was the point of the original article.
Now that we have technical career paths where one can expect to continue as technical individual contributor, the official "Senior Engineer" title falls roughly in the middle (slightly on the lower side) of the career ladder[1]. I'm generally OK with this personally, so long as we distinguish between the title "Senior Engineer" and the role "senior engineer". The role I would equate to Randall Koutnik's "Finders"[2].
[0]I talked about this in a little more detail on another thread: https://news.ycombinator.com/item?id=11545294
[1]http://changelog.ca/log/2013/08/09/software_engineer_title_l...
[2]https://rkoutnik.com/2016/04/21/implementers-solvers-and-fin...
oh right, the OFFICIAL one. Sure.
> falls roughly in the middle (slightly on the lower side) of the career ladder[1].
Not really, as the upper levels aren't reached by most people.
Not official in the sense of "there is some standards committee making these designations", but it seems to be a commonly accepted practice that the title of "Senior Engineer" is assigned to someone who "is capable of being given a high level (and often vague) task, and work completely independently on it and finish it" but not anything more.
But my main concern was distinguishing between the title and the role. When I think of the role, I think we generally consider someone to be senior when they can:
a) work through very thorny technical problems and find novel solutions
b) connect technical solutions to the needs of the business
c) provide leadership or mentoring to other engineers
Like or not (I don't, personally) the title and the role use the same words but mean different things.
> Not really, as the upper levels aren't reached by most people.
I'm not clear on what your point is. Is it in the middle of most people's career? No. Is it in the middle of most technical career ladders (as used in various tech companies)? Yes.
My point is that in places where there is a technical career ladder, there are titles that do actually reflect (what I consider to be) the role of a senior engineer. This is how tech companies get around the fact that convention has lowered the expectations of the title Senior Engineer.
The core problem is that there is confusion about the relationship between title and role. The OP is trying to fix this confusion by raising the standards of the title to match the role (by explaining what the role really entails). I'm just trying to clarify the conventions set by the industry so that people can plan their careers accordingly.
Why would senior by the 90th percentile?
A junior engineer is proud he got his code to work, an experienced engineer is proud of the code he wrote to get the feature to work, and a senior engineer is proud of the code he didn't have to write to get it to work.
Some fallacies I've seen from senior engineers:
"Let's ship the simpler solution even though it has clear problems. We'll hide it behind a feature flag and deploy it to a few machines first to make sure nothing disastrous happens."
"Let's coerce a third party library to do the thing we want even though it wasn't really designed to do what we want. By using the third party library we don't have to take ownership of what we are writing! So much less code to maintain!"
The second bullet in particular can be ironic because I've seen senior-engineer-written code break production because it tried to rely on a third party library to do something without doing any unit, functional, or performance testing to ensure it was doing the right thing and doing it fast enough.
After having been in the software engineer for close to a decade, I see an increasingly worrying trend where companies just assume their engineers are incompetent and favor delegation to third party libraries, external services, and devops/metrics/monitoring to solve all problems. As someone who considers himself a competent engineer, I find the trend saddening because I'm not trusted to write correct code either.
1. "Let's ship the simpler solution even though it has clear problems." You wouldn't believe how many times I've had to try to convince younger engineers that we don't need to over optimize and can't initially create the perfect solution because 9 times out of 10, the feature will change significantly, or get abandoned completely. Shipping the simpler solution is a way to test the waters and make sure you're building what is expected or wanted.
2. "Let's coerce a third party library to do the thing we want even though it wasn't really designed" Same point as #1. Whats the easiest way to get something out so that we can test and measure assumptions.
Overall if you've read the article its about reducing risk. I don't want my team to spend 6 months on a feature to find out the feature is something that business or users want, nor do I want complete crap. The idea is where is the middle ground. Believe me I've dealt with many younger engineers like yourself that believe we should always roll our own solutions when its just not feasible. This is a clear distinction between a senior engineer and younger ones.
I was focusing less in my comment on time-to-market and more on risk aversion to code ownership. But, to address your concern, doing things the right way up front can often cost less time and money than doing it the wrong way and working around the brokenness. This can be truth for both initial time to market as well as the more obvious long-term maintenance costs.
At the end of the day it's a calculated judgement call, and I've seen senior engineers get it wrong as well as juniors.
Or it performs well enough that it's not a bottleneck in profiling (and deliberate performance optimizations are unnecessary).
Seems like they were "senior" only in title.
I would counter that a senior engineer is proud of his team, who knows the best practices to ship stable, working solutions. And they are not afraid to throw code away when it ages, because they have the confidence and the team to quickly build something new, that's maintainable and reliable.
I've walked away from a few places because of the interview process. It's like the old song the gambler by Kenny Rodgers. You need to know when to walk away and know when to run.
If I get put in a room with a puzzle sheet and they lock the door for 20 minutes, I'm out. Not because I can't solve the problems, but because any company that thinks my ONLY value is in solving puzzle questions has no idea how to hire people and have devaluated the role of the senior SE's at that company. You can tell a lot about a company by the way in which they conduct the interview process.
Pressure will be created and focused onto the non-technical problem creator and reliefs for that pressure will be similarly engineered in precisely the same manner. All the while, the engineers will keep a smug, knowing look on their faces while the manager flounders around a technical terrain that they can't begin to fathom and that has suddenly become utterly hostile.
The manager will eventually 'get it', realizing that he has to work with the engineering team and not against them. Then all problems magically evaporate and a new understanding is reached.
Why wouldn't you just look for a new job? Why waste your own time on a doomed project?
I certainly hope all the engineers are in on the joke, because if I found out some others on my team conspired to create this situation without letting me decide to be involved or not I would be super pissed.
If you got handed a bunch of bullshit tasks by your senior engineer with or without a generous amount of winking and subtle sarcasm, you'd pick up on it pretty quick. You'd have all sorts of questions about why X needs to be done and would be getting no straight answers. Eventually you'd either get the picture or someone will take you aside and delicately let you in on it. Think that scene in Silicon Valley where Big Head is having his new "role" described to him, only done by the engineers rather than an HR manager.
If it looks like you need a lesson in savviness yourself, they won't let you in on it and let you flounder around just like the manager.
"We need to cut the deadline in half!"
"We can't, if we want n features we need y time"
"Can we cut it by 25%?"
The manager quit not long after, had a potentially good hardware startup that failed due to problems outside his control. Don't know what he's doing now, but I'm sure the startup life is better for him than enterprise.
One nit I'd pick with it though is that many large and bureaucratic companies won't appreciate an engineer who decides it on them to fix hiring, culture, product marketing fit and marketing. If you find yourself in this position, it's time to move on to somewhere else that will. Typically, those companies are startups.
A large majority of these interviews are also testing for non-technical skills too - like communication, patience, humility, and thought process.
Don't stress out too much about interviews, they're something like 30% technical, 30% non-technical, and 40% luck.
Much in the same way that somebody founding a startup can be "engineer" or "CTO" or "Software king Ninja Level 7 dan grandmaster." Titles will never be objectively consistent, this is why the whole industry is now discussing consistent interviews instead hiring based on titles on resumes.