Lots of good points, but surprisingly little about the elephant in the room: your best people leave because you're not paying them enough.
And you're not paying them enough because you've chosen to adopt a pay structure that, by definition, cannot handle outliers (which are exactly what your best people are).
An excellent programmer can routinely do the work of ten mediocre programmers. Have you ever heard of a pay scale that pays Programmer III ten times as much as Programmer I?
An excellent programmer can save you millions of dollars by increasing revenues, reducing costs, changing the way you do business, or any combination of these. How much of those millions does the programmer get?
An excellent programmer can provide a company significantly more value than his boss and his boss's boss. How much more does he get paid?
An excellent programmer can earn real equity and merit bonuses in enlightened firms. How many companies don't even have this on their HR radar?
An excellent programmer can go out and pound the pavement or join a start-up and earn what he/she is really worth. And until most companies provide that same opportunities, they probably will.
I and a lot of other skilled talent left a company that was paying enough. The main reason that everyone left was the place was a complete head fk. Just as the article stated the incompetent had become entrenched and created bureaucratic process to stifle work. Since they could not do their jobs they created paperwork process, and made that their job while not getting any real work done. I spent two years trying to unwind the place and trying to inspire people to do their job. I got so frustrated that I offered to do other peoples work with my team if they would just stop the bureaucracy and stay out of my way. That just created political opponents who actively tried to set my team up for failure. After two years I realized that no amount of doing a good job was going to fix the issue and left (I was getting squeezed out by politics as well). The worst part is the few great developers who remained because of loyalty to me where summarily dismissed after my departure. They actually fired the best and the brightest for trying to make things better saying that they where playing politics. That experience taught me that if the environment is junk when you walk in, then walk out no amount of money is worth that headache.
I think Bruce Eckel started a blog about these issues because he had seen them so many times. From what I have seen it seems true more or less everywhere. People are territorial and they see everything relatively. So in general its more important to a manager that a talented employee is held back from contributing value than that the employee deliver the value and possibly end up getting paid more than the manager. Then again there are exceptions. You will often hear very successful business people say "Success is about enabling people". I remember reading an article about one entrepreneur years ago saying that if you can get good people then don't be afraid to pay them more than you pay yourself.
But of course the manager is just an employee where the entrepreneur is an owner. Maybe we should just go to a system with only owners and contractors (another kind of owner) and let the enlightened owners and the talented contractors win.
Indeed it's not just about the money, and the quality of the working environment is at least as important. The best companies I've worked at were were bureaucracy was deliberately kept to the absolute minimum level. It's hard to really innovate if you're simultaneously bogged down by process.
An excellent programmer can routinely do the work of ten mediocre programmers
Quit repeating this crap. Quit it. Look at your hands, count the fingers. How many? Ten fingers. Ten fingers is the reason that the number "ten" appears in that sentence and that is it. In fact, an "excellent" programmer can be from anywhere to less valuable to infinitely more valuable than a mediocre programmer. But if the market needs 5 such people and there are 6 available, then the prices will reflect that rather than some cliche that gets endlessly repeated.
can go out and pound the pavement or join a start-up
Thus resolving all of your and the original author's objections. Yep, that's how the market works, that's how it's always worked and always will. There's simply no use expecting every company to magically know the "right" price. There's no such thing, ever.
Actually the number from my old software engineering class is on the order of 36:1 in productivity from the most to least productive members of a team.
"P2. Good programmers are up to 30 times better than mediocre programmers, according to "individual differences" research. Given that their pay is never commensurate, they are the biggest bargains in the software field."
He also has a wonderful published book, "Facts and Fallacies of Software Engineering"
There were a number of problems with the quality of the individual differences research. I would not trust that particular number.
Another frequently cited source that was methodologically much better is the fact that 10 to 1 productivity differences are common even across small groups of programmers. Tom DeMarco and Timothy Lister performed this research and cited it in Peopleware. The two illuminating facts they also discovered at the same time were that the best predictor of programmer performance was the performance of other programmers at the same company, and that much of the productivity difference could be accounted for from differences in environment. (Sufficient office space, quiet office space, low interruption rates, etc.)
I would trust that number a lot more. And I would strongly recommend that anyone who is interested in it read Peopleware to get some ideas about how they can improve productivity.
It's also I think why a lot of programmers are attracted to startups: because it's far more attractive (not to mention the company's and the programmer's interests are more greatly aligned) to be somewhere where you share in the success and aren't simply treated as an irksome cost centre that's hard to apply metrics to.
A programmer with 10 years of experience can be 10x (or more) more productive than a graduate yet they will probably less than twice as much.
Do this exercise: look at how much you earnt 5-10 years ago and now adjust it by inflation into today's terms. In real terms don't be surprised if now you earn little more, the same or even less.
"A programmer with 10 years of experience can be 10x (or more) more productive than a graduate". I couldn't agree more and indeed sometimes it can be up to 100 times. Not necessarily because of their productivity but because of the absolute mess that they don't get you into.
As a member of the class of 2009, I heartily agree. I like to think I'm pretty good, but I've been waiting for this ASP page I just wrote to finish with its DB interactions and load for five minutes. Anyone else would have avoided the need for the optimizations I'm about to go figure out.
Very true, you certainly won't get the big bucks no matter what you do for HR or Facilities.
But you will get paid well for fixing headaches in the back office (referential data, clearing, etc). Perhaps only 5x as much as a mediocre programmer rather than the 10x you'd get in the front office, but it's still a big multiplier. Line work costs banks a lot of money; if you can put 100 humans out of work, they (or someone else) will pay you.
Unless your company will hire only the 10x programmers, though, it kills morale if you're paying some people 10% as much as other people to do similar-looking jobs. An exception is if someone is an acknowledged superstar: nobody will really be upset if Donald Knuth is hired at 10x their salary. But if you're paying two non-famous programmers a 10x difference, and expect them to work together well as a team, problems will likely result.
Many industries pay different salaries to similar-looking jobs without mutinies: sales, traders & investment bankers, management consultants, managers (bonuses), sports & movie & TV stars, etc. Every IT goon on Wall St. gets paid differently for the same job depending on perceived success that year, much more than a 10% difference.
While you have a point there, the article is about employees quiting or leaving the company that you have no control over and that you can only stretch the time retaining them.
It's a good article but something I've been surprised to find out is true since I've spent some time at a very large corporation for the first time is that a place like this has a large contingent of developers that they seem to prefer to not be very good at what they do, there just isn't an interest in 'standards of excellence' or what have you.
It's an economic decision, they just aren't interested in what very talented developers have to offer, except for a very small portion of their business needs. It's essentially factory work. A car manufacturer could pay more for artisans to work the auto assembly line, and it may have some sort of positive effect on the overall elegance of the workmanship, but there's a quality trade off to be made and the vast majority of cars sold aren't a Lotus Esprit nor will they ever be.
I don't justify this way of thinking, to me its the scorched earth of capitalism with very limited consideration of the social, cultural, and environmental implications of placing profit motive on a pedestal of not just utility but also of righteousness, but that's me and that's not 99.999 percent of the employing population. This is not an IT turnover crisis, as much as we can come up with stats and anecdotes, this is a global turnover crisis, and it's because the value sought is not related to, as I said, social, cultural, and environmental balance and success, it's about money. Sorry to be the freak here, but this is the elephant in the room and why is it so hard to acknowledge?
..has a large contingent of developers that they seem to prefer to not be very good at what they do..
I've seen this as an intern and it drives me mad. Whole groups of people just wanting to do the bare minimum and end up being rewarded for it. I have a hard time being around people like this.
It gets even more frustrating when they find out you are more skilled than they are. They won't improve their skills to try and match your ability, they'll just ask you to do it for them every time from now on until you leave. What's even sadder is that your boss will likely condone and encourage this behavior.
What's worse still is that a lot of these people have figured out how to game the system.
At my previous job (big company -- 175,000 people), we had a lot of "senior" staff floating around, and the common thread among them was an inability to learn anything new. They were doing things the same way that they had for years -- and most of the software that they'd had a hand in was very brittle (loads of tightly coupled "components") and inefficient.
Their approach was to do basically nothing until the project went to crunch mode, then bust their butts in Hero (tm) mode, and the management loved it -- especially as the company foolishly brought more and more managers over from amazon, where heroism + round-the-clock babysitting are standard operating procedure.
What are the signs that A) A company has this problem B) A company is good.
I know of a few good examples such as GOOG, MSFT(depending), Netflix, some startups etc but I know the Midwest(my location) is chock full of these IT houses that don't care.
Even here in Seattle, surrounded by the likes of Amazon (probably the most technologically backward sweatshop in Washington), Google (who knows, the guy that did my phone interview was a dolt), Microsoft (probably the most technologically advanced shop in Washington), and even Adobe (now run by clueless marketers) and Disney (which is turning into an amazon clone), it's tough to find worthwhile work.
So far the only decent job I've had in a decade is with a small company developing software for libraries.
I think that to have a good job you either need to be very lucky or create it yourself. This job is paying the bills while I do just that.
I agree with what you're saying, however I was unclear and my intention was the point out that it's the corporation that is satisfied and even prefers factory-style workers for large numbers of positions. I'm talking about corporations for whom the business is not software.
I taught software development at 100s of companies like this. The problems are: (1) there are a finite number of excellent devs and none will work for these companies. (2) Their IT tasks are not attractive to top devs because it's mostly integration work. (3) Their top managers are not devs (lawyers, accountants, insurance, etc) so IT work is not understood and devalued. (4) Most of these companies have nightmarish bureaucracies that will deaden the soul of the even the most enthusiastic new hire. (5) Because of all this, they need to replace people often so they don't want to depend on superstars.
I've thought about this and I don't know what they can improve (except 4). What can a large accounting company do to hire an ex-GOOG or MSFT? Nothing, really.
Well, my point was also not clear in that people may presume that I'm criticizing the developers themselves. I work with a lot of developers, some of them very good at software, but most not, but they are very good coworkers, hard working, and they get a lot done which fulfills the needs of the business, and they actually do themselves want to improve and are intrigued by techniques they didn't know about or that they reserved in their minds for "geniuses" which they assume that they are not.
I think that the implication that people may presume in my critique above is that I think the problem is the developers not being better, but that's perception is a big part of the profit motive that I'm critiquing. If success is a zero sum game then sure, you want only the best, but what I'm critiquing is that it is that very same zero sum game which makes it harder for these corporate developers to get ahead. I'm not charging some evil master plan, just that it's not realistic to presume that all developers must be top of their game at any one point in their career, or even that it must be their primary motivation in life.
I don't think the problems these developers face are only related to contemporary society seeing the corporate profit motive prerogative as paramount. It's also the attitudes of other developers who look down on them and put them down and actively detract from the reputation of those "corporate drones" who aren't as good as them. How about maybe didn't have the same opportunities? How about didn't get the same influences in school? How about just not having any mentors to show them the ropes? I find myself mentoring a lot and yet I also find it important to not be patronizing, but that's not very hard when I appreciate and am thankful to be working with these developers because they have so many good qualities, even if they haven't yet learned some abstract coding concepts and maybe aren't even interested in learning them.
But bleeding heart for the poor drones is not even the point, that's patronizing in itself. I think the self-described non-drone developers that look at things this way who are as negatively affected by the perception problems. On a delusionary scale of one to ten who's the more delusional one? The true believer in the way things work right now and is hoping for their big Startup break so that they too will be winners and free? Or the corporate drone developer who's a survivor, who's often an immigrant or foreign worker, who's sending remittances home every year, or who's already lost all hope and for whom thinking about career is about the time they reach for the depression meds.
It's also worth considering that the negative weight that is assigned to these developers is just plain factually wrong. First of all the corporations that hire them are making buttloads of money upon the work of these "unskilled" developers. And anyway, what exactly should we do with this supposedly dead weight? Throw them out of the village? Banishment? Their lives aren't worth as much? There isn't a place for them at the success in life table like there is for the better developers? Is it that they don't work as hard? Really? Hmmm...and what is this work of which you speak, bank software? Health insurance statement producing doofangles that too 65 hours a week for the past two months because the integration with the COBOL backend was acting up again and the nightly batch jobs from partner corps sent to the FTP dropbox were frequently corrupted? Hmmm.
And then some smartass comes along and tells them they're stupid for using FTP or some other random criticism, some developer always has a better way to do it of course, but fails to realize that the developer they are talking about simply has no say, no time to research, and nobody pointing to sources of information that will make it easier. Not everyone reads HN.
I think the problem may not be those less skilled developers, the problem is social conditioning and the narrative of what success is being all wrong.
We might talk a good game about looking for happiness in all the right places but that seems to break down pretty damn quick the moment we start critiquing those drones for not being good enough workers for the greater good. So what is is? Socialist or Capitalist? Or is the Left and Right narrative that guides our intellectual, political, and populist debate simply completely broken to begin with. But I think that broken narrative are what guides the conversation and attitudes as they relate to the concept of better or worse developers and how they contribute to us, presumably the great ones that is.
So my actual criticism is really about the attitudes, both those "greater good" attitudes, and those profit motive constraints which remove so much of the joy in a job well done. "More bricks, less hay" seems to be all we hear in corporate-land. Or at least, that's all I hear, maybe your bigcorp is a healthier society.
"but fails to realize that the developer they are talking about simply has no say"
I agree with you, and in particular this. My experience in craporate IT is exactly that. I've had a number of projects where we had a very specific set of operational requirements (platform, OS, database, web server), and couldn't get even a hint about anything vaguely resembling a functional requirement. I've even had "emergency" projects where it was suddenly critical that we deliver right away! But the same people complaining that we were late couldn't tell us what the software was supposed to do.
One company I worked for didn't tell the development team about some software we were supposed to develop (as it turned out, this software was supposed to be part of the company's flagship product, but no one knew what it was or what it was supposed to do) six months AFTER it was supposed to have been shipped.
There's really no way any developer could ever actually add value to a place like that, no matter how skilled and how motivated.
Totally. But the kicker is scorched earth makes a lot of money.
Those projects they canceled, and the craptacular ones that somehow managed to make it into production, maybe for 30 years, those are the decisions that are making a lot of money. The idealized view of the peace and love and beautiful code making money are just not how it's done in the real world. I'm not a Microsoft hater, but hey, there's a good example for all you haters out there.
Sad, but true. And I fear only getting worse since the latest trend is to get more for less, and quality keeps getting pushed lower on the priority list.
I agreed with your statement, I took a part of your statement and expanded upon it. To be clear I am in no way disagreeing, in fact I agreed with, enjoyed and up-voted your comment.
I'm sorry that I posted that in response to your comment, it really wasn't directed at you, I appreciated your comment, it just sparked me to action because I wanted to expound on the topic further.
If by IT, the author means an actual IT department, then I think the real problem is that no matter what your position in IT is, you are just an (often unknown) extension of the Help Desk.
If by developer, you mean people who write whole (or significant parts of) software applications, you find that you usually never get to do this in IT departments.
This is why skilled software developers often leave IT departments. They don't want 20-30 years of integrating pre-written software. They actually want to write the software themselves.
While the article makes lots of interesting points, I'm uncomfortable about how the case for the very existence of a "Value Apex" is accomplished through some brief hand-waiving and vague truisms. The idea that the talented people get less and less useful, while a very real possibility, I think warrants some harder research before we declare it inevitable fact.
"However, once an employee shares all of his external knowledge, learns all that there is to know about the business, and applies all of his past experiences, the growth stops."
I never worked anywhere where anyone could "learns all that there is to know about the business".
Challenges change over time, what you need to know (and therefore learn) various hugely with each new challenge.
"Value Apex" sounds like a pseudo scientific term justified with a few invented graphs.
What a load of crap. I have worked for the same company for 12 years and have provided more value every year. Several of my co-workers are in similar situations. Alex Papadimoulis obviously doesn't understand how to do proper staff development. Software development organizations have little or nothing in common with law firms.
And the use of the word ‘crisis’ in the title is stupid. Everything is a crisis now; we have a healthcare crisis, unemployment crisis, foreclosure crisis, energy crisis and apparently now we can add IT turnover to the list. If everything is a crisis then really nothing is a crisis.
"What a load of crap. I have worked for the same company for 12 years and have provided more value every year."
It's not crap, you're the one who's fortunate.
I can say with complete certainty that I've added next to no value to most of the companies that I've worked for that some random bozo hired off the street couldn't -- because most of them resist anything like good engineering. They just don't understand it, and they complain about (and penalize) programmers who aren't writing code when those programmers are asking "What's this thing INTENDED to do?"
No programmer, no matter how skilled, can add any value to such an organization. They're ass-in-seat jobs even though the hiring staff pretends that they're programming jobs.
The overall article makes sense BUT, I know people who have worked in the same place for over 10 years, love the job, are productive and get results. They don't work their butts off, they have achieved some kind of state where they know what the company really needs are delivers exactly that.
And you're not paying them enough because you've chosen to adopt a pay structure that, by definition, cannot handle outliers (which are exactly what your best people are).
An excellent programmer can routinely do the work of ten mediocre programmers. Have you ever heard of a pay scale that pays Programmer III ten times as much as Programmer I?
An excellent programmer can save you millions of dollars by increasing revenues, reducing costs, changing the way you do business, or any combination of these. How much of those millions does the programmer get?
An excellent programmer can provide a company significantly more value than his boss and his boss's boss. How much more does he get paid?
An excellent programmer can earn real equity and merit bonuses in enlightened firms. How many companies don't even have this on their HR radar?
An excellent programmer can go out and pound the pavement or join a start-up and earn what he/she is really worth. And until most companies provide that same opportunities, they probably will.