Hiring is nearly impossible

August 9th, 2007

On my previous post I touched the subject of hiring, and how it’s being a big stopper for us. This week I interviewed a handful of people, and almost all of them made me cry.

One of the questions I ask on the phone interview is “do you participate in any open source initiative”. An OK reply is “not really, but I have used X and Y, and reported bugs, and asked questions on their forum”. A great one would be “Yes, I’ve been accepted as a committer for project X and started project Y. It does make me a better developer”. One of the answers I got this week was “What is open source?”

I also ask about MVC and Domain-Driven Design. If they have used some or all of them, I ask them to explain what they are and how it was used. Some adventuring in telling me that they know both, but for some reason cannot explain them.

Some emphasize their certifications. I couldn’t care less. The day MS releases a certification about making you a better programmer, I would consider it, but I don’t think that is going to happen on my lifetime.

But all of that prevent companies from growing. You start to reject consultancy and developments because you don’t have the capacity. For the kind of projects that we have here — definitely non-trivial — and for the kind of clients that we have — most of them technical people that reads code and knows how to tell the good from the bad — I just cannot accept an average programmer to join the team. He could kill in no time the reputation that we have built so far.

Now I know there are good people out there. I have worked with a bunch of them. The question is how to attract those people, making them leave their companies and joining yours.

I dont think money is sole answer. It must be something related to challenges, freedom to try new designs and tools, and an ego boost associated with the company’s name. The more freedom they have, as long as their are accountable on estimating and delivering, the better they feel.

That’s my guess, would love to hear more opinions.

26 Responses to “Hiring is nearly impossible”

Pedro Says:

Oh gosh, I miss Vesta so much… what a pleasure to see these pictures again..

deerchao Says:

Just curious, would the first OK reply make me pass your interview?
That’s exactly what I’ve done with open source.

hammett Says:

@Pedro, I miss it too.

@deerchao, it would be OK. Definitely better than “what’s open source?”

Brian Says:

In my current job, I had to find a replacement for myself (I’m transfering over to a new group). I went through over 200 resumes, finally getting down to a list of 20. I sent each an email asking them to check off whether they were familiar with a series of things. Among the items in the list were O/R mappers, unit testing, and MVC. I also asked them to outline any open source projects they use or are involved with.

Of the twenty, less than three noted any knowledge of an O/R mapper, unit testing, or MVC. None had any exposure with OSS (except, perhaps, as a consumer).

I started asking people for a list of third-party products (whether commercial or OSS) that they use in their projects. Many say “none”. Some mention MS stuff like Enterprise Library or ATLAS; others mention stuff by ComponentArt or Telerix. Almost never do people mention any OSS O/R mappers, frameworks, logging utilities, test/build libraries… It’s depressing how much these people miss out on.

One thing I found as a good test of a developer is to ask them a question:

“You are writing an application which has to generate log files. The log files must be in text format, but the format of the log file and log file path can change based on which department uses the application — some may need CSV, some may need pipe-delimited, some may need something more esoteric. Knowing this, how would you implement logging?”

Most people talk about having different versions of the app for each department (wrong). Some talk about a base logging class and multiple subclasses which implement specific functionality. Few talk about “searching the web for a logging library I can use” or mention NLog or log4net specifically. Throw out the most, hope on the some, and hire the few. :)

DeveloperB Says:

It’s now so hard to find good developers that we’ve had to outsource to Russia (we’re based in the US). The standard they set was high.

Markus Zywitza Says:

Hm… I fear that 19 of 20 interviewers see it another way:

OSS(1): He will work on charity software during worktime.
OSS(2): No one to sue when there’s a bug.
OSS(3): No company – might be security risk, having backdoors etc.
MVC: Esoterical thing from Extreme Programming. Won’t need that.
TDD: Will waste time writing code that never gets to production.
DDD: We have consultants with Visio for that.
ORM: Databases are good. DataSets are good. 3rd party products are evil.
Generally: Microsoft has a lot of useful libraries and developer products. We don’t need anything else (unless we program it ourselves)
Enterprise Library: MS best practices. A must-have.
MS Certifications/MVP: An objective standard of proven knowledge.

Please note that these are just my experiences, not my opinions…

-Markus

hammett Says:

@Brian, did you actually hire any of them?

@Markus, I totally share the feeling.

Luke Melia Says:

I feel your pain, hammett. Hiring is the most difficult part of my job, and the most important. I’ve interviewed about 60 developers personally over the last two years and passed on many more resumes.

When interviewing folks who have evolved as developers using Microsoft technologies, the most common anti-pattern is people who get all of their developer education and news from MSDN. This is true for a startling number of people I interview.

Our team is at a point now where we can effectively teach the “advanced” concepts to a talented programmer. However, anyone who has worked as a professional developer for a 5+ years and avoided learning these concepts has a big warning sign on their head for me.

But… they are out there. Make your team a shining beacon through the fog of mediocrity and you will attract the talent you need to grow

Your customers will thank you for waiting to hire the right people.

Good luck,
Luke

Mike Says:

