Hacker News new | ask | show | jobs
by 000ooo000 674 days ago
I hope one day we all can realise that all of the pontification about the defining qualities of a 'senior' engineer, or the height at which the bar should be set, whether the bar has slowly been lowered over time, etc is all pointless. Senior or not senior is a lens useful only to HR and insecure engineers.
5 comments

It links to a similar problem of measuring engineering productivity, which the industry cannot do.

Notch wrote Minecraft when he was around 30. He didn't have 15 years experience in professional engineering and it seems to me he mostly just mucked around writing games in his professional life. He's now recognised as creating more than a billion dollars in value.

Is a "senior" engineer doing better than that at creating software? Did he ever make senior? Does he exhibit all the traits of a senior engineer in the article like not having an ego? This is a profound challenge to the entire industry. The title really is just for HR, a developed ability to choose what projects should be worked on is much more important and there is a big gap between a Senior Software Engineer and someone who actually writes great software.

On the flip side, the code that he originally wrote would never scale to a billion dollars. It was wildly inefficient. Someone with a bit more experience as a game developer, someone a bit senior if you will, was necessary to turn the idea into what it is today.
> It was wildly inefficient.

Spoiler: Minecraft Java Edition is still wildly inefficient despite having a trillion dollar company backing it for 10 years.

Wildly? I'm sure the code might be inefficient in many ways, but there have (as I understand) been performance improvements such as in chunk loading and map generation.

Even the latest (apparently controversial) recent redstone update is meant to take account of performance - https://www.minecraft.net/en-us/article/minecraft-snapshot-2...

"The performance impact of Redstone wire (connected blocks of Redstone Dust) has been improved"

I've no idea how true that statement is, of course!

> performance improvements such as in chunk loading and map generation

True but the general game loop is still (wildly) inefficient; hence the multitude of performance mods (Sodium, Lithium, FerriteCore, ImmediatelyFast, etc.) that are considered basic mods for anyone wanting to play the game without dipping down to tragic fps.

All of that functionality could (and should!) have been folded into the Minecraft source years ago. But Microsoft didn't buy Minecraft to give people a good experience - they bought it because it generates a non-trivial amount of money from things like Bedrock IAPs, merch licensing, etc. Updating the games is just a necessary evil that keeps the money flowing.

(Bedrock, on the other hand, is much more optimised because, IIRC, the core game was written in C++ targeting mobile devices and needed to be efficient to even work.)

Who? They only did have a handful of people when they sold for $1 billion. Were any senior devs?
I think it would be fair to call Jens the Principal Engineer on Minecraft. Is that senior enough?
I generally agree, but I think it's more subtle than that. Levels and titles aren't really about productivity per se either, they're about defining role expectations and conferring authority to ICs in a corporate environment where there are hundreds or thousands of developers, and they are inextricably linked to the communication needs that dominate productivity in large organizations. They often don't even map between departments, let alone different companies, and especially at smaller companies that don't have the headcount for any meaningful calibration to exist.

From that lens, Notch's "level" when he created Minecraft is pretty much undefined. He obviously had technical and entrepreneurial skill, which gave him huge credibility, and is a fast-track to a certain title / level at acquisition time, but that says very little about his ability to meet the expectations of a Microsoft engineer that worked their way up to that level through promotions.

When I ran bigger companies in the past, I gravitated towards defining whether someone is entry level, junior, mid level or senior _entirely_ based on experience measured in time. And their salary was a function in which that was the primary factor.

The problem with any internal definition of "senior" is that it's misaligned with the market. If you pay someone less than their market value, they're likely to leave for a place that appreciates them more. If you pay someone above their market value, you're basically putting golden hand cuffs on them. I'm not saying I never did those things, but I did have almost exclusively bad experiences with both of these situations. And I've hired something like 200 developers in my CTO roles.

If I have a senior whose salary I'm reluctant to raise, I wonder about three things: Do they actually have enough experience to be in that bracket? Is that person perhaps just not a good fit for what we need? Do I perhaps have too high expectations in seniors that made me inflate their salaries?

If I have a junior whose salary I want to raise, I think about similar questions, but I also wonder if that person perhaps went above and beyond and a bonus is more fitting than a permanent raise.

Sounds a bit cold and rigid, and of course there's exceptions to any rule, but this guiding principle has served me best over the years.

