Hacker News new | ask | show | jobs
by fhd2 672 days ago
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.

3 comments

> 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?