Why is it so hard to hire good software developers?

Why is it so hard to hire good software developers? That is the question I’ve been asking myself recently. The company I work for is currently looking for two software developers and it is incredibly disheartening to see the quality of candidates.

First off the quality of the CVs. We’ve taken a two pronged approach to this. We used a recruitment agency and we advertised ourselves. What a difference between the two approaches! The CVs we got from the recruitment agency were at least sufficient quality to warrant an interview. The vast majority of the CVs we got from our advertising efforts were useless. Half didn’t even live within a commutable distance.

Of those that we did interview two thirds didn’t make it past the first interview. This is an informal meeting where we ask some questions based on what’s in their CV and try and assess their personality. If they mention that they’ve got SQL Server experience we’ll ask questions on that. If they say they’ve got Reporting Services experience we’ll delve a bit further.

We are looking for C# developers, but we don’t mind VB.NET guys because the main learning curve is the .NET Framework and that is the same for C# and VB.NET. The hundred or so differences come from the language syntax and that can be overcome in a short period of time.

The second interview is really a technical test. We give the candidate a specification and walk them through it. The application is sufficiently small that it is just possible to complete everything in the allotted two hours, but most don’t – and we don’t expect candidates to complete it, although we do expect that they will get a fair way through it. Part of what we are looking for is to see how their thought processes work, so the spec is sufficiently loose that they can make choices to show off their skills.

We’ve found that it really is the best way to discover if the candidate can actually do the work. The application is not difficult by any stretch of the imagination and we’d expect anyone with a few years experience or a computing or software engineering degree to be able to complete a fair portion of it. It is, admittedly, slightly larger the Scott Hanselman’s example of the Buzz-Fizz program. But, then, we also want to see how they would structure a more realistic application rather than just a single simple algorithm.

So, what would we recommend? Listening to DotNetRocks is a good start. Download it to your MP3 player or burn it to a CD and listen to it on your commute to and from work. Most people waste that entire time going to and from work, so start doing something useful with it. I vaguely remember a study that suggested that if you drive 12,000 miles per year (a 24 mile commute) you could learn as much as a 3 year degree course in 4 years.

Next, watching episodes of dnrTV will help. If you need to learn about some newer technologies then the Developer Platform Evangelists at Microsoft UK have produced an number of Nuggets – short 10-ish minute videos showing a single concept.

But, what is next for us? We are considering going back to basics. If we can’t find someone with the relevant skills then we’ll have to hire someone without those skills. But we can’t hire someone with a few years “experience” because they’ll want more money than they are worth, so fresh graduates or especially talented folk that are crossing from another field in IT will be what we are looking for.