Creating my own, literally made up and company specific, job description for a senior has pretty universally back fired. My company isn't a special snowflake that gets to invent their own job market. It's much more reasonable to connect to the actual job market.

As for titles, I usually didn't put "junior" or "senior" in them at all as far as I could get away with it. For the most part, my seniors were fine, many even happy, with this.

> Is that person perhaps just not a good fit for what we need?

That's The Critical question. That is: the situation needs X (read: combo of hard tech skills and soft skills). Can they deliver X and then some?

If not, there's three choices:

1) Develop them to fill their deficiencies, if they're interested.

2) Communicate with them that the biz has evolved and the fit is a misfit. This happens with founders who evolve into CEOs and don't have the chops for that role. It happens.

3) Do nothing.

Note: A seasoned employee will always be asking the same questions. That is: is this the place for me. Should I stay or go?

Great leaders and managers are aware of the mutualness of the relationship and approach it from that pov

Absolutely! But I also see a fourth option: Just make an exception. Just because you make exceptions doesn't mean your system sucks. If you make exceptions most of the time, it probably does, but I had to make them rarely.

It doesn't sound like good management, and perhaps it isn't, but I did have people that didn't entirely meet my expectations stay, without gratuitous raises of course. I'd be open about this with them: "I think it'd make sense for both of us if you worked elsewhere, and I can help you figure out where that could be and how to get there. But I'm also gonna offer you a path here if you want it."

Sometimes that turned out to not be a good decision. Sometimes it was. But I felt it was a humane solution to the problem, that exceptional situation. No manager is all-knowing enough to understand to 100% what value they're getting out of each individual employee, so it's not the most illogical thing to involve them in that decision. But more than anything, I'm not a fan of changing a system that works for the general cases to deal with rare and varied edge cases. That's premature generalisation, and I think both in software and in organisations, that is the root of all evil.

Great point. Come to think of it, it always bothers me when an outfit is very particular about hard skills set.

Do they not want ppl able and ready to learn? Does the market not change? Is the dynamics of the org that ridgid?

Sometimes ya just gotta go with what ya got (and toss in some individual and team development). It will never ever be perfect.

Some people never reach Senior level, both on skill level and impact. Judging someone level purely on time is a sure way to promote incompetent and lose talent that is developing faster than average. Organization promoting mediocrity, where people are awarded with random bonuses instead of opportunities.

How can you expect anything substantial from senior developers if you promoted them purely on experience measured in time?. How anybody would be motived if they can just wait for promotion? How can hire people on senior positions if you do not have internal metrics for these positions? How can you get rid of underperformers?

Exceptions exist. Sometimes I might want to hire someone with a lot of experience who doesn't provide value relative to that, I can still do it, but be very transparent about that with them. Experience in itself is valuable regardless of whether or not I can find a little system that quantifies that for me. And another important question is: Should seniors really earn that much more than juniors? Those are the kind of questions I ask myself before making exceptions.

If you have someone very experienced with a high market value who doesn't really pay off in terms of what value you can extract from them, it can make sense to look into an exit - or an exception.

With the amount of people I managed in the past, I rarely had to make exceptions. Your mileage may absolutely vary though, and there's certainly no one-size-fits-all solution. Management is hard, easy solutions and "best" practices rarely exist.

> Exceptions exist. Sometimes I might want to hire someone with a lot of experience who doesn't provide value relative to that, I can still do it, but be very transparent about that with them. Experience in itself is valuable regardless of whether or not I can find a little system that quantifies that for me. And another important question is: Should seniors really earn that much more than juniors? Those are the kind of questions I ask myself before making exceptions.

Seniors can do things that are hard or impossible for juniors. A good senior developer can bootstrap a project to MVP, establish best practices, onboard and mentor juniors/mid, communicate effectively with stockholders. Senior can manage technical debt and help with estimation and roadmap. Even on purely technical output, they can be few times more efficient than juniors. Many people will fail to learn these skills even after many years working as developers. Experience is important, but overall it is a smaller part of the overall skill set of a developer. I know plenty of people of 10+ years of experience that are just mid level developers and will stay this way.

> If you have someone very experienced with a high market value who doesn't really pay off in terms of what value you can extract from them, it can make sense to look into an exit - or an exception.

If you do not have metrics other than experience, then how you can know what value to expect? I get the feeling that you hired senior developers and then put them into mid/junior level roles and responsibilities. Value that you get from senior developers depends on opportunities that you give them.

