Sponsored By Aspose - File Format APIs for .NET

Aspose are the market leader of .NET APIs for file business formats – natively work with DOCX, XLSX, PPT, PDF, MSG, MPP, images formats and many more!

There is too much money to be made in software development

Its true.  Too much money is available to IT.

As a business with too much money assigned to an IT budget, you’re allowed to have teams completely fail, miserably, and when they do, you just throw more money at it.  Lack of money isn’t the problem.  The failures will still exist.

Mediocre developers can make too much money.  Enough money so that there is no incentive for them to be better at their jobs.  To improve.  They are satisfied with the amount of salary they receive, and do not feel compelled to improve as the amount of money they would receive in addition isn’t enough to justify the amount of effort required to exist in a zone of software excellence.

The market is saturated with mediocrity, and at a high price.  I’m not going to start repeating myself here; those several sentences above pretty much say it all.  Too many developers don’t have incentive to improve their processes and abilities because they are overly compensated for their skills.  Do they deliver some sort of business value, eventually?  Probably.  And too many of them do it as consultants, write shitty software, deliver working software that nobody in the world can come in and understand what the hell is going on in the code.  Business are blind to this aspect of the software development lifecycle: solubility (thanks Scott) and maintainability.  Make it work, at any cost, and move on to another paycheck.  This is the world we, as software developers, are living in.

What is the rememdy?  How to we improve this?  How do excellent software developers make businesses wake up and take notice to the wool over their eyes?  Do I write awesome software?  Certainly not.  There are occasions where some of the decisions I make should be exposed for what they are: poor decisions.  I do what I can to expose them and make them visible so that all involved can learn from my mistakes.  Perhaps I don’t do enough of this, because, after all, my job and reputation is at stake.  At the same time, I feel a moral responsibility to expose myself.  I need to improve, but the software community as a whole needs to improve even more.

This entry was posted in .Net Development, Agile, Alt.Net, Featured, Generalities. Bookmark the permalink. Follow any comments here with the RSS feed for this post.