One thing that I’d be looking at for a new job isn’t just money or even software related reasons. There is a rich cultural draw to where you are at, too…I know I’d move to Brasil if I could to do this work. But I wonder whether the complication of hiring non-citizens is worth it.
RE:Open Source…I spend tons of time digging in the codebases for OSS but simply don’t have time right now to make any meaningful contributions if I were accepted. Someday…

Darius Damalakas Says:

We have the same problem in our place. We are situated in Lithuania (near by Russia), a very small country.

I know that there are people who know good stuff (O/R, logging, NHibernate, etc), and know how to do programming, but they all have jobs, and none or few are involved in any open source project.

I accepted the fact that’s its actually impossible to hire people with skills we want, so we rely on hiring people with good potential and thei education.

Last, but not least – MS stuff is banned as much os possible >:)

Tim Scott Says:

It sounds like your strategy is to staff with high caliber experienced people. That’s a great strategy for a lot of reasons. However, you can never get big that way.

If you look at large consulting companies of any kind, and you will find they tend to pursue a different strategy. They find raw talent and feed it into their system. They often prefer no experience to some — fewer bad habits to unlearn.

You give up a lot with this strategy, but it’s the way to growth. If growth is your goal, I think you gotta figure out how to find people who were like you before you knew what MVC and ORM were and then show them the way.

Rezlaj Says:

That’s true, it’s hard to find those types of programmers. But, is it really all the fault of the programmer? I am from Argentina and I think it’s a symptom of countries that serve as outsourcers.

The goal of the companies in our countries is to provide a better price, that’s it. They’ll charge as much as possible, pay programmers as little as possible and keep the difference. If they stay within common technologies they can get cheap programmers at regular intervals because most are mediocre at best. Universities don’t produce quality developers, and, in my experience, almost none graduate because they have to work while they study, which stretches college to 7 to 10 years.

The systems are not maintainable you say? who cares? the companies charge more to maintain the systems, or they have to be rewritten eventually. The hard reality is that even with the maintenance overhead, it’s cheaper to outsource.

My point is that the whole system is not made to produce better software, it’s made to produce cheap software as fast as possible. Every once in a while a company will come that will want to do things differently, but it’s going to be a hard ride.

That being said, I’m an aging developer (31 years old) working almost solely with the technologies you mention. The problem? Age combined with non-standard technologies makes for an explosive mix. I’m rapidly narrowing down my chances to get jobs in the future. Not everybody is willing to do that, and it’s understandable. Risk takers in countries with shady economies and unstable governments are very rare.

Now, the rest of the world doesn’t have any excuse :P

hammett Says:

@Luke, I feel the same when, during an interview, the candidate says the best source of knowledge for him is MSDN. omg!

@Mike, can you contact me at hammett at castlestronghold.com so we can talk about this?

@Darius, maybe we should look for Java developers that are not religious about .net ;-)

@Tim, I see your point, but how can I allocate non-experience developers, perform a damage control and yet train/develop his skills? My clients wont pay for that. I can see your model working for different projects/selling methods/different client profiles. Right now it doesnt apply to our environment. Hopefully I will be able to change that soon.

@Rezlaj, you should be more optimistic. I know there are good companies in Argentina. Worst case scenario, you learn portuguese and join us ;-)

Rezlaj Says:

hammett, I worked in Brazil for 4 years, I’m not a wiz with portuguese, but I can read Saramago and enjoy it :) I start on Monday at a new company (Verizon), if that doesn’t work I’ll certainly keep you in mind :)

knocte Says:

I have a very similar case here in Madrid (Spain), I’m the head of an R&D department and I find very few interesting people. I have surrendered in trying to find open-source-minded developers and now I consider them enough valid if they seem, at least, intelligent and willing to learn (what the hell, these are the characteristics of an opensource programmer ;) (BTW, some time has passed now since .NET knowledge is not a requisite anymore for me, I prefer Java devs to join us if they are comfortable with learning the .NET/Mono API)

