This is wrong wrong wrong. Here's why most developers keep quitting: it's because for them the grass really is always greener on the other side. Usually by about 20%.
I can only assume that right now the best developers are vastly underpaid relative to their worth. Why? Because it turns out every time they get annoyed with their current company they can send out some feelers and get a 20% raise. Most people can't do that. Most teachers can't just quit and get a 20% raise yearly. Do this a few times and ultimately you realize that your intrinsic value didn't really increase 1.2^3 (72%) over the last 3 jobs, it's just that companies were always willing to pay more if they needed to, but (if you were being honest about current salary) only in increments of 20%.
If they were willing to pay more, you were worth it.
There are very very few companies that exist right now that give you crappy work but top notch comp for that work. For those companies, there is not a "huge retention problem", it's just a normal-sized retention problem where in addition to paying their developers based on value they also try to ensure they get to mix things up a bit and enjoy a conference or two.
Most companies don't want to pay for retention. It's pretty sad that most companies can't make staying at their current company more attractive than the risk of starting a new job with a team/company that's unknown.
Most decent companies have two pools of money. One for raises, and one for retention. The key here is, the manager has to really fight for it. If they believe enough in the employee to battle for the retention dollars, I've typically seen it go well.
Here's the key, a lot of managers are too afraid, confrontation averse, or short sighted to make a fight for their employee.
I had a manager who used to tell, he was surprised how timid people at managerial levels act when it comes to fighting for their people.
There are cases where there isn't even a competition for funds. All you need to do is ask for a raise and it passes through without any problems, managers just don't do it because they are too afraid of even making that very request.
I remember the first time I went to my CTO to get a retention raise and, frankly, how easy it was. I think you're right in that there's a decent amount of money left on the table because the managers don't reach for it when they can.
That being said, I've always been able to get _SOME_ money for retention, but I've not always been able to get enough. If they go interview somewhere else and their current salary is $120K, it's entirely conceivable they could be getting an offer of $160 with a bonus structure that's better.
I've even encouraged employees to leave before when it sounded like they were going to get put into a position for growth that we couldn't offer. If they're already feeling stifled or short changed enough to go looking, any move you do to keep them now is just delaying the inevitable. If I let someone leave with a clear conscience, that's someone who could come back to the company even better than they left (it's happened a surprising amount of times in my career). It's also someone who can help me and/or my company in the future, whenever our paths may cross again.
I have followed managers to companies and I've had employees follow me to companies. If you just adhere to the damn golden rule things are a lot easier for everyone involved.
ime, that's driven from the ceo/whoever actually runs eng down. Some places appreciate keeping the engineers who built a system around; other places prefer to pay more to hire new people and then have them spend 6 months getting up to speed. Those costs are invisible in the budget though; they just manifest as slower output.
I think this is inertia from the housing bubble in 2008. After that, companies didn't have a retention problem with employees because everyone was terrified of not having a job for even a brief time. But since then, the economy has recovered (at least for this fairly high class) and also the ACA means that (at least for now...) you aren't as dependent on your job as you used to be. So you can afford to look around, and all the employers have the money to pay you what you are worth. They just don't remember that they have to do it to their existing employees too. They have forgotten to pay for retention, and I suspect that barring a new crisis (which I admit is more likely now) employers will start to realize again that retention is cheaper than searching for and training new employees
I'll venture to say this: Not every project knows how to produce long term value, and not every shop is a good long term steward of value. This is a big factor in retention, in part because it's correlated with meaningful work.
this is largely my experience, usually I leave because I hear of others at my "level" that are earning more and I start to believe that the company I am at has fallen behind, then I ask for a raise, they don't give it to me and I leave for more money. rinse, repeat. I am underpaid at the moment but what's keeping me around is I get to do what I want and there is not the pressure I had elsewhere.
I have a theory that most people in the US are overpaid. However the overpayment is a strategy by management so that they themselves can be even more overpaid. This can be afforded because the overpaid people are locked into middle class life scripts driving up cost of living (houses) so that they are still reliant on the jobs. It's potential "fuck u" money but isn't because of the attractive force of a domain and resistance to change. (ironically the same arguments some techies deride locals for for not moving some place cheaper)
There is excessive profit taking at all levels including the IC level, however market dynamics actually create greater and greater differences in wealth despite the trickle down.
Your theory is not based upon sound economics. If everyone was colluding in the way you describe to pay themselves more, then a situation would emerge where companies that didn't comply with this conspiracy would be significantly more profitable than those that did.
Note that, although managers may wish to throw money around because it's not theirs, shareholders view every penny spent on salaries as an expense that eats into their profits. They have an incentive to insist on lower employee salaries whenever possible, and they're typically the ones who make the rules in most firms.
Also, if situations like that could exist, you wouldn't only see them in the US.
On the contrary, it's mainstream economics that a lot of internal corporate decisions are made for the welfare of employees/managers rather than shareholders.
Sure, that's an example of principal/agent problems. Those happen all the time and are very real.
But to claim that, there would be a vast conspiracy tobtake all of that money on a wide enough scale to make everyone in the USA overpaid is where the thing breaks down.
pay is a big one, another big one is rapport with coworkers. if someone likes going to work every day talking / interacting with their fellow employees, then its a lot harder to leave
Yep exactly this, the job I had a few years ago wasn't the best pay (or work) but I stayed because the guys I worked with were awesome to chat with. Slowly, one by one they all left (for better pay/location), leaving only the lazy, soon after I left too. We often complained about the people doing bad work, but nothing much was ever done. Have yet to come across a similar workplace :(
None of these 4 reasons (TD;LR: you waited until the exit interview, you assume mentors want to manage, you assume the natural ascension of developers is management and not higher-level IC roles, you aren't supporting them and their career) are why they quit.
People quit because the modern, zero-loyalty, everyone-for-hire company does not provide a long term strategy for providing intrinsic motivation (autonomy, mastery, purpose); they don't want to pay for retention and therefore don't provide perks for retention.
Until this changes, it should never surprise a manager why churn is high and average tenure is less than 2 years. If you are a manager (especially middle management - meaning you don't have the scope to make massive, company-wide cultural changes), it's best to look at your directs as someone to help them advance for their next job. I know that sounds counterintuitive, but if you lead with transparency on the landscape, you build authenticity and trust with your directs, which will go much further for your relationship while you are working together.
People quit because the modern, zero-loyalty, everyone-for-hire company does not provide a long term strategy for providing intrinsic motivation (autonomy, mastery, purpose)
Rands refers to this as your "shields down" moment.
That was an interesting article, but I really didn't like the phrase 'shields down'. It sort of implies that the default state, that you should protect, is keeping your current job.
I think the default state should be you being happy, fullfilled and well compensated in your job. And if you take a better offer somewhere else, it's not because you 'dropped your shield', it's because you're looking out for your own interests.
For anyone who hasn't read Rands, he's got a bunch of these and they're largely pretty fantastic.
Managing Humans / Being Geek are also great books if you like this type of writing. I've shared them with lots of new managers/engineers and they've always been well received.
It's like the idea of being mercenary is inconceivable. I'm loyal to whoever has the best deal. If my friend invites me to coffee to talk over a better deal than the one I have, I'll take it.
I hate this approach to management. Why should I be "shielded" from a better opportunity? That only protects my manager, and gives me no valuable protection.
Translation: "I didn't read the link, here's a non sequitur."
The "shield" is just your day-to-day (sometimes minute-to-minute) SELF-evaluation of your current job satisfaction and willingness to leave. It has nothing to do with you being shielded from anything by anyone else.
I did, in fact, read the link, and I'm reacting to the condescending language used throughout. The unspoken attitude in the article is that the employee is a dirty traitor and a fool for wanting to move on. 'Shields down' is a telling choice of words because the manager feels that the employee is protected by being his. It's a patronizing, parental sort of attitude towards employees that irks me to no end.
To pull another quote:
"If I’m sitting here talking with you it means two things: I don’t want you to leave and, to the best of my knowledge, you didn’t want to leave either but here you are leaving."
Here he's either assuming he can read the minds of his employees, or that his employees should share every dissatisfaction and stray thought with him. Hyperbole, perhaps, but not by much. I don't want a nosy dad for a boss.
I agree that the author is condescending. Also, despite writing a lot on the subject, he doesn't actually seem to be a good manager. Very authoritarian.
Calling this mode "shields up" implicitly means that it's something good for you, protecting you - but it's not quite so, this "shield" is protecting the company/manager instead of you. The exact same thing might be called not "shields up" but "complacent mode" or "ignoring opportunity" for the opposite implied evaluation.
> it's best to look at your directs as someone to help them advance for their next job.
I'm happy to say this is my manager's position. I joined this team nearly 2 years ago mainly on the strength of a great discussion with him during the interview process, and our team is clearly excellent thanks to him, with significant investment in growth, responsibility and empowerment (I know they're buzzwords but ick, I don't know how better to say it).
(Just want to stem the tide of inevitable gripes that are going to show up)
I feel this way about my boss, I have stayed a long time after it does not make financial sense because she
A) takes my ideas seriously even if she doesn't see the end game. Just says go for it and see what happens.
B) comes up with trainings and stuff that match my role that she can send me on.
C) holds me to a high standard without being a jerk about it.
I will be bummed to leave and stop learning from this person's example. I'm taking a hit financially but I've come a really long way. So I'm being reaaaal slow in the job hunt. I know when I'm in a good work environment, and I might not find that. At the next job.
As a manager myself, I will go out of my way to retain a good employee. Our wages are low (nonprofit) but we can be very flexible to the needs of an employee. Diligent, dedicated people who care about doing a good job are worth their weight in gold.
So... Why not find your boss her next job, and follow her there? Not suggesting something Machiavellian or that you have direct ability to do so, but if you think she's awesome you should be interested in her advancement. Put her name out there a little in places you respect. You never know what will happen.
This is a great idea. Although, if I was staying in the nonprofit social work sector I would probably not even leave this company (I consider it to be a really high quality provider in its area). Unfortunately, like a lot of people, I'm being pulled towards web development. Partly by the large income difference, but more because I find I feel really at home in that world and I am hooked by the work. I'm getting to grow my programming skills at this company by solving little problems and writing useful tools. Similarly at my other job, I'm taking over the website. However, eventually, it would be nice to have only one job, and for it to be full time development. I'd bring my boss if I could!
People quit because the modern, zero-loyalty, everyone-for-hire company does not provide a long term strategy for providing intrinsic motivation (autonomy, mastery, purpose); they don't want to pay for retention and therefore don't provide perks for retention.
The culture around ROI is a massive factor. Too short? Too long? It has to be balanced.
Another belief I hold: most people want to be told what to do.. to a certain degree. That's the trick.
The political way of phrasing this is that leadership also has to be balanced. Too much results in predictability and people getting bored. Too little results in people feeling lost.
I've quit several jobs because of the first reason. I've avoided quitting jobs for the second reason because I've been lucky enough that my "I do not want to manage" stance has been accepted.
Also - let the developers choose the work. We have a big todo list on the wall, and when a developer needs work, they can choose from the list.
If a developer comes to me with a new idea, and it sounds viable, then I give them a bonus based on how well it executes. Everyone is incentivised and motivated to come up with new exciting projects.
Smart developers want to create, so set them free! Autonomy, mastery, purpose = productive and happy
This is much better advice than the whole article.
The article seems to be conveying vaguely that developers want advancement, interesting problems, etc. The problem with this phrasing is that it makes a manager think about placation strategies.
The root cause of the above is just poor tasking. If a senior developer says things need attention and keeps getting ignored, then how senior is the developer, really?
The advancement, engagement, product ownership, etc. all grow from a culture where strategic technical priorities aren't ultimately valued.
This looks like boredom or angst about "career progression" but you don't solve the problem by adding whiz-bang tech (gratuitous ML) or meaningless job titles.
I work at a company where developers choose the work. It's complete pandemonium. Nobody is listening to the product managers, the technical leads are doing customer interviews, the incompetent senior engineers have created a terrible mess for everyone else to deal with (and then moved on to new projects to create another terrible mess). The biggest issue is that engineers, especially ICs, absolutely are not giving a shit about anything except their own work, AND they are the only ones with any modicum of authority.
The people with any standards at all only stay ~2 years or less at a place like this.
> I work at a company where developers choose the work.
I meant that as part of professional development, technical leaders should have increasing say over the tasking of themselves and the team they're helping lead. There's lots of room to innovate and experiment on exactly how that works.
I'm thinking on the level of:
- If we haven't deprecated these old machines in 18 months, we're wasting piles of money
- This legacy code is too complex, but it will take some time to remove, so we need to start now
- Given the revenue numbers and the amount of maintenance effort we put into it, this part of the system and these features need to be removed. Let's split off a scrum of three for about a month to do it.
"Let the devs choose the work" would seem to naturally imply that they must also complete and maintain their work. That would curb the tendencies you describe.
Enthusiastic(and authentic) recognition. Everyone knows those tasks suck but you can still use it as an opportunity to re-enforce how critical they can be and give a big kudos for whoever rolled up their sleeves and dived in.
Another nice upside of this approach is it helps re-enforce a culture of doing the right thing because we ship and don't just write code.
I think group recognition works excellently. Especially in terms of ensuring folks who didn't choose the ugly tasks recognize that they won't have to do them now thanks to John / Jane.
Many people, especially developers, specifically hate group recognition. People who like group recognition are the easiest to support (if they’re actually good), but sadly, these folks are the least likely to actually enjoy maintenance work; enjoying group approval correlates with a desire to work on the Big Cool Sexy New, which maintenance work decidedly is not.
You have to know your people, and give them support that motivates them. But that takes (gasp!) good managers.
I'm curious, how do you get from people who enjoy group recognition are the least likely to enjoy maintenance work?
My gut is that it goes the other way around. People who desire to work on the Big Cool Sexy New are often less motivated by peers, and more by personal drive, as by definition most of their peers won't know what the hell BCSN even is. Unless the person in question is working in a 100% BCSN shop, in which case there's likely to be fewer maintenance tasks in the first place as the codebase will be fresher.
If a project is "important" then it should have business value.
For some developers (including me), working on projects with significant business value is the definition of glamorous. Since there's significant business value, then you should be rewarding people for delivering that value (with bonuses and raises).
If the task does not have significant business value, it's probably not actually important. A lot of maintenance tasks actually fall in this bucket.
I want to work on what's most important for the business and our users. Having engineers pick whatever they find fun to work on sounds broken, but I'm also interested in if and how that can be made to work.
Bonuses. Whoever works on this pile get's an extra $5000 at the end of every quarter. You only have to work on this pile for 6 months unless you volunteer for more.
Companies tend to try everything except the obvious: more money.
Stuck on patching up legacy software right now, project has been dragging for four months already and the next years worth of projects in the pipeline are all just as shitty. Definitely enough to make me bored, definitely enough to make me buff up my resume in case any offers come along... even $5000 would go a long way in making me feel like what I'm doing isn't such an endless slog.
Same for the last few jobs but I'm contracting which takes the sting out of it somewhat. I've still had to bail early a couple of times because it was such a Sisyphean grind that the money wasn't worth the toll on my mental health.
People all have different values. There's work others don't find interesting that I can be happy doing. What I need is freedom, not just for technical choices but also for process.
You assign it. Everyone knows that there's going to be some of that; that's why it's called "work". But you have to make sure to spread it around as best you can, so that one person isn't constantly being bombarded with the crappy tasks. Maybe after they're done, give them first choice of other tasks.
Indeed. There someone that is perceived worse than being assigned menial/boring work: when your manager doesn't even want to assign it, fearing losing "cool points".
My opinion after years of work is quite simple. I am disappointed by the way software is developed and by the people who contribute to it (leaders managers and anyone involved). When I was a teenager and I was eager to learn computer science and one day to work for a "cool" company doing good stuff I didn't focus on the "human" side of it. Big mistake. I should have already known that working with computers doesn't actually mean working with computers only. It involves 70% of human interactions and somewhat 30% of development. Which would be fine, if teams were always on the same wave. However group dynamics play an essential role here. Then there is the thing about the company's structure. Some are more or less hierarchical. However not everyone allows you to implement some ideas, as they don't fit the business. Then there are people who are simply not capable of managing, and I have to say that a lot boils down to this, not because it's easy to blame the management when you are at a bottom layer, but because it's difficult to be a good one - a manager.
Lying, witholding information, lack of communication, faking the cool manager just to show the atmosphere is open etc., how many should I still count?
So, the role of sw dev has to deal not only with the fact that it's not anymore about writing algorithms/data structure/rewriting the OS from scratch (which are super cool things to do), but ... also to deal with some incompetent people who under normal circumstances would not do certain things, but in the real world they are pushed from all sides and therefore behave quite bad. This is the reality I have seen so far, just because people don't take their own role seriously, tend to delegate as much as they can, etc. A lot like politics where nobody is really to blame, which creates a lot of frustration and people change "flags" quickly.
In my experience while a developer will say it's not about the money, if the gap is big enough it is disrespectful to the developer and they will (easily) find employment elsewhere.
Often time's it's not actually about the money. But the low pay (relatively) is a signal to the developer of how much / little you value them.
This is, historically, where I was at. Consistently delivering high-quality stuff that makes my fellow devs able to do their jobs faster and better, and while in the top quartile of salaries, it wasn't remotely reflective of the value being generated. That's why I went into consulting in the first place.
Running your own (successful) business is always going to net you more money than being salaried. It's the payoff for taking the risk. A company pays a salary based on how hard it is to replace you, not your value generation, whereas your own company nets you $all_the_things.
> In my experience while a developer will say it's not about the money
The people that say this simply rationalize it differently than people willing to say it is about the money. (but yes, there is a group where it really isn't about money)
There is a large segment of the population that feels a stigma for admitting monetary motivation, so if its not "ALL" about the money, where all possible factors are money, they will say it isn't.
People that don't feel a stigma around admitting monetary motivation will reveal that money is a factor if it is at least 1 of the factors. It will be misinterpreted by the other population as being only about the money, whether it is or isn't.
It is just a form of conditioning that will distort any survey for now.
Money is always a factor, but just like the other factors the amount matters. I’ve taken a little less money before because I liked the job and had control. I also believed it would work out in the end and it did.
I happily admitted if someone offered me %30+ more money I would think hard about leaving. I remember telling my boss that exact thing at the time and he understood. The honesty is one of the reasons I enjoyed the job.
To be honest (at least in my experience) if you are really worth $X as a developer, you can generally get your current employer to give you $X if you are proactive about it.
Quitting generally has more to do with:
A) "You (the employer) Waited Until The Exit Interview To Ask What’s Wrong"
B) "You (the employee) Waited Until The Exit Interview To Convey What's Wrong"
Leaving my last job, I told them what I wanted 1-2 years before I actually left (for more money, but that wasn't the primary cause). The CEO basically told me in the exit interview if it was about money, he'd give me another 30% to get me to stay (and they had countered with that before, back when I told them what I needed to stay long term).
Money isn't necessarily the cause. Its the lack of willingness to communicate and meet the other person's needs.
Some companies have a hard limit on developer salaries. Many will never pay a developer over $200k, even if the developer is that good.
This can come from two reasons:
1. The company doesn't have sufficiently valuable projects to capture the developer's potential. There are a lot of companies which simply don't need very senior developers and hence cannot match the price for a senior developer on the open market.
2. The company perceives developers as second-class relative to management or their core business leaders. Thus, they can never have developers paid more than those core people.
These companies see a very consistent talent pool of mediocre developers (who have been mediocre for a long time) and junior developers who come in and leave after 1-2 years once they realize they can get more elsewhere.
There is no real reason to pay developers (or anyone really) over $200k to be perfectly honest. At $200k/year, if you are valuing money over intangibles you are making terrible life choices imho.
I dunno. I work for a company based in the UK, which seems to have much lower pay than the US. I am paid the same as other senior developers at the company, yet my salary by comparison to US standards is quite low ($70k and no benefits since I'm technically a contractor). Otherwise the company is really amazing, so I'm torn.
If you are actually in the UK, you have some amazing benefits that US-based folks don't get in the form of healthcare. I know, yes, technically, you're paying for it in taxes, but it's there for you all the time, regardless of your employment status or ability to pay for an insurance policy.
The healthcare that comes with any good developer job is the same healthcare that management thinks is good enough for their employees. It is rarely the case that it is good by objective standards.
You don't have to preach that to me (I agree), but it does mean that you shouldn't really consider universal healthcare to be an additional benefit when comparing UK & US developers. The US developer also has healthcare not factored into their salary.
Contractors don't get those. In theory they get paid higher as compensation for not getting them, in practice they generally get the same money with less benefits.
Do you work in London or Cambridge? If so, that's a pretty low salary for a senior developer. In my experience that's mid level range, you're looking at more 70+k ($90k) for senior. That's excluding finance of course, where salaries are astronomical.
Stop comparing your salary to the US and start comparing it to India. You can be certain that's what your employer is comparing it to. And as soon as they can get the the same quality of work out of India you'll get the boot.
> How would that work? For the company to make a profit, employees by definition have to produce more value than they consume.
Most people aren't primarily motivated by money once they are making a full salary as a developer.
PTO, Work/Life Balance, and Geography are more relevant to my life choices than how much I'm paid (to a point, certain areas I've noticed don't pay enough).
A shame too because money can be one of the most powerful factors for retention. Someone who enjoys a company could still simply leave due to better prospects elsewhere.
"Jason Cole: “If you have someone saying, ‘I’m bored’ and you don’t do something about it, expect them to leave for a place where they won’t be bored.”"
Ah, if it were only that easy. You fight your way through a half-dozen interviews, get an offer, negotiate until you just want to lay down and die, make it through the six-month ramp-up for the new environment, and then you're bored again. Lather, rinse, repeat, until you realize that laying on the sofa in your underoos is more satisfying than the bestest employer.
Exact position I'm in right now. I've conveyed this to my boss, starting a year ago, but I think he realized that we just don't have anything challenging to work on.
I've been doing this for almost 15 years now, so I've switched jobs enough to know that it's not always, but there's enough indicators out there and reasons for it to be. Both positions I'm interviewing for also move me into the field I want to be in.
A few other reasons (all that I've seen in some form in the real world):
* Insufficient raises. This is by far the most common reason, but it's been discussed in this thread well already so there's no need for me to dive into details here.
* Over-rewarding of managers and under-rewarding of developers. Very rarely are the management tracks and technical tracks actually equivalent. For instance, managers are granted extra power in the organization and can often grant themselves special perks like private offices.
* In the same vein, under-investing in developer workspaces. Toss me at random into a chaotic open floorplan and you're going to get very little loyalty from me. Show me that you care and are willing to do the best you can to provide me with a productive workspace and I might think twice about leaving, because I don't want to give up an employer who cares for another who'll just toss me into another open playpen.
* Shoehorning someone into a single role or project for years on end. Almost nobody wants to work on the exact same thing for more than a few years unless it's genuinely super interesting. And your projects are probably not super interesting.
> Almost nobody wants to work on the exact same thing for more than a few years unless it's genuinely super interesting
That's a really, really tough problem actually. Businesses naturally want people to work on things that they are already very good at, to keep productivity high.
This is especially important in software consulting houses that churn out apps and whatnot without their own products, because their whole business scales only by the factor between the hourly price customers will pay for their work and the salary the developers are getting for that said work.
Which is not to say that I wouldn't agree with your point. It's just that I can also see how painfully expensive not going that route could (i.e. shoehorning) become for such a company, so I'm kind of sympathetic to their apparent reasoning behind it.
I agree with you, but at some point you're going to have turnover if you don't provide employees with internal flexibility and mobility. That means you're doing to be dealing with the painful process of retraining new folks for static roles either way. My viewpoint is that, if you're going to go through that process anyway, you might as well try to retain your proven talent at the same time.
I did put it on the bottom of my list though because I think lots of folks will actually tolerate being shoehorned if the employer doesn't make any of the other mistakes listed.
What do hyper-productive teams look like these days? I've always been part of small teams, with only a few true workhorses, joined by other filler bodies. Productivity was mostly a mystery to management.
I do not understand team sizes of 50+ for some web app product. The formula only requires a few (3) workhorses that make up a collaboration of skills in product design and engineering, and finding ways to keep them curious. Add a junior position if a workhorse is keen on mentorship.
It is the same formula... they just have a lot more filler bodies. These large team sizes are at companies that decided to fix the issue of finding good people by throwing money at the problem. If you hire enough people you're bound to get a few competent ones.
For an average investor a "1000-employee company" sounds much more impressive than "10-employee company", even if the revenue is the same and the rest 990 folks are browsing catgifs most of the time. Kinda like hiring film extras.
My view is that team size should scale with the number of parallelizable features your company wants you to do. If you come to me with one or two at a time, I'm going to want a team of 4, maybe 5 max, people - I don't want more than 3 people swarming on many features, the communication and coordination overhead becomes increasingly high. But if you can give me three to five distinctive things to work on (even if they're in the same codebase) I can find informal "subteams" (with allocation changing as the features change) within the team to own those different areas, and scale up to double digits or more, as they only have to coordinate with the other features at the edges.
But you still gotta pay off your tech debt or it all goes to hell quickly and then you're hiring like mad because changing anything is a herculean task and management is like "just hire more people and get it done faster!"
Technical interview is a good place to start gathering intel. Flip it and ask them out about stuff you know. Are they curious, are they knowledgeable. Curiosity is usually a great indicator.
Employers have the same concerns for their potential hires, that's why there are interview processes after all. Leverage these interviews to ask the right questions.
They may get surprised when you turn the table around, just remind them that interviews go both ways.
You can't know that reliably, but the recruitment process typically involves meeting the team you are being considered for, which is at least something. You do however have excellent intel on your current situation, telling you it's time to move on.
Perhaps I should re-phrase it to "most knowledgable person in the room", since there will always be a lot of new things to learn when switching jobs.
I don't think it's always good to be the smartest in the room. Instead, I'd say you want a job where you're the smartest and a job where you're the dumbest at different points in your career.
That's because while being the dumbest lets you learn from people, it can also breed complacency. You've always got someone better to pass the buck to. You can easily end up relying on better coders to do the hard jobs, and not learn new stuff as a result.
Being the smartest means the buck stops with you. You need to learn anything you don't understand, or the site never gets done at all. It can be a big learning experience in its own way.
So my recommendation would be to have at least one job where you're the dumbest and least one where you're the smartest. They're two different situations experts need to be able to cope with.
This is the reason im in the process of leaving my current job, after 3 years here I find im one of the most experienced in the company with no one to turn to when bad things happen. If I want to learn and grow as a developer I dont want to be the most experienced person in the room
I'm reading this and I just can't help but laugh. Let's say a company decides to do a "stay working here interview" and then the developer points out the things they would like to work on and the ideas they want to develop - things that they are interested in and excited. These ideas and work projects are going to be prevented because the organizational flaws are inherent in the company and pretty much unsolvable... if the company wasn't structurally awful they would have found a way to make the projects happen.
> You Waited Until The Exit Interview To Ask What’s Wrong
For sure that's what's happened with me. We are a small company of ~10 people. We're meant to have a review with the CEO every 3 months, it's been over 6 months since I've had one, despite my constant reminders to the CEO, he keeps fobbing me off.
He's also managed to dodge giving my a payrise, despite having worked in total for 15 months, and still having the same pay that I did when I started as an intern. It took me until about 3 months ago to realise I was getting fucked hard.
Also: not getting timely raises. Sometimes even after asking. I mean seriously, why wouldn't they quit? And rightfully so. If an employer can't be bothered to keep up with compensation for a few years, the developer is actually now making significantly less than in their first year while undoubtedly having much more responsibility. That's essentially a pay cut. So yeah, if you're an employer out there and you think no raise or a 1-2% raise a year will cut it, you deserve to lose your best developers.
Employees should pick a path that makes them happy no matter where they work.
If given grunt work then build an automated tool instead.
Ask your manager to let you work on something super interesting that is related to the company's core business for at least 20% of your time.
Identify your most talented coworkers and make them apart of your social network long term. Usually they end as a VP/CTO/CEO and it is much easier to follow them than to get to the top on your own.
Flat out just ask the VP of whatever group you like lead one day to mentor you.
Keep track of how your company/group might fail and when you're sure it is too late to save it, change to another position that is trending better.
Don't bail until you've gotten everything you can from your current company.
Do your job so you can describe it in your next interview as an example of why they should hire you.
Company is not your mom, it's a agent of a trade on a job market. If it can demand something from you, then you can do the same.
In fact, not only is your job to provide company with a product of your labor, but it also is a job of the management to provide you what you want and need (interesting tasks, a path for long-term development).
Let me repeat again, it's not a privilege to ask for this, they HAVE to do this.
“the number-one reason technical people quit is because they don’t have the option to advance without going into management.” Then it goes on to explain that you should put them into management.
But seriously, open office is the devil incarnate. I don't see how it can foster communication, unless you think communication is to distract some people, so some other people can look like they're doing something.
I quit when I get sick of what ever hierarchy I've been implanted in refuses to flatten after consistent attempts (overt or subvert) by myself to instigate positive change. My life is governed by a set of rules inspired from daoism and taijiquan. First and foremost is "Make good change"(The secret trick is to smile, from you heart). If the authoritarianism is standing in the way of this, it's time to move on.
> My life is governed by a set of rules inspired from daoism and taijiquan. First and foremost is "Make good change"(The secret trick is to smile, from you heart)
Make good change is about making small steps of progress all the time. In the context of my employer, if they are hindering or ignoring my attempts to make the workspace efficent, healthier and more productive then it's time to leave.
I have a hard time taking this reasoning seriously because the most likely rationale behind quick/dirty solutions is that there was a business need (ie: meeting deadline/high quality/low cost, pick two).
Well-designed systems may eventually grow into something monstrously unpleasant, not because it's "fun" to shit all over the pristine design specs but because it's most pragmatic.
Two really obvious reason that never seem to get discussed in articles like this:
1. Usually if you've demonstrated success for two years, you can move upwards more rapidly switching companies (up to a point).
2. You've gotten past your vesting cliff, and - particularly with early stage companies - you want to diversify your ISO holdings in the hope of getting a 100xer.
I'd consider a string of < 1 year positions a red flag when hiring. I think there's an element of courtesy and maturity in staying 2 years unless there are reasonable circumstances why it's not possible. As a hiring manager I want to make sure that my time and effort recruiting are not wasted. Same for training and development of subject matter expertise. Obviously I need to reciprocate in compensation/learning opportunities.
We automatically exclude anyone who has a string of positions they've kept for only a year or less. If someone can't show that they stay at least two years then it's not worth it to us to bother bringing them up to speed on our code base.
As you say, there can be exceptions, but it's generally a big red flag and a sign that someone is overpaid and arrogant to boot.
Also, some companies haven't bought in to the whole "technology" thing just yet. I've left positions solely because I knew that if I stayed there for too long I would be completely out of touch with what the modern world is doing to fulfill their technology needs.
I can't imagine I'd make the same decision had the company's code base not been worthy of consideration for an exhibit in a museum.
I quit mine 120k job because Im not dealing with any disrespect and or unfairness! For 3 months I tried to work out a situation with a co-worker but it was a constant fight with this jerk. Tried to get managements help, but no help or concern was provided.
There's too much opportunity to deal with any B.S. no matter the money you are paying me...ok id deal with some if it paid $250k and the govt took zero.
Why is money not discussed in this article? Yes you need to get raises >>3% to keep the best. You need a fast-lane for talent, in management as well as dev. If you don't have good people stay for a short time to get their next raise elsewhere.
Well, let me first express some surprise that this made the front page, given how shallow this list is and how obnoxious in general fastcompany.com is to browse (let alone that it's garnered 213 points as of this writing!).
Back on point, here are a few other reasons:
- You give them no ownership over what they do, and do not encourage them to show initiative,
- You berate them for operating outside of a narrowly defined range of responsibilities,
- You spoon-feed poorly defined requirements to them,
- You isolate them from the customer and give them only second-hand information,
- You are excessively directive,
- You take a view that is excessively narrowed by an overly limited definition of what is the highest priority,
- You hamper them with bureaucratic processes that make it hard to get anything done,
- You continually break up their day with meetings and other interruptions making it hard to focus,
- Your meetings are undisciplined and run over,
- Your solution to any problem is to book a 60 minute meeting with no notice whatsoever,
- Your teams are too big, turning meetings into a long-winded and exhausting drama with everyone feeling they have to contribute and jockeying for position within some invisible hierarchy,
- You shut peoples' contributions and ideas down,
- When people spot problems there is no time or room in the backlog to fix them,
- Your agile ceremonies are bloated and tiresome, and your stand-ups are long,
- There is a constant need to engage in politics, especially if you want to be promoted or get a pay rise,
- The work is boring,
- It is necessary to build solutions for which other, viable, and considerably better/safer/more secure off the shelf solutions exist because of your aging systems/bad processes/excessive siloing,
- Many stakeholders and departmental siloing leaves developers trapped in the middle battling to reconcile conflicting viewpoints to reach a viable solution,
- Your teams are forced to operate in a way that is largely reactive,
- You manage by mob and/or by flapping and flailing around,
- At every meeting there is AV drama because everyone is using WebEx or some other crappy VOIP solution that leads to 5 - 10 minutes of buggering around for every single meeting,
- Cross-cutting concerns lead to even larger and more unwieldy meetings due to conflicting requirements across departments,
- The general atmosphere is conflict driven rather than cooperative,
- (Some of) your best developers are introverts yet you continually force them to engage in processes and practices that favour extroverts.
- Your office is a noisy and distracting zoo in which it is hard to concentrate.
I could go on (and on) but I'm beginning to depress even myself.
Can we start getting warnings when sites pop up obnoxious ads? We get PDF warnings and that would have been much less irritating than this one which seized my screen and froze my phone.
I thought all developers quit their jobs with the hope that maybe then recruiters would stop sending them unsolicited offers of huge pay increases and unlimited vacation days.
While most of those boil down to the most common reason: Crappy management, I'm not seeing the second most common reason: Crappy pay (which is just another way that Crappy management presents itself).
I don't know if I'm the "best", but I quit when I'm bored. That usually happens every 2.5-3 years. Money bump that comes with the new job is nice to have, but not the main reason why I leave. They offer more, I take it.
I can only assume that right now the best developers are vastly underpaid relative to their worth. Why? Because it turns out every time they get annoyed with their current company they can send out some feelers and get a 20% raise. Most people can't do that. Most teachers can't just quit and get a 20% raise yearly. Do this a few times and ultimately you realize that your intrinsic value didn't really increase 1.2^3 (72%) over the last 3 jobs, it's just that companies were always willing to pay more if they needed to, but (if you were being honest about current salary) only in increments of 20%.
If they were willing to pay more, you were worth it.
There are very very few companies that exist right now that give you crappy work but top notch comp for that work. For those companies, there is not a "huge retention problem", it's just a normal-sized retention problem where in addition to paying their developers based on value they also try to ensure they get to mix things up a bit and enjoy a conference or two.
Most companies don't want to pay for retention. It's pretty sad that most companies can't make staying at their current company more attractive than the risk of starting a new job with a team/company that's unknown.