32 thoughts on “Why is it so hard to hire good software developers?

  1. Your post sums up the IT Industry in a nutshell – it’s in trouble.I have been working as an IT Contractor for nearly eight years, which has afforded me the opportunity to see how IT is implemented in both large, and small companies. I have also been lucky enough to work in a diverse set of industries, most recently in Financial Services. Everywhere I have worked experiences the same recruitment problem you’re facing, which is probably why the contract market is so buoyant at the moment.You talk of graduates, which I think is a good idea, but I think there is a bigger problem. Over the past three years I have started to notice that I am no longer working with Junior Developers or Graduate Trainees. They just don’t exist. Everyone is a Senior Developer or a Technical Architect. There is nobody following behind me, nobody that I can pass on my experience and knowledge to. What does that mean for the industry? Why is this happening? Two things: outsourcing and offshoring.Companies see development as being too risky, so they outsource their strategic projects to the big consultancies, for a fixed price that is at least 3x more expensive than it would be doing it in-house. They think that they’re reducing risk, but in actual fact, they’re simply swapping one risk for another (but that’s another topic). Consequently, for the developers that are left, the only work available for them is the reactive or business-as-usual work – this is typically maintenance work, which is about as exciting as a trip to the dentist. Why would any graduate want to do that?To get any value from a development position, you need to be working for a company that develops software products. Consultancies simply body-shop resources, and they’ll go to India before they’ll come to you – after all they’re on a fixed price, and they need to open that margin as wide as possible.I’m a good developer, just over a decade of experience (beginning with C++ and then onto C#). I have an honours degree in Software Engineering, along with MCP/MCAD (.NET) certifications, am an OMG certified UML professional, and hold qualifications in PRINCE 2. What am I currently doing? I’m writing a Windows Service that copies .pdf files from one network share to another. Oh yes, my 4 years at University is really paying off.My advice to you, and everyone who has asked me recently, is to invest in a really good Internship programme, and try and attract the best from the IT field. Consider taking on sandwich year students and sponsor them through their final year at University. Get someone really experienced (like yourself, or even myself) to contribute massively to that Internship programme.The IT Industry is slowly strangling itself. That’s my pennies worth anyway.

    1. Tim? Is it? What a job? Or mid size project to be more accurate?

      I need a project done, everyone qualified says they don’t have the time, and that’s all three of the people I could find. Want to take a crack at it?

  2. @Hamish and @Tim: Just to let you know we are now looking at training up a junior developer. No interviews as yet, as we are only just getting the CVs in. I’ll write a follow up post in a few weeks once we have some experience of the process.

  3. As a former software developer who busted his ass in college to get that compsci degree with high marks, but then discouraged after getting rejected left and right for not meeting every single stringent employer requirement, you may want to take a look at your hiring process Engineering shortage? What a lie. There are legions of unemployed engineers out there. Employers seriously expect to pay programmers 50-60k after years of grueling, rigorous education, and then expect possible candidates to meet every single requirement listed, but you’re not willing to relocate anyone, you’re not willing to take a person with experience because “they’ll want more money than they are worth”? Wake up. People like you is partly the reason why engineering is a dying profession in the United States. I could have made the same money by becoming an electrician, plumber, or truck driver.I now work in technical sales which is partly commission based. I earn almost twice as much for talking sports and boozing potential clients. Funny how life works.

  4. @The Fan: We did look at our hiring process and decided that it would be best to go for a graduate and train them up instead of a senior guy. We hired within the first 4 interviews when we changed to that strategy.As for meeting all our “stringent” requirement then you didn’t read the blog entry above. We had very little in the way of requirements. Ability to program in C# or VB.NET but will accept any other OO language if they are willing to cross train, understaning of OO, and SQL Server. Our interview process follows the candidates strengths. As for your comment about me lying about an engineering shortage, you also have to look at a local level. Earlier this year Morgan Stanley moved in to Glasgow and sucked in rougly 400 developers. That has left people panic hiring in Glasgow. We refused to do that. A lot of the people we interviewed actually already had offers on the table and were hoping that we’d counter offer with something hire. It also sounds like you don’t have the mental capacity for software development if you describe you degree as “grueling” and “rigorous”.In terms of not relocating any one, that was not our choice. That was dictated further up the chain. We would have loved to be able to relocate people but it just wasn’t possible. However, I did relocate to work for this company, but it was out of my own pocket, so it isn’t completely impossible.As for suggesting that I pay someone “more money than they are worth” then that is just stupid. I can’t even believe that an inteligent person could have made such a statement.I can’t comment on why engineering is dying in the United States as I don’t live there.Finally, well done on earning twice as much boozing and talking sports – two activities I’m not in the least bit interested. But if it works for you then go for it. You have obviously found your place in the world and it wasn’t writing software.

  5. Let see, when I was in college we used to say “Engineering is six years of study for a four year career”Engineers and programmers are called Geeks Nerds Dweeb etc. while janitors and Garbageman are called “Engineer” Why study your ass off in college when you can major in marketing or business (with a minor in frat party’s and binge drinking)and make more than the hard working engineers. If your bright enough to be a good programmer or engineer you understand what a poor career choice it is. Most of the Best and Brightest leave the field due to low pay no job security no respect from management. What justification can you give for paying the manager with no engineering knowledge more than a programmer? If your HR people can’t find a programmer raise the pay rate and COMPETE (of fire your HR people for incompetence) .Just a little logic will tell you what the H1B program does.The law of supply and demand applies to labor.When supply increases or demand decreases the price of a commodity(like labor) goes down. Producers make less, supply decreases and the price reaches a balance. It’s a nice feedback system that works well, It’s called Capitalism and Free trade.When Government interferes in the Free market that is socialism or Communism.The Cheap visa indentured servants who lack the rights of Americans to change jobs, join unions, negotiate salaries, and who are baited with the Carrot of U.S. citizenship and the favorable exchange rate.More Visas = greater supply of engineers= lower wages = less Americans entering field = lobbying for more cheap labor H1B’s…..Less visas = increased wages for engineers = Americans entering field = Less visas needed.The companies who whine about the lack of engineers are the same ones who glorify free trade with country’s that have lower standards of living, and few if any enforced labor or environmental laws.Also does anyone know the proportion of male to female visas? I see very few women getting these, shouldn’t it be around %50 or is the program deliberately sexist?

  6. Colin:It’s all part of the same global race to the bottom. Programming projects are shipped over seas to access a cheaper labor pool. This leads to lower wages locally in the field causing students and former professionals to find better opportunities elsewhere. The H1-B program in the U.S. is just an easy thing to point to because of it’s obvious abuses. We lower our standards so you have to lower yours to “be competitive in a global market”. Your Scottish employees now have to compete with countries that have no labor laws(except the ones that forbid unions) and few if any enforced environmental laws. Even if your company wants to hire locally and pay good wages it can’t if someone else hires cheaper labor in a third world market to lower costs. Oh a GOOD programmer is a GOOD programmer. Hire a C++ programmer and train them! Treat them well and they will stay and become more valuable to your company, or use them and throw them away at your convenience, it’s really up to you.

  7. this might interest you: http://www.spectrum.ieee.org/careers/careerstemplate.jsp?ArticleId=n070204UNLIKE THE H-1B VISA ISSUE, which has concerned many U.S. engineers in recent years, the fear of outsourcing is an international phenomenon. “Scotland has seen manufacturing and general IT jobs move to India and China,” says Hazel Sinclair, who is project manager at Talentscotland.com, a government-funded agency that helps create jobs. This concern has helped keep a lid on salaries in Scotland. “Over the last year, it’s been fairly flat,” Sinclair says. But a glimmer of hope is on the horizon: individual performance-based bonuses are returning, she notes.in some ways I’m glad that the market for programmers here has collapsed. With all the hype people who had no interest (or talent) in programming entered the field driving many of the best people away. I started programming at the ripe old age of 10 and by 16 was helping a friend write software for the IRS. I only program for fun anymore as I cannot make a decent living at it. Oh ,way way back I was working in the computer lab at the University of Cincinnati , several students came to me and asked to help them with programming. I was able, within a few seconds in many cases, spot the bug and tell them how to fix it. The professor came in and said, “wow your really good, how long have you been programming in FORTRAN?” I told him that I didn’t even know that was what they were using as I never used FORTRAN. A good programmer is a good programmer. Oh my fist post was an automated system I’m using to spam Blogs(for the upcoming election I want to make this an issue), I’m sorry I didn’t mean to spam a personal blog outside the US. It was my first C# program(only been writing in it for about an hour) The hardest part is getting used to a new IDE.

  8. The market, at present, is quite hot in Scotland. I keep getting increasily desperate emails from recruiters trying to tempt me away. One possible reason for this – considering the increasing amount of off-shoring is a potential consumer backlash. There have been many scandals in the news recently about data being lost (even within the UK, but some was outsourced) and a lot of consumers are concerned about identity theft and so on. Many companies have discovered that they almost committed comercial suicide when they off-shored their call centres (I phoned one recently to be told “Hello, you are speaking to Mandy in Newcastle. How can I help you?” They are keen to emphasise they are located in the UK). I think companies are also concerned about the potential backlash if they out sourced other services where sensitive data may be lost.Good luck with raising awareness of this issue.(see also my follow up: http://blog.colinmackay.net/archive/2007/12/19/1573.aspx)

  9. 10 years ago I was one of the top IT guys at a little company now called Converges (mostly call centers for DirectTV, P&G, Kellogg’s etc. They had some of the best people I have ever had the privlige of working with. They were smart, knew their stuff and worked like dogs. We were required to work a minimum 50 hour week, 80 hours was not unusual to me. Then one day they gave us all the sack and moved the call center to Bangalore. I was working my lunch hour at the time and was told to leave right then. Unfortunately for them I had taken the main Mail server apart. I had made a backup of the system as I had written custom software to do the job, it was on an unlabeled floppy in my desk (with an oddly named backup on the server). A few years later I ran into my old boss who said that when I left the mail system went down for almost a month and they had to hire IBM at a cost of $1.1 million to restore service. I was shocked and asked why they didn’t call me, he said well after I gave you guys the boot I got one, so I didn’t care. I puttered around doing consulting for embedded systems and PLC controls for a steel plant, then gave up and went back to delivering pizza. I worked with two aerospace Engineers, one other Electrical Engineer, and a guy finishing his doctorate in N. Physics. We joked that we could be the worlds first nuclear capable Pizza place. P.S. I like your Blog , some interesting stuff here. Your a much better writer than I am.

  10. Hi, I’m a silly old bugger who learnt the ropes the hard way. I am amazed at how academics are training young people. There seems to be the attitude “If it works it’s okay.” No time for testing other than “I tried it.” Nobody thinks about what is going on in the hardware: “I am a ‘concept’ programmer.”Using OO is wonderful; just involves a lot more push/pop cycles. What are they you say? That’s just it. These days the kids have no idea about ASSEMBLER, nor any idea of what a compiler does: they’ll argue stupidly about X++ being ‘better’ than x = x + 1, yet have idea of how many memory redirections they introduce. And, employers chose staff on “what packages do you know?” rather than “Do you know how a cpu works?” Anybody can learn a package from a book in a couple of weeks. For example, it is easier to get a job as a technical writer if you know package xyz, than if you know the subject matter, and can express youself in clear concise English. (How many of you thought that the above ‘nor’ ought to be ‘or’?) I’ve many years of experience, yet I see advertisements asking for staff who are ‘experts’ in a hundred fields, for a minimal salary. I think that managers play a bit part in the development of their staff – negatively.

  11. As a third year student currently studying my computing science degree, i find it extremely insulting that you believe we only scratch the surface and write programs without knowing the underlying effects of the instructions we execute.In fact all good Computing science degrees go into considerable depth about operating systems and hardware as well as the “scratching the surface” subjects.Additionally, we were using assembler in first year.There may be many employees who have not been formally educated in computing whom have in depth knowledge in how to code in a particular language, but don’t care about the underlying concepts. the truth is it must be extremely difficult for these people to get jobs nowadays. Every position i see advertised is looking for applicants with a minimum of a 2/1 honours degree.The basic fact is that gaining a computing science degree is difficult (although i wouldn’t go as far as to describe it as grueling).Especially a good degree which attempts to cover all aspects of computing science, it is a steep learning curve for some students to go from knowing nothing to knowing “everything” in four years.As for the graudate/experienced applicant issue, theres obviously a tradeoff to be considered. In the short term, paying an experienced applicant more may be a disadvantage, but training a graduate, or a person new to the industry from the ground up will have it’s own costs involved of both money and time.Of course i have to be biased and suggest that the industry as a whole employees more graduates. Looking at some job descriptions the “essential skills” can be lengthy and frightening. And a graduate cannot get to that position without getting their foot on the ladder first.

  12. @Aileen I’m guessing you are actually responding to C Carter rather than myself as I never made any such statement about computer science degrees.You are right that the industry does need more graduate schemes (and good ones). I think some of the senior guys we interviewed had never been “apprenticed” properly and had been hired by a company that just wanted a cheap software developer without thinking about what that really meant.Also, the lengthy “essential skills” list should be ignored. So long as you are hitting the core ones you should do okay picking up the peripheral things. However, I think that stems from the same problem that graduates are not being “apprenticed” properly so hiring managers find out that many people just don’t pick up new tools or frameworks easily so they want knowledge of those things in advance.Finally, as for the adverts wanting applicants to have a 2/1 honours degree, it doesn’t seem a good metric to me. I know some excellent people without a degree. I know some really poor developers with a first class degree or higher. It is a academic measurement rather than a practical one. However, I don’t have a say on how every software developer is hired. I think I have found a good way of determining a good candidate from a bad one, and so far the strategy has worked.

  13. Let me paint you the other side of the coin.Quite a few years ago, when i had finished my Computer Science degree in ‘University A’ and then later went to ‘University B’, I started seeking a ‘career job’ in programming / IT development / IT consulting / and even maybe web designing (which I had took upon as a hobby during my years at Uni). Essentially looking at a LOT of different possible careers that are possible out of a Computer Science degree (given the right credentials).And I didn’t limit myself geographically. I seeked a job from all the way down to London to all the way up to Yorkshire and Manchester (and even Wales), willing to relocate. Admittedly I was not seeking a job in Scotland but the weather was the main factor (or my impression of what the Scottish weather is).Yet the problem / catch 22 has always been, “no experience”. Most jobs needed 3 years experience (and I would be the first to admit that there is some knowledge you can only pick up while working and not while being sheltered by the University). Nobody wanted 0 years experience. In my first TWO months of constant applying I was called to only 2 personal interviews and one phone interview. One was for a consulting firm, whereby I aced their tests putting me in their top 2% percentile, one for a linux/DB job and a phone interview for web designing. yet the obstacle of no experience and having to… develop further skills, (plus perhaps the unwillingness to “sell BS” / lie in order to land the job) only took me so far.After months of seeking a job as a fresh-out-of-university eager would-be employee, I decided in the end and seeked a job back to my native country, Cyprus, whereby most employers don’t even know what IT is. (this was a few years ago) I stand with you Colin on this, in terms that a lot of “established developers” (aka senior), only want to do what they already know, what they feel comfortable with (heck in my current job the “senior” programmers only want things to be done in a very specific, rigid (and often wrong) way just because it’s the only way they feel comfortable or because they are lazy or are afraid of what they don’t know and don’t want to adapt – the management hardly knows about IT and is thus left at the mercy of its senior programmers when it comes to decision making). Unfortunately, the way by which most companies work however, in the way they recruit, favour such “employees”. Thus the vicious circle never breaks. You too, had begun using exactly the same methodology. It took you three months to consider the alternative, but at least you had the flexibility and insight to do it, most employers don’t.(I partially blame the way Universities hand out Computer Science degrees – some people finish their degrees and don’t even know what a class is)

  14. @Web Design Company: Yes, it can be much better. But, as I said before, only if you are willing to apprentice the graduate or less experienced person properly. You work for a web agency and, in my experience (sorry, I don’t mean to tar you with the same brush as others, it may not be fair on you), that means burning out the unsuspecting graduate (or even a naive senior) then spitting them out afterwards. My company used to do that until I started fighting hard to stop it (it costs a lot to hire in developers, and if you are doing it to replace rather than expand then that is an expense that can be done without). Our developer attrition rate has now dropped dramatically.

  15. Interesting article, well done!The only real difference is how well they can solve a problem. Developers are easy to find, but people who understand what you’re trying to do and are fanatically committed to do things better isn’t.Newbie developers are a good long-term investment, but there’s a steep learning curve associated with hiring and nurturing them into superstars. The trick is to nurture the programmers so they feel more confident in their abilities and more fulfilled at work…

  16. Hey, nice post. And yes, it is very hard to hire good software developers because it is a difficult job. One should be very cautious before hiring,the person came for the interview should have basic and advance knowledge of the concerned software.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s