Recruitment Agents, eh?

Today I received an email from a recruitment agent that seems more than a little mixed up in terms of the skills required.

Dear Colin,

Are you a developer? Are you fluent in Italian? If so then I have a client that would be really interested in hearing from you.

Due to the new venture, any potential candidate would need to be an Spanish speaker ideally bilingual in Spanish. Please note the role is based in Manchester but would involve some travel to Spain.

[Emphasis mine]

In order to spare the recruiter’s blushes, I’ve removed any identifying information. Incidentally, if you are curious the pay was absolutely rubbish!

Some advice on CVs

As a lead developer part of my job is to review CVs for developers that we are potentially going to hire. There are, however, some people that I think do put the most inappropriate things on their CV. I’m not talking about the really obviously inappropriate stuff like admitting you won some competition in an Ibiza nightclub on an 18-30 holiday, I’ve not seen anything a salacious as that. I’m talking about the inappropriate things that sound like they should probably be on a CV.

There have been various reports in the media recently about identity theft and CVs. And yet, I still get emails from people with all sorts of personal information in them. I imagine that recruitment agents get even more than I do. But, if you are sending off your CV can you really be sure that you are sending it to a legitimate source?

There is nothing stopping an identity thief setting themselves up as a fake company and posting job adverts. With a website and a number of job adverts posted around an identity thief could receive hundreds of CVs all containing some very personal information.

Recently I’ve received CVs containing details such as Date of Birth, Address, various government Identifiers (National Insurance numbers, driving license, SSN, Passport numbers, etc.), marital status and so on. Enough for someone to steal the candidate’s identity.

In the UK we have various bits of legislation that mean we are not permitted to discriminate on grounds of age, gender, martial status, race, etc. There is therefore no need to put any of that information on your CV. In fact, some hiring managers might dismiss your CV immediately if it includes information like that because they don’t want to be seen to discriminate in that area.

So what sort of information should you put on the CV?

First, this is obviously just my opinion and some of it is limited to software development roles.

I’m interested in your experience, if you have less than 5 years experience as a developer telling me about any formal education is also useful. After 5 years just some one-liners about your formal education will be sufficient. If you did a computing/computer science/software engineering degree then give some information about your final year project (and the vast majority of university course do) then give some information about that. Obviously, if your final year project was a bit vacuous then you might want to hide it.

Any recent training is also useful, and I do mean recent. If it is older than about 36 months then leave it out. Also, it needs to be relevant. Telling me about the evening classes you took in pottery last year may be interesting to you, but it has nothing to do with software development so leave it out, or move it to your hobbies section.

If you have won any worthwhile awards or if you do volunteer work put that in too. If you have given any presentations at conferences or user groups, written any articles, maintain a blog or personal website then put these things in. If you run a web site that is less than employer friendly then make sure you do that under a pseudonym that can’t be tracked back to you, it might hurt your chances, remember that includes your WHOIS entry.

External hobbies and interests can be useful on a CV, and other people think they are a waste of space. I like to see what other things you are interested in, but I’m not going to be too fussed if you don’t include it.

Finally, make sure that you actually include contact information. Just your name, email and phone number is good enough at this stage.

DDD6 Feedback

Well, I’ve received the feedback from my session at DDD6 and here it is:

Overall: 3.73
Knowledge: 4.13
Presentation: 3.93
Content: 3.4


By the looks of it, the session was quite well received by most people. As you can see from the Histograms there are a small number of people who obviously really didn’t like it, but you can’t please everyone I suppose.

I also received some text comments to which I’d like to respond.

One person indicated that the panel re-enforced what he already thought about recruitment agents. I wonder if that Included Karl. I suppose he did spend some time apologising for the rotten apples in his industry. It is unfortunate that a few rotten apples can spoil the whole barrel. I’ve had my (un)fair share of dealings with rotten agents, but I’ve also dealt with some really good professional ones.

One person wanted more questions that were relevant to contractors. I actually did try to get a contractor on to the panel, but unfortunately it wasn’t to be. Also, only 2 questions directly mentioned contracting or freelance employment, which actually represents 40% of the questions (There were only 5 questions in total). I’m sure that had there been 3 questions that dealt with contractors, there would have been a comment from others that it was too one sided in the other direction. Finally, remember the audience were given an opportunity to direct the questions by submitting questions. I did my best to choose a fair representation.

One person regarded Barry Dorrans as “the bastard boss (and proud of it)”.  However, as I recall, Barry did say that this was just his interview technique to ensure that the candidates could stand up to difficult clients. I know some people may not like that, but if that’s the way the business operates then it is important to know if a person is likely to fold under pressure from a client. This also reminds me of a story I heard a while ago about interviewing potential police officers. One of the questions upset of of the candidates. The question was “What would you do if someone vomited on you?” However, it is a valid question. Police Officers are regularly vomited on and so the question helps the interviewer understand how the candidate will react in that situation.