69 Responses to There is too much money to be made in software development

  1. this is a nice post, I quite like it , thank you!

  2. Letsnurture says:

    Its not that software development is an art of bug hiding :).

    but yes we must have to listen our inner soul that are we doing something that is helping society? Are we entering in a vicious circle? can it be avoided?

    Greed makes people to make any kind of grid ….

    Please wake up and do what is really worthy instead of producing 1000s of bugs and then spend your whole life to resolve it.

  3. In India, there is cut throat competition in software companies… People get hired at cheaper rates…. and now china is also entering in competition… God knows what will happen !!!

  4. Paul McMurray says:

    Well, I kind of partly agree with the author’s comments, strong as they are. But the problems as I see it (and get increasingly frustrated by at my own personal expense) is that the decision makers don’t want to know about software, coding, limitations, possibilities, techniques – they just want to say things like “I want to click here and see a list of everything; then I want to click an item and the system know that I’m wanting to reallocate it to Joe Bloggs because I viewed his record last”. When you try an explain that “the system” doesn’t read minds they get very defensive. So to them, programming is a black art. If the next person down says “yes you can have that” just to shut them up, then it’s no wonder that thousands of dollars get poured into development. Just tell the assholes “The system doesn’t read minds and can’t be made to do what you want. If you can’t get to grips with that, we’re not going to waste your money pretending that it can.”.

    In my opinion, we need smarter bosses, NOT smarter developers.

    The majority of programming work I’ve seen people do in my 10 years is: adding/subtracting numbers, building strings, CRUD operations with data, populating textboxes. A small percentage falls outside of that.

    So if your average programmer is sitting earning big bucks, what’s he gonna do? Have an attack of concience and start studying the next technology so that he can still add/subtract numbers next week?

    Don’t get me wrong, I care about my career and always think what I’d do if I was made redundant next week; could I earn the same salary as I do now? What skills are employers looking for at the moment? Do I need to do some studying/exams?

    The sad truth of any profession is that it’s more about your personal interaction with your superiors than your skills. Once someone is employed, it’s getting increasingly hard for employers to get rid of deadwood due to ever increasing regulations. But then if the deadwood is pleasant and talks about their favourite subjects…

  5. Allan says:

    Raymond you are an idiot.

    You talk about big budgets, teams failing miserably and delivering business value but have you ever heard of the phrase called management? There are these things called employers that hire people called employees and can choose what people they want to hire. Then they do things called management like organising work, training, tasks, etc for these employees.

    Basically sales people get the work and workout with the client what they want done and then someone else works out the technical details with the client on the specifics. Then a project manager is given this work to then get the developers to EXECUTE or develop up.

    There is a thing called processes that people called management are supposed to work out and get their employees to follow and those processes should allow for finding the ‘bad eggs’ during software development and doing something about it. If a company doesn’t realise that there is a problem with some of their developers then they are idiots. As they say you reap what you sow.

    Is it a developer’s fault that they are not good and that management still hires him despite that? Is it a developer’s fault that if he fails that the company throws more money at it? I maybe a complete noob here but last I checked when I go to my bosses and demand anything (i.e. a pay raise) they don’t go ‘yes sir, anything you want’ and bow before me. In fact come to think about it anything to do with money is usually entirely in their hands and they tend to say no.

    If you want to talk about big budgets and people throwing money to solve problems (and that sort of thing) then you might want to talk about IT management more than developers. If you want to talk about bad developers and professional software development well that’s a totally different story that I’ll join you on, especially about a few Microsoft products.

  6. OMG says:

    This is just another post on elitism and bourgeois mentality in software. What does pay have to do with anything. The simple truth as is evitdent in some o fthe replies is that certain people believe they’re the only one’s who know how to write “good” code. We all need to get on with the job and quit bickering like high school cheerleaders over what the best way to do something is. Just do your job and STFU

    I don’t hear lawyers or doctors crying that they’re paid too much to bother being good. some of the very people in this reply are very guilty of GroupThink and are completely biased to one way of doing this.

  7. Chris says:

    You are really focusing in on too narrow of an issue. Its not that mediocre developers are getting paid too much, its that good developers are being paid too little. Even a mediocre developer has more of an information burdern to bare then alot of other highly paid professions like ( Human Resources Benefit Manager ringing in at 80K plus a year). So of course they have no incentive to get better, there is nothing more to be gained to become that uber coder you speak of, its easier to get an HR degree, talk about shooting emails, touching base, creating some action items, and raking in more money then the mediocre developers you speak of. The whole pay scale is out of wack and its not the fault of developers. Don’t pay mediocre developers less, pay good developers alot more, im talking 100k 150k plus, your an MVP , 200k plus. Then you would see better developers. Think I sound crazy? Why is that? Think about it you are creating the backbone of many enterprises, they have no problem paying the HR director or junior legal counsel 200-300K why are you getting 70-80? Or less? I know this isnt going to happen but I can’t stand when snotty developers get down on the mediocre ones, come on you get what you pay for, and they aint paying for much.

  8. Anonymous says:

    I agree 100% with the initial comment. What surprises me the most is that even amongst the best of breed developers, there is little professional discipline. That is, they don’t take care to develop for the 70% that will be maintaining the software… mostly because there’s no reward in it, as the rest of the world won’t realize the impact until they’ve moved on to the next gig. Test-first development is achieved only by pulling teeth. Metrics on good developers versus sub-par simply do not exist. The solution? If you’re one of the good, you’re intelligent and gifted. Don’t waste your talent away by putting 100% into a mediocre, albeit above-par paycheck. I think you have two choices… focus the extra energy on starting your own software venture, or invest the premium on your paycheck on other investments. Think like an economist – take advantage of what you can control, and spend every extra effort on bettering your own situation, at least until you are rewarded directly for your value added.

  9. mkuczara says:

    Some of us dont simply have time to learn (i have but in my private time). My work day is divided into email wars, kicking IBM (our infrastructure is outsourced to them), actually doing software and coordinating work on new apllications(standups, planning) , add to it maintanance (bug fixing mostly) existing apllications.

    Yes – i introduced unit testing, continuous integration, MVP, DI + other fancy stuff for my people, but others simply are too tired to do it. Wife hates me already for sacrificing my free time. Who am i?,

  10. A.B. says:

    Maybe you should go and work for one of the think tanks out there who have been working for the past 30-40 years to destroy the middle class. I work in South Florida and I can not crack 80k. Maybe this kind of salary was high back in the 90’s, but nowadays you are among the working poor.
    And to all of those out there telling me I need to learn 3.5 and Linq and all this other stuff…can you please tell me when I am supposed to do that in a 60 hour work week??? The company I work for has 3 developers, we are doing a job that used to be done by more than 10 people a couple of years ago, well ok, things have gotten a little easier, but not that easy, IF there was soooo much money for IT, why are so many companies understaffing so that the employees are at wits end.

  11. Hitesh Shah says:

    I havent gone through complete discussion . But I entirely agree with mediocrity in development.

    I would go to th extent of saying that at times organized medicrity is promoted and ingenious developerers are killed (read ignored , sarcasted , ridiculed ….). This happends when ur ingenuity is against larger organized interest.

  12. Hitesh Shah says:

    I havent gone through complete discussion . But I entirely agree with mediocrity in development.

    I would go to th extent of saying that at times organized medicrity is promoted and ingenious developerers are killed (read ignored , sarcasted , ridiculed ….). This happends when ur ingenuity is against larger organized interest.

  13. Esbay says:

    The comments are just as interesting to read as the post. I agree there are mediocre software developers out there, but it pains me to see some of the responses to the comments about mediocre management and their impact on code outcomes. Raymond, I could be mis-interpreting, but you seem to indicate that accepting mediocre mangement decisions is part of the mediocre programmer mindset. I don’t agree with that.

    I’m currently involved in a web project where our most experienced web programmer is determined to build an excellent, secure site, and is taking the time to do it. However, this may not mesh with the timeframe in which the project was promised (initial promise made by someone who no longer works at the company…) This is of great concern to the higher levels of managment, because time frame is once again more important that quality. But after a project is implement (at least in my experience with this company), the same upper managment that made the “time frame is more important” decision will come back and ask why the highest level of quality was not incorporated.

    IMHO, mediocre software is created by mediocre businesses, not just by mediocre developers. And as you mentioned earlier, the ENTIRE team (clients, users, managment at all levels, and developers) is responsible for that outcome. So the question for me becomes not just how do I become a better, more educated programmer, but also how can I help the client / user / manager become more educated? There is an underlying assumption in IT that users should not become familiar with technology or have to “speak our language” – instead it is up to us as developers to learn to speak “business language”. I disagree somewhat – I think the responsibility belongs both to us and to the rest of the team, so part of my role (as I see it) is to educate! The users, for instance, don’t need to speak “.NET”, or any other programming language – but they sure do need to know what quality assurance testing is, and why we need to allocate time to do it! And they need to know their role in reviewing new software (we’re a small shop, so we don’t have an entire team we can dedicate just to software testing and review). They also need to understand WHY we ask all those detailed questions about process up front (hopefully we get to do analysis and design before touching any code) – it’s to create a better product, not because we’re stalling.

    Having been in the industry for over 25 years (and having left companies that really don’t “get it” about good software development practices), I’m sad to say that I still see too many times where we as developers are told “don’t waste time on talking to the users, just start coding!” I’ll refuse that up to a certain level, but yes I do have other responsibilities and life-events that sometimes make walking out the door a poor choice for me. So yes, I have implemented mediocre software at times, at the demand of upper management. But I have also ignored direct instructions to not code properly, in order to create an exemplary product. (Why would anyone NOT code new software to be Y2K compliant when it takes no extra effort – even though Y2K was “still 4 years away? Craziest request I ever got.)

    So am I a mediocre developer? Since you’ve already indicated that I can’t answer that question reliably (thru your comments to others), the least you can do is set down some standards for determining that. Oh wait, you did! If I continue to educate myself, try to write excellent code (despite the obstacles) and provide short-term value to the company, then I have risen above mediocrity. Whew! I meet those criteria!

    I’d add another criteria to that, tho. A person who want to truly excel at whatever they do will re-evaluate themselves and their skills on a regular, on-going basis. And they will ask others to evaluate them, since it can be tough to be brutally honest with ones self. (I believe that is one value that certification brings, by the way.) And they will listen to criticism from others – it’s not constructive :) but it can be useful in the right hands (or mind)!

  14. Aaron Zalewski says:

    It’s because of this mediocrity that I moved onto independant consulting. It bothered me that the hack sitting next to be, who took a month to do poorly what took me a week to do well
    A) Had a job
    B) Had equal pay

    I think consulting is a great way to take your superior skillset into your own hands and get superiorly compensated for it. Are there mediocre consultants? Of course, but I think it would be harder to remain mediocre as a consultant (constantly having to get hired) than to keep a desk warm as a perm.

    Of course it’s compensation & challenge that motivates me. Some people need a manager to regularly stroke their ego, or perhaps robust family health benefits, or can not tolerate the stress of selling themselves. So one size doesn’t fit all.

    Good post!

  15. @SteveG

    Why do business requirements have to come from someone who is tech saavy? Business requirements are about business problems. Technology is a path to a solution to those problems. Why would you accept mediocre business cases? Why are you letting the project manager estimate by himself/herself? That’s still a mediocre developer being a mediocre developer because you are accepting the context: mediocrity from above. Of course, you like to pass the blame on to somebody else, say you’re worth the big bucks and its somebody else’s fault you’re writing crappy software, when you are still part of the problem.

  16. SteveG says:

    Sometimes it stems from mediocre business requirements with mediocre business men who don’t understand technology – mediocre business analysts who write mediocre business cases, mediocre project managers who can’t estimate – which are architected by mediocre architects with pie in the sky ideas.

    Makes for mediocre software built by mediocre software developers.

    And this is because we make too much money? Hmmm. Interesting :) Maybe you make too much money!!! 😉

  17. Shiva says:

    Right on. I have also noticed nowadays that besides throwing money at the mediocre team, there is a growing tendancy to throw hardware (more processors, more RAM) at the crappy code instead of fixing the actual source code for lackluster performance….

  18. @AT

    Your entire comment is very sad. Not only do you accept mediocrity, you think it has to exist and serves a purpose.

  19. Kalpesh says:

    So, what makes you a better developer?

    Lets say I work in an environment which doesn’t want me/people working with me, think about how to develop in a better way. It is more to deliver the solution (not worried about how it is designed)

    I am sure lot of people are in such an environment.

    How can they improve themselves including me?
    Reading helps. However, working practically on such a thing is a different ball game.

  20. @Kalpesh

    “How do you think of role played by smart folks like you in mentoring?”
    “people who are eager to learn to design solutions in a better way ”

    Don’t assume that I should be mentoring or have the answers.

    “people who are eager to learn to design solutions in a better way ”

    Except they are hard to find.

    “And, I would like to work for you & get better. Right environment & company of right people can help developers get better (for those who want to do better).”

    I hear this alot, and I am sure you are sincere and that is an awesome attitude. I want to see more people follow through on this kind of attitude with actions.

  21. AT says:

    Mediocrity is in the Human Condition, not a specific aspect of our industry. The statistical distribution of mediocre talent vs. true talent ensures that everyone can put food on the table and not just those of us who are stars.

  22. @barabba

    Your english is fine sir. I do not understand Italian economics, so its hard for me to have an opinion on your salaries, but I would agree that if in fact your great programmers are making US$40,000, then yes, underpaid. Come to work for my employer in the US.

  23. Kalpesh says:

    Raymond,

    Thanks for your reply to my comment.

    How do you think of role played by smart folks like you in mentoring?

    I am sure, people who are eager to learn to design solutions in a better way – will get benefited which might help add value to businesses, reduce bugs/maintenance cost

    Somehow, upfront investment in a good solution is better than rushed solution with patches on it. That mindset, needs to be changed. For which, developers like you (smart people) – should get into higher roles to take decisions, which otherwise would be taken by someone who is more good at cost estimation.

    A balance of cost/technology can help make informed decision.

    And, I would like to work for you & get better. Right environment & company of right people can help developers get better (for those who want to do better).

  24. barabba says:

    Here in Italy a mediocre developer earns not more than 30,000$ year of net salary.
    A very good developer earns more or less 40,000$ year of net salary.
    Are we satisfied with the amount of salary we receive ?
    No, of course, but we feel compelled to improve… and we make very good software.
    I would like to have your salaries…. :(

    Sorry for my english.

  25. “It is obvious you haven’t worked in the industry for very long.”

    Would you care to elaborate how you’ve come to this conclusion?

    “The incompetent programmers move on to become managers of some sort.”

    They do? All of them? What do the good programmers do?

    “if you would run IQ tests of everyone in a company, and then compare them to salary, I can guarantee that the programmers will turn out to be underpaid rather than overpaid.”

    How on earth does IQ equate to monetary compensation? Some of the smartest and brightest people in the world who can prove theorems that answer all the questions to the origination of the universe, are also some of the most socially inept people there are, making them nearly useless in a profession that requires a submersion into social and communicative behaviors, thus rendering their 180 IQs pointless in most corporate environments.

    “Programmers deserve blame though, and they do so because they will accept doing dumb changes that lead to bad applications.”

    Thank you for reiterating my point. This is an outcome of the mediocrity.

    “mr. Awesome”

    That one’s new, but thank you.

    “if I click to the left of this text, the entire article and all text within it is marked in my Firefox 2.”

    You might want to send an email to one of the guys here: http://telligent.com/ourteam/ as its their product this blog site is running on.

  26. @Roger

    “Is there mediocrity at work in software development? Sure. You bet. Same goes for management, sales, and just about any other job / field you want to look at.”

    But only the software part is something I can have a direct impact on, so it is this field unto which I concentrate my focus and attempt to change.

    “How many people DIE each year due to mistakes made by physicians? Pharmicists?”

    How is this relevant?

    “Mediocrity is a fact of human existence”

    And you, Mr. Mediocre, by suggesting such, have no place in any profession that impacts the lives of others, as you appear to strive for just that, mediocrity, and accept it as commonplace.

    “Complaining about it is about as effective as complaining about gravity.”

    This may be true, but it doesn’t mean I can’t try.

  27. Mach says:

    It is obvious you haven’t worked in the industry for very long. The incompetent programmers move on to become managers of some sort. Bad people are everywhere in a company. Actually, if you would run IQ tests of everyone in a company, and then compare them to salary, I can guarantee that the programmers will turn out to be underpaid rather than overpaid.

    Programmers deserve blame though, and they do so because they will accept doing dumb changes that lead to bad applications.

    A guy who builds cars will refuse to mount a bathtub on the roof of your honda because you think its a good idea, but a programmer will always say yes, yes, yes.

    “everything is possible”… pft…

    And by the way, mr. Awesome, if I click to the left of this text, the entire article and all text within it is marked in my Firefox 2.

  28. Roger says:

    Waaaa waaaa waaa. That’s all I see here folks. Is there mediocrity at work in software development? Sure. You bet. Same goes for management, sales, and just about any other job / field you want to look at.

    How many people DIE each year due to mistakes made by physicians? Pharmicists?

    Mediocrity is a fact of human existence — ever seen the bell curve?

    Complaining about it is about as effective as complaining about gravity.

  29. Rich says:

    I have to agree with you and thinking that there are a lot of mediocre developers out there. I disagree with Dex’s argument that we should pay developers less. I think mediocre developers make a stronger argument for the idea of programmer certification or accreditation. Doctors and Lawyers need it, why shouldn’t programmers?

  30. @Harry

    Its not just managements responsibility. We need to be checking eachother and calling eachother out. Don’t leave it to management to do all the work.

  31. @Trevor

    “The fundamental problem I’ve seen in most projects is management.”

    Management has always been a scapegoat. While management has flaws, we can’t continue to ignore the fact that we, developers, have to carry this blame as well.

    “if only they didn’t have to write a quick fix for the release on Friday. And then once that’s done there’s another quick fix and another…”

    This is a problem with the team and communication and understanding. Both sides are to blame. Are you fixing it because you coded it wrong? Why did you code it wrong? Did your ego dictate that you knew what to do and how to do it without fully understanding the problem and talking to your customer? Did your customer withhold information when you asked for it that made you code it incorrectly and have to go back and fix it?

  32. @moopy

    In the arcticle, you’ll notice I did recognize I do need some self-improvement. And yes, the article is ill, because the nature of the article is ill. That was the purpose behind writing it.

  33. Sanjay says:

    Good post…there are probably a whole bunch of reasons of why this is so. I’ll just throw out two, though…Firstly, as far developers being happy with their salary and not putting in the extra effort to really improve their skillset…part of the reason for this [at least at my organization] is because the project managers and business analysts who are really utilizing these developers only really care about material things (eg, how it looks) If your web-application is pretty – no one is really going to ask too many questions on its architecture. That’s especially true if it works, but just doesn’t work how it should. (For example, it’s totally plausible for me to use some type of OO language and write something in a completely procedural way…happens a lot with developers that moved from ASP3 to .NET)

    And the second reason, software development is a very new field. Now sure depending on who you ask it’s been a while since the “first” development project – but compared to other functional areas (marketing, legal, finance, etc) in a corporate setting…it’s just newer, which accounts for a lot of the mishaps that we see, even if it’s not the driving reason.

    I could probably go on for while here…

  34. Bob says:

    Completely agree.

    This is a result of the first Web bubble. There was a need to pay people way to much to develop crappy software because of the lack of engineers available. This drove up the price for everyone which is good, but compressed the pay scale which is bad for the talented people. It’s quantifiable how much better than another engineer I am but the pay doesn’t match this ratio. Now all engineers make with 10%-20% of each other, but there abilities and productivities are 50%-200% of each other.

    Being mediocre is the way to go.

  35. Harry says:

    Unless we can measure productivity of developers, it’s hard to manage the people side of the puzzle. The only way I know is for managers to keep eyes on individual developers, coach them, encourage underperformers to change (behavior or job). But now, where can we find good software managers?

  36. Funny. You can mostly replace “developer” with “manager” and the text remains perfectly valid. Really, try it out.

  37. Trevor says:

    I think Jason has it right. The fundamental problem I’ve seen in most projects is management. If management doesn’t understand what makes a good developer or for that matter what makes for good development, then it is difficult to turn around and blame the developer. Sure I’ve seen tons of crappy code written by poor developers. But the management hired those developers and is completely unaware of the problem. Also I’ve seen lots of competent developers that would love to start doing unit tests, TDD, etc., etc. if only they didn’t have to write a quick fix for the release on Friday. And then once that’s done there’s another quick fix and another…

  38. Bagua says:

    Great post, and very valid point, the company I work for are currently going through a recruitment drive and are finding it damn near impossible to find developers with the suitable drive for perfection.

    There are plenty of developers who apply for positions without the necessary skills and more importantly without the drive to gain those skills and further their knowledge. It pains me to sit in interviews listening to people tell me that they haven’t really looked at any of the new features of .Net 3.5 or what is about to arrive on their laps in SQL 2008 or even have a basic knowledge of the fundamentals of technologies that have been out for much longer than that simply because that research would have taken them out of their comfort zone when they get paid so well for staying in it!!!!

  39. moopy says:

    why just pick on developers? there are slackers in all forms of employment. how many managers go out of their way to improve themselves? This article is pretty ill thought out to be honest….maybe the poster needs to go through a bit of self improvement too.

  40. Gman says:

    Couldnt agree more – infact where I work is the place your describing – poor develoeprs making a fortune with no ambition to make things in the company that they work at more efficient or for them to become more productive.

  41. Kalpesh Vekaria says:

    It’s due to company never thinking about developer social background. Company always interesting in them profit book.

  42. XOR says:

    I find that at some employers even if the devs have the enthusiasm and knowledge to create well architectured solutions, management just wants to build/sell the cheapest/quickest to build solution possible, which results in a hacked up mess – against the desires of the devs. Maybe this situation is not that common but its one I tend to find myself in. Perhaps its the ozzie boom causing it?

  43. Ray,

    Shame is a pretty good one…but probably not practical…people tend to get their feelings hurt easily in today’s society. I think the reality is that with development, as with any field, there are very individuals who improve upon mediocrity for the sheer challenge and sense of self fulfillment they get from it.

    Most people, sadly, are really only in it to make a quick buck. This is probably true of any field that requires very little sacrifice from the individual in order to gain entry into it.

  44. @Jason

    “As for the ROI argument I have to say there is a major management problem with the companies that behave the way you’ve described.”

    Its not because they want to, its just the way it happens. This is the reality.

    “Companies that undertake software projects with no thought to profits and then overpay developers to the point that they’re fat and happy are either doomed or up to something that we don’t understand. ”

    Absolutely. And its part of the problem.

  45. @Dax

    “1. The reason most projects fail is down to the individual developers.”

    Of course, I never made this claim, and never would. The major contributing factor to project failure is, in fact, individuals not operating as a team, but not just developers, all individuals involved.

    “2. Paying your developers less will help improve the quality of the work they do. (I’m assuming that you mean this if your saying we pay developers too much)”

    You assume incorrectly. I’m all for people making as much money as they can. I hate that its at the sacrifice of what is morally right in the industry. Do you job and do it well, and get paid well for it. Most all great developers are compensated moderately well. Some perhaps not enough. I would venture that most all crappy developers are paid too much, and it keeps them in the industry because they are happy being mediocre, and probably that is their lifestyle, and can make more money being a shitty developer than they can being a shitty accountant.

    “3. Picking on developers as the reason for project failures will some how improve future projects. Sorry but what I’ve seen of the majority of permie, professional developers is a lifetime of 9-5 being beaten with the “you will do as your told” stick, no decent training, no-arguments-you-will-release-your-product-on-this-date-regardless-of-quality project management and generally no opportunity to try different techniques. Oh yeah and the’re not paid well.”

    I’m sure this is true in many companies. Its unfortunate. It doesn’t mean developers who litter our industry with shitty code don’t deserve to be picked on. I don’t care if you don’t like the company you work for, its neither a reason nor an excuse to suck at your job. Move on.

    “a real large chunk of ’em would do a bloody good job of it too”

    I doubt this. They like to say they would, and that’s cool, because then, no matter how much they suck at it, they stick it on their resume so that when I get it and see XP, I can ask them about pair programming, and they didn’t do it. Unit testing? Nope. Story cards, iteration planning? Don’t know what that is. So what did they do that made them work in an XP environment? All the developers sat in the same room. Voila. XP.

    “it’s probably about right in terms of payment vs effort.”

    Another problem. Payment shouldn’t equate to effort. It should equate to value and quality. Both of which lack in the average developer. They want to be paid, just like you, for effort, regardless of whether or not they are writing shitty code.

  46. Dax says:

    While I agree there is a lot of money in the Software Development industry I think your totally wrong if you believe:

    1. The reason most projects fail is down to the individual developers. I reckon that unless your working as a one man band (or at least a very small team) then the team, structure and processes that you work within have a much bigger impact on the success/failure of the projects you work on.

    2. Paying your developers less will help improve the quality of the work they do. (I’m assuming that you mean this if your saying we pay developers too much) In fact it’ll just drive more smart people out of the industry becuase the’ll ask the question “Why put up with rubbish wages when you can earn more in another profession?”

    3. Picking on developers as the reason for project failures will some how improve future projects. Sorry but what I’ve seen of the majority of permie, professional developers is a lifetime of 9-5 being beaten with the “you will do as your told” stick, no decent training, no-arguments-you-will-release-your-product-on-this-date-regardless-of-quality project management and generally no opportunity to try different techniques. Oh yeah and the’re not paid well.

    So yes .. the’re are rubbish developers out there, and yes there are people that make no effort to improve. They may even be paid loads of dosh. However the vast majority of developers I’ve meet in the last 10 years of my professional life would just love to work on agile projects using the latest technologies (hell even technologies from 5 years ago) and you know what .. a real large chunk of ’em would do a bloody good job of it too. Why have these people not moved to companies that would let them do this? Lack of roles, lack of job security, family commitments to a location, the list goes on.

    Me .. for the last seven years I’ve been a freelancer .. it’s the only way to get a really good wage as a professional developer. It has it’s pros and cons (not for everyone) but really, for the effort I put into the constant relearning of just about everything I know on a 4-5 year cycle, it’s probably about right in terms of payment vs effort.

  47. Jason says:

    Thanks for the response.

    It seems to me you might work with better-paid developers. I frequently hear complaints from talented and mediocre developers alike that their pay is crap, their benefits stink, etc, etc.

    As for the ROI argument I have to say there is a major management problem with the companies that behave the way you’ve described.

    Companies that undertake software projects with no thought to profits and then overpay developers to the point that they’re fat and happy are either doomed or up to something that we don’t understand.

    As for the solution to the motivation problem: artful leadership. Just like artful technical solutions, projects lacking this component are far riskier than without.

    There are lots of folks out there who obsess over people’s feelings and motivations. They won’t be able to code their way out of a wet paper bag but if they’re competent, you can bet they’ll be able to develop a team that can.

  48. Van Greeneburg says:

    I can assure you that developers are not paid nearly enough.

    Varying levels of workforce competency is not an exclusive condition of the Software Development craft, I can gaurantee that!

  49. jdn says:

    Given that the ‘experts’ disagree on what counts as great software (just to use an example, try to get people to agree on what counts as proper TDD), I don’t know what progress can be made.

    ‘Maintainability’ is sort of buzzword. I mean, I think most people can agree on what doesn’t count, but that’s not enough.

    jdn

  50. @Karthik

    Then what are the motivating factors to remove mediocrity from oneself, if you can recognize it?

  51. @Tom

    Yes, I’ve witnessed this first hand, too many time. When somebody can’t cut writing good software on one project, they just get shuffled around to another.

  52. @Kristian
    Actually, I have heard of developers being “…moved on to other projects…”. Were the actually fired, I don’t know, but I know that they weren’t see of again.

  53. @Kalpesh

    I agree that Microsoft has its hand in the issuance of mediocrity. This has been Scott Bellware’s warcry for years.

  54. @Jason

    “I disagree with the assertion that developers are largely happy with their salaries.”

    Of course they are, to a degree. Because they know more money is available, whether they deserve it or not. They can continue being piss-poor developers, and demand raises because the money is there, and management is somewhat aware that they aren’t likely to get mediocrity replaced with stellar easily anyways, so they give in.

    I do agree with you that a lack of motivation does exist, but do you have a solution?

    “Companies work hard to keep their cash and typically only invest in the risky business of software when theres a lot more money to be made.”

    I dont’ believe this is true. Most companies writing software don’t do it to make money, but rather to get short term ROI on the software project by releasing other resources once the project has come to completion and is successful, which doesn’t hardly ever happen according to targets and projections. Only in the long term, do they ever begin to save money, if at all after having the project go 2 years late, paying out raises over the term of the project, and having to have people maintain shitty code, which is also costly and time consuming.

  55. @Kyle

    Yes, some sort of measurement of mediocrity does need to exist that exposes it to the people paying the bills. If you have a couple of stellar people working with the team, the entire mediocrity is easily hidden because the efforts are seen from the team as a whole, not individuals. Agile process management techniques, such as Scrum, do something for making mediocrity more visible, just not visible enough so that something is done about it. Hiring, firing and rehiring constantly takes a toll on moral and attitude of the team and department as a whole.

  56. Great post. I’ve blogged about overpaid developers before and the disservice they do to themselves. Your post definitely talks about the disservice they do to the rest of us as well!

    However I disagree that money will ever be an effective motivator to be a top notch developer. Even if salaries go down to pre-1999 levels, I doubt that you will see developers flocking to user groups, blogging their hearts out, and attending more events. Participation in those things may make someone more effective and will certainly help them build excitement for their field, but there’s no guarantee that it will double their current salary.

    It’s more likely that the devs motivated by money will leave dev work to do something else when the salaries start going down. If I had a dime for every current MBA I’ve met who was a developer back in 1999…

  57. Nice post – it made me think:

    I have heard about painters who were fired for doing a lousy job. I have heard about carpenters, accountans and bar staff who have been fired for being lousy at their work. But after some 6 years in the software industry I haven’t heard about _anyone_ involved in developing software who have been sacked merely for being a lousy software developer… Why is this?

  58. Superman says:

    don’t worry, be happy

  59. Kalpesh says:

    I agree to what you have said in the post.
    However, I think people at microsoft are partly responsible for this.

    The tool that come out are so simple (for simple scenarios), drag-drop compliant, that one doesn’t find the need to go out of it – to find alternatives. People in java world are always looking outside java to do work (hibernate, spring etc)

    I think tools made by MS make it really simple for even the mediocre programmer to do the job.
    I am not against mediocrity. Not all jobs require superior skills at the same time.

    However, more people are willing to stay where they are (making MS as their god in terms of available options & options that will be provided in future.)

    Personally, I feel – I am not mediocre & not a superstar as well. So, I would want smart folks like you to mentor & pull up people who are willing to get better, but are stuck working in not so conducive environment.

    Just like TDD, Agile, MVC created its buzz outside MS world & has forced MS to think in those terms as well, smart people should create buzz about new things & the knowledge is to be spread. Mentoring is the way to go IMHO.

  60. Kaveh Shahbazian says:

    In IT everyone claims to know best way to accomplish a project and everybody fails. That is the nature of developing software. And everyone can reject that. So you can; so I can.
    What does it mean “to change”?
    If you are going to do some mathematical computations then you can make assumptions about how the code will go on. But writing software to automate humans everyday tasks is more like writing a novel than engineering. Some books sell well because of their writer’s fame; even if it is a piece of bullshit (look at Microsoft) but there is no guarantee mechanism.
    But I appreciate attempts to find a management solution to moderate an IT project. And I think things will not change very much. Still as a developer I am under-payed. I love developing things and I will go on until I can; This will not continue for a long time for me and other dedicated developers too as things gets more frustrated and working environment gets dumper.
    Of course there will be some folks to fill in; still the “problem” (in your opinion) will remain there; I promise!
    Cheer!

  61. Brian Lowry says:

    Wow, man. Your post screams passion. I dig it, and I wish the development community had more posts of inspirational / offensive nature (depending on which one you are). The main problem with our industry is that 80% (or more) of developers could care less to learn. They care about the task at hand. Write the code to fix the current problem and write the current program. Long-term thought is rare. On that note, they learn at a crawling pace which a passionate developer will surpass ten fold, because a passionate developer learns to out of curiosity and drive.

    I continue to run into it, and while I may not be the most efficient, best developer in the world, at least I try. Hard.

    Well put, sir.

  62. Quite the conundrum. In general, I don’t think that there are many developers who deliberately try to be bad programmers – it just happens that some don’t feel any strong, compelling reasons to do better.

    As well sometimes software development projects fail no matter how talented the team is.

    I guess all you can do is keep your chin up, do your best that you can today, and try to do better tomorrow.

  63. Jason says:

    No.

    I understand that it is frustrating to deal with mediocre code, especially when management takes a “make it work.. I thought you were smart??” attitude. And I know it is no fun to deal with a team of unmotivated, overpaid developers. Especially as a consultant.

    But still, no.

    I disagree with the assertion that developers are largely happy with their salaries. I’ve rarely seen this to be the case.

    In fact I disagree with the assertion that you can pay people to be motivated at all. This is simply not true. Some people will be motivated by cash, other by titles, other by recognition, etc. When it comes to motivation, one size most certainly does not fit all. It takes artful leadership to provide motivation, and there is certainly a lack of that

    I also disagree that there is some overabundance of cash that companies just sling around with no regard to consequences. Companies work hard to keep their cash and typically only invest in the risky business of software when theres a lot more money to be made.

    The fact of the matter is that excellent software developers have little chance of convincing management to do much more than give them a shot at coding a project. To convince management of anything you have to speak their language – and it isn’t .Net.

    Just my 2 cents.

  64. Kyle Baley says:

    It’s a tough problem because it’s not always easy to tell when you’ve succeeded, or worse, when you’ve failed despite putting in a valiant effort. And there needs to be some measurable way of determining “mediocrity” because, and this is just a guess, I suspect most people would not claim they are mediocre developers. It’s like asking if you drive better than half the people on the road and having 90% of the respondents say yes.

    I like Dave’s addition of the winning attitude to the equation. You would be shocked and awed at how long you can coast on a positive outlook alone.

  65. Evan says:

    I agree completely. As for getting short-term relief, I have a theory. Go to where the complexity kills and the requirements are strict. The tougher the project, the less room there is for mediocrity. The bigger or more time sensative (in terms of system performance) the application has to be, the more it acts as a natural weed out. Or so that’s my untested theory.

  66. Dave Laribee says:

    i think you hit the nail on the head at the end. what businesses _should_ value is the attitude of constant improvement and progressing toward perfection. does that make you or i perfect? hardly, but we try to get better every day. baring complete idiocy, in the aggregate we should improve incrementally and visibly.

    i think it should be a little like baseball. developers that combine winning attitude with winning skills/talents should be compensated at the high end. like the paul graham idea of pay your superstars 10x normal.

    good post.

  67. Max Pool says:

    I completely agree that due to a surplus of demand, sub-standard supply (that is, read development shops) has come to market. The only way I anticipate seeing this trend going away is if one of two things occurs:

    1.) Some tech bubble bursts again halting the purchasing of new software, forcing the weakest to go onto a different career.

    2.) After years and years of acclamation, all businesses have had at least one *great* experience with a contractor setting the bar for all other contractors to live by. In turn, this forces crappy shops to catch up or perish.

    IMHO, you will always find dispassionate people in every market, in fact the majority of them have Unionized. Maybe that is what we should be promoting – a union, kind of like the .xxx domain so we can easily identify them and stay away 😉

  68. Amen. In a world of highly paid mediocrity distinguishing yourself as having better skills, work ethic and deliverables is a battle that is hard to win.

    The common belief held by some management saying that “it can’t be that hard” often drives them to source the lowest price options. When the use of those resources produces immediately failing, or completely unmaintainable, project the whole developer community gets painted as being unreliable, unskilled and unmanageable cowboys. It’s at that point that you start to struggle distinguishing yourself in the eyes of the people with project control. Then again, would you want to jump on board with a group that has a history of caring enough only to take the lowest bidder? I’m not so sure either way.

Leave a Reply