And talking about the other-side, I understand also the people that are currently fine in an enterprise and don’t want to change. In my case, I would not only be influenced by money, of course, because there are other things like the location and technologies of the new job, the dreams and illusions you are giving up from the original job if you move, etc. For example, if I would be offered to work as StrongHold, the disadvantage would be to be back a web developer in general (now I only work in the normal-app world ;), but the interesting things would be that I would learn the advanced use of Castle (as I mostly have used for MVC web development the project Maverick.NET) and I would research the kinds of things I’m interested on related to it, for example, , working/extending the XSLT view in MonoRail, porting ActiveRecord/NHibernate to Mono (actually, fixing Mono to support them :( ), learning Brail and trying to think of a more statically-typed use of it, etc…

And now talking about questions in interviews, the one that I like most (and most people fail) is, although we don’t develop web applications, asking the interviewed person where would he validate the data inserted of a web form, in case he couldn’t validate it on both client & server. Most people claim to validate in the client as the best because of the save of bandwidth (instead of caring more about the security implications :( ).

Pedro Teixeira Says:

Here in Rio, the scenario is also very bleak. I started interviewing some people last month, and was quite shocked to learn that most people do not even know what inheritance is(!). [Most of them had a VB background that didn't help.] We recently changed the job opening description to focus on general concepts rather than .NET skills and we are even announcing knowledge of NHibernate,Monorail,Windsor as bonus (in attempt to also attract java developers [willing to learn c#] as well) – and yesterday we already received better Cv’s. We have a very simple technical exam (it’s an example of a simple model with one method – and ask the person what’s wrong with the code and what can be done to improve it). We’re also going to a uni. campus next week try find some people. The problem is that even companies as attractive as yours find it hard to hire…

It’s very curious that, nonetheless, there a *lot* of software companies that are willing to sell projects for very low prices and which are due in very short periods of time. And that helps managers and business clients believe the myth that development is a commodity.. However, there are very few good programmers around to hire (and even the bad ones ask for high salaries).

I’m not sure if it also happens around the globe, but in Brazil there are a lot of people who learned how to program one language just to have a job but have no conceptual background what-so-ever and do even enjoy programming. It’s quite disgusting.

slashdot also had an article this week about the same issue: http://developers.slashdot.org/article.pl?sid=07/08/06/1950201&from=rss

Luis Sanchez Says:

Here I’m again. Let me share with you my approach.

Long ago I stopped looking for people that fit our supposedly high standards. I choose to create them, almost from scratch. I started with two,three people that showed promise, passion and enthusiasm. I started a new group when the former ones began to enter in “full production stage”. Sure, some of them will leave you some day (effectively they did, grateful souls at least, far away from our strange time schedule) , but in the meantime we together built a company.

Regards !

Ignacio Says:

Hi,

I’m a senior developer/manager at a software company located in Montevideo, Uruguay and one of the serveral hats I have to wear is the hiring one soI must a agree that hiring is one of the most difficult things to do in the IT business. I feel like was me who wrote most of the previous comments on this post, every country and city has its own reallity, but as our business area is so globalized, we share the same problems all around the globe.
Anyway, our latest hirings were not based on previous experience nor formal education, we’re starting to hire only those ones who are eager to learn , are open minded and are smart, being the latter the most hard “asset” to find in candidates. We’re starting to see some positive results even though we have failed in some cases, you know, it’s hard to tell how smart and proactive a candidate is in 3 or 4 interviews.

BTW, congrats for the hard job on the Castle Project, here we’re open source consumers and we’ve a debt with the community but we’re now prototyping a small e-commerce engine (using Monorail+ActiveRecord) for a US client and we plan to make the source code available to everyone who wants to use it. The application won’t win any contest nor prize, but if, at least, it helps a single developer to start adopting OS, we’d be more than happy.

Cheers.

Brian Says:

@Hammett,

Yes, we hired one. He’s starting in a few weeks. I’ll let you know how he does.

goodwill Says:

Here in HK I got a lot of those worse programmer. I tend to agree the outsourcing problem- turnover is too high and people just work for money, you just can’t expect quality coming out from that.

Just a funny thought, would you accept somebody work for you distributed? Or get even more extreme- apply a working VISA and let somebody work aboard?

hammett Says:

Nope, distributed is complex. But I’d accept people willing to come here. But I have no idea on how complex is the process.

goodwill Says:

I tend to agree the way how some of the big companies are doing- hiring fresh people who didn’t proceed bad habits and train them up. I have did that couple times and it is doing reasonably OK. The main problem I faced is they aim for better salary once they feel they finished their ‘schooling’ and usually jumping out is way faster than waiting for salary increment internally.

Also sometime its just hard to find good people with pure heart on programming. For those who are just trying to find money for living, getting them to do something more advance (e.g. study design patterns, TDD) are difficult because of the sense ‘I have to do more than I just got a lame job’. Kent Beck stated the issue of people quality and I tend to agree its just difficult to overcome.

Eduardo Miranda Says:

I understand your frustration, it’s not easy to hire good developers, especially when you need experienced one to be productive from day one. But, as you said, they are out there, somewhere.

I know that you offer some great benefits such as 8 hours working day, english classes and a nice enviroment that enable learning and improving as a developer. The problem is that few people know that.

I think that you should the spread the word out there. Advertise these qualities for anyone who cares. This can help to atract some good developers.

Just my two cents.

Adriano Says:

Hi hammett!

IMHO the main problem has to do with passion (or the lack of) about technology / computers. Becoming a good software developer/architect/etc (as you know) demands a huge investment in time, books, etc; in my opinion, only people with a passion are willing to make such investment.

In my career I’ve meet people that can’t care less about their career option. They are not willing to invest the time/effort need to learn a new language, tool, process, well, you name it :(

On the other hand, I’ve also meet people whose eyes “shines” when talking about computer technology! People that really enjoys to work in this area; people that are always looking to something new to learn.

As you know, these kind of people are in short supply.

Best regards.

hammett Says:

Yes, Adriano. You’re one of them that for some reason doesn’t join the Stronghold :-)

Mais sobre oferta de bons profissionais « Graffiti Says:

[...] Hiring is nearly impossible [...]

Leave a Reply