> With the amount of people I managed in the past, I rarely had to make exceptions. Your mileage may absolutely vary though, and there's certainly no one-size-fits-all solution. Management is hard, easy solutions and "best" practices rarely exist.

That there reason why software in Europe losing to US. You decided on an easy solution to measure developers by experience in years instead of actual output. You want to extract value instead of create a value. Furthermore, you also do not want to pay senior developers because you do not understand the unique value that they can bring to the table.

> As for titles, I usually didn't put "junior" or "senior" in them at all as far as I could get away with it

So instead of golden handcuffs, you apply lead handcuffs, forcing them to lie in their resume if ever they have to apply elsewhere after the day they age out of the slim age bracket in which they would be accepted at anything below senior?

I generally didn't pay pay seniors all _that_ much more than the juniors. And I happily hired people >60 in the past. It's not linear, it someone has 10 years, 20 years or 50 years experience, they're in the same senior range. Depending on how much they can bring to the table, I can increase their salary within that range, not purely based on age. Experience in years just tells me what range to put them in, not where in the range. I fear I haven't made that clear at all in my parent post, sorry about that.
The way tech worker ageism works is that many employers would never consider offering someone with a few years of experience (even if it's just life experience) little money. It's either a generous offer of the full package or a pass. And if previous employers skipped on the titles game ("my job description said 'programmer'"), the chance for anything other than "pass" is miniscule at employers who take titles as a given (and where people could not possibly imagine a world without).

That's what i meant: the titles don't have to mean anything in your company, but if you don't hand them out, even if only as a meaningless formality without any consequence, you're making life unnecessarily hard for employees when they need to look elsewhere. That's why i called it lead handcuffs: it makes leaving more difficult. And i don't get the impression that it's an intentional strategy ("yay, less fluctuation! Let's call them all junior janitors!"), that's why i was pointing out this aspect of "no junior or senior".

> the slim age bracket in which they would be accepted at anything below senior

What is that age bracket, in your opinion?

Right, we should use the old apprentice, journeyman, master from the crafts.

When a master says you're ready to independently take on customers and have what it takes to satisfy their needs you become a journeyman, and when you've practiced long enough to have pushed the boundaries of the craft and reliably do things that masters can learn from, then they might count you among themselves.

Agree. I've only recently received a title with proper seniority. People have been looking to me for leadership/guidance for longer.

A 'sufficiently capable' junior can run the show for a bit. I've been them, for better or worse. I'm great at the technical side but admittedly terrible at the 'softer' people aspect.

Multitudes, yo. Thanks to a lot of incident management experience, I'm the Dictator you want when the sky is falling. However, I'm absolutely best ignored when it comes to politics or making plans months out. My bias here is more apparent than normal, stability.

Titles are made up, just like the rest. Trying to apply these too much is suspect

You'd be surprised at how it's a great developer of latent narcissistic behavior. I know a couple of solid developers who immediate turned into outright jerks on promotion to senior.
> I know a couple of solid developers who immediate turned into outright jerks on promotion to senior.

I know a guy who became significantly more short-fused and less friendly when he was promoted into management. I don't think he liked management work, particularly when it involved both that and fulfilling outstanding responsibilities as an IC because he was the sole SME for a variety of different products/systems we had. There were many sad-sounding conversations with his then-girlfriend well after close of business.

Point being, sometimes people who turn into jerks when promoted are not necessarily narcissists, they just have a shitton more work to deal with now and/or are out of their element and/or can't get home to spend enough time with their SO/kids/pets to fully psychologically reset at the end of the day. I don't know how that description tracks with the devs you knew, though.

Yes, exactly! Thank you for posting. I tried to get at this in my [now-deleted] peer post... but failed to be nearly as effective. Was a shameful wall of text.

Seniors are juniors with a label and expectations applied. It's incredibly subjective of course. To your point, I find the conventional expectations of 'Senior' too high.

I have spent decades perfecting my technical skill. Literally since childhood. My personal skills have suffered, neither I or you want me to be a talking head.

The story of the Junior who doesn't get enough help is a bit self-fulfilling/lacking in context. How much has been given/stuck/to who? Hearing 'not enough' can either raise someone to the challenge, or create resentment.

A bit of closing irony. I was fine with providing on-site training as a Senior until RTO was ham-fisted so poorly... that I found an even more illustrious 'Principal' title, and expectations, elsewhere.