One person thought the topics were too narrowly focused. From my point of view it was a difficult call. The subject area is quite large and I wanted to cover a variety of topics. If I had been too broad with each topic I’m sure I would have received complaints too as we would have had to spend more time on each topic. As Bart Simpson so succinctly put it “You’re damned if you do! You’re damned if you don’t.”

Finally, although someone did say they thought the session was “very good” they didn’t find it interesting. I’m wondering if they submited any questions for the panelists? If they did, did we go off topic with it? (We actually asked every question that we received – although we did have some in reserve in case we ran out.) This session was highly geared to running in the direction that the audience (hopefully) wanted it to go in. So, I am obviously disappointed if someone attended and found it not to be interesting.

I also received some compliments, but I wanted to respond to some specific points that were raised.

Follow up on hiring a software developer

A while ago I wrote about finding it difficult to hire good software developers. We have now hired someone and it took us 3 months from the first interview to the last. We changed our strategy a couple of times throughout the process.

First we were told we had to go through the internal HR system which puts adverts out in job centres* across the UK. I don’t know why as we don’t do relocation so why not just stick to the local job centres. We also went to a recruitment agent after persuading HR that we really needed their services. For all the flak that recruitment agents get all I can say is that at the very least they gave us CVs that were of high enough quality to warrant an interview. All the CVs from the job centre were useless. Half of them didn’t even have any IT experience on them at all, let alone any evidence of software development work.

As we started to interview it seems obvious to us that the vast majority of senior software developers have stagnated. I did that once and it cost me 3 months unemployment – I am never doing that again.

We would ask these “senior” guys basic questions about OO (such as “What is encapsulation?”) and we’d get back blank stares from most of them. Okay, they’ve done work with SQL Server so some basic questions about indexes and joins (and I mean very basic like “What is the advantage of having an index?” or “Can you name any of the types of join SQL Server supports?”).

After a while we realised that the people we interviewed always perked up a bit and became more enthusiastic when we started talking about SQL Server. We got more right answers, more confidence and more enthusiasm in that area. So we changed the order of the questions around putting the SQL Server questions up front to give people a bit more confidence in themselves rather that just ask questions on skills in the order in which they were listed on their CV.

We also gave them a little programming problem. It was based on the Fizz-Buzz (or Buzz-Fizz) game that Scott Hanselman mentioned in one of his Hanselminutes on Hiring and Interviewing Engineers. I wrote the program, then I introduced a bug. We would give the candidate the paper with the program on it and the output that the program made with the error in the output highlighted. We would then ask the candidate to first of all tell us where the bug was and secondly to suggest a solution. I was shocked at the number of people that could not even point out the bug.

What was interesting was the the guy we eventually hired only looked at the code for about 5 seconds and pointed out the exact line and why it wasn’t working. When we asked for a possible solution we got an answer straight away. Given the speed of the answer we asked a third question (never before asked).

Before I get to that third question here’s a little background. When I developed the question I put it round the development team for comments and just to see how fast our existing developers could solve the problem to get some kind of bench mark on the time needed for the question. I got a number of different correct responses for the way to solve the problem (even from our DBA who hadn’t programmed in C# before).

So, the third question asked was “Can you think of any other ways in which to fix the bug?” and very quickly our candidate came up with two further solutions.

I’ve skipped ahead slightly in the story, so I’ll go back a bit. We were still having problems with senior developers not being able to answer basic questions. And when they did get as far as the practical test, they failed that shockingly badly too. Although, most of them failed because they did not read the specification and therefore did not do what was asked of them.

So, we changed out tactics slightly. We decided that as we had a fixed budget in which to hire someone, we would look for a graduate and use the extra money for training. We started getting in CVs for recent graduates. These were more difficult because a graduate doesn’t have so much experience. So we looked for things that showed commitment and an interest in technology. It didn’t matter to us that the only language they might have used was Java as we could train them.

But when it came to the interviews these guys really shone out more that the supposedly senior guys. They could answer all the basic questions. They were willing to admit when we’d reached the limit of their knowledge. (Either that, or they hadn’t learned to BS their way through answers)

When it came to the practical test, they showed some real promise, even if they did get the occasional thing wrong. Compare that with our earlier experiences where one “senior” guy had spent two hours in front of the PC and had written two lines of code in that time.

In the end we interviewed about 4 guys who had recently graduated and this was going to be their first or second software development job. And we hired one of them. If we’d gone for that strategy to start with I think we would have taken a lot less time and we wouldn’t have been so frustrated with the whole process.

The one thing we did not consider during the whole process was dropping our standards. I think we would have regretted it if we had. What we discovered was shocking. That is something I’ll cover in another post.

Some advice

As I mentioned, a lot of the senior developers we interviewed had somehow stagnated. They weren’t interested in software development other than as a 9-5 job. One even said in answer to a question “I’ve not been on a training course about that yet”! We only ask questions about stuff they’ve put on their CV. If they don’t have ASP.NET, for instance, but they’ve spent time doing windows applications we’ll ask them about Windows applications and we’ll skip ASP.NET. If we then need them to do an ASP.NET application we are confident that any developer worth their salt can pick it up in a short time. But, if they don’t have the fundamentals then I can’t see how they would cope.

So, if you are happy to go with the flow and just learn what your company needs you to learn rather than keep your marketable skill set up then feel free. Just don’t expect me to consider paying you the big bucks only to send you on lots of training courses for basic things like OO, C# and SQL Server.


But, if you do want to get out of that rut then here is some advice to you:

  • Find a local user group and attend their meetings. You get to meet experts. You can talk to them and increase your understanding. If you are in Scotland there are a number of user groups already:
  • Read stuff – And not just when you discover that you need it. Subscribe to a relevant software development magazine. Many companies will pay for that for you as they see it as an inexpensive form of training. Just read articles about software development to broaden your horizons. If you take a train or a bus to and from work this is an excellent time to do this.
  • Listen to stuff – There are some excellent podcasts out there that you can listen to while driving. DotNetRocks and Hanselminutes are two of my favourites. Scott Hanselman even has a show on how to be a better developer in 6 months.

You don’t have to spend a lot of time or money picking new stuff up. A user group meeting or two per month. That really doesn’t cost a lot. Some user groups charge, some don’t. If they do it is a modest amount to cover the cost of the venue and maybe some food and drink. In terms of time it is about 5 hours per month. It might be a wee bit more if you socialise after but that brings additional benefits. If you socialise people get to know you and if there is a job going it is great to have some contacts already.

Listening to podcasts in the car is practically free. You can get MP3 players hooked up to in-car stereos now and if not many will have CD players that can play MP3 or WMA files (The Toyota Yaris certainly does) so that only costs you the price of a blank CD for every 15 hours (roughly) of podcasts. In terms of time it only takes a few minutes to download and burn the files to a disk or transfer them to your MP3 player. In terms of time listening to them it is also free because it was dead time anyway. So that’s an additional bonus – you’ve turned some dead time into something useful.


Other posts on a similar theme:


* If you are from outside the UK, the job centre is part of the government’s department for work and pensions (DWP) and it is tasked with dealing with out of work people and helping them back into work.


Rant: I'm so frustrated I can't even think of a title!!!


My copy of IT Now, the magazine of the British Computer Society arrived earlier this week. I’ve only just got around to reading it. Their careers section got me thinking. There is a link to in there and I had a little look around. According to that site roughly 10% of all IT jobs are for C# while 7.5% are for VB (any flavour). Staggeringly 1% of jobs still require VB6!

For C# developers the UK average is £39K. On the face of it, you could say that it is lop sided because it includes the salaries in the south east of England. However, you also have to remember that the figures will include graduate salaries from across the rest of the UK also.

If you want to drill in to Scotland and Glasgow the rates naturally come down. £33K seems to be the average. After all the interviewing we’ve been doing recently I’ve come to the conclusion that average means the ability to push buttons on wizards and copy and paste code snippets and then spend hours wondering why it doesn’t work. Average means not being able to read a simple 3 table ER diagram with some relationships. Average means not understanding a UML static class diagram with a base class and two derived classes on it.

In April this year, an article was published on the BCS website that stated that “Employers are finding it increasingly difficult to find job candidates with the right IT skills, putting the candidate in a strong position.” We are finding exactly that. We are getting quite a few candidates that are just in to get a second offer to play two companies off each other. However, after two months, we’ve not found anyone suitable enough to put an offer out to. I can’t help but think that there are some companies that are taking on board people that really don’t have the necessary skills to do the job properly.

I am increasingly of the opinion that software developers need to be licensed, at least for certain pieces of development, due to the risk of fraud or damage if the system breaks.

Earlier this week I was going through some code as part of a migration. The code was written before my time and by an outsourcing company. This was before the company I work for decided it was getting such a raw deal that it wanted to in-source its software development. I was searching the code base for a reference to a stored procedure that failed to script properly… And I found it… In the presentation layer!

Not only that, but it was referenced on line numbers exceeding 1500! Hadn’t these people heard of custom controls, user controls, 3-tier architecture, and the like.

What really got me was that the application was very much like another one that was being migrated. There were several places where some common functionality could have been extracted out, put in its own class then referenced from both projects. But where’s the profit in that! No point doing anything sensible like that when you can charge twice to fix the same bug.

I wonder how much it cost to get these things developed. I wonder what the TCO (Total Cost of Ownership) actually is.

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.