It’s that time of year again or basically Christmas for Fortune companies with money to spend. New graduates with their 4 year degree (5 year if it is engineering or computer science) and ready to enter the workface with the naïve optimism of a freshman. As a company it is your turn to decide, should I hire the new graduate with no real-world experience? Can a new graduate in computer science hold her own in my company and add real value?
Is Computer Science the right Degree?
Computer programming is different from a lot of degrees. Graduates in computer science are expected to enter the workforce and immediately start programming and adding deliverable value. In fact this is one of the reasons science based schools can get a bad rap over technical schools. It is believed that science oriented curriculums offer too much theory and not enough real-world work.
Rather than attempt a bulleted list of my opinion on the matter allow me to show the sample course work from a typical Artificial Intelligence class worth 3 hours of course credit:
- Project: Tic-Tac-Toe game
- Project: Checkers game
- Project: Chess game
- Project: Program a robot to back-up a trailer
- HW: Weekly algorithm assignments
Crazy, all that theory right but on close inspection each of these projects is a major work (at least for the rookie) in programming. This is just an example. Computer Science, even in a theory heavy school is fundamentally full of programming. The difference being that instead of coming out of school knowing one language a graduate in computer science can often program in at least 5. I don’t want to go into a massive argument about which degree is best or what school is best or whether a new hire should have 5 years of experience; I merely want to offer that a graduate in a good computer science school has done a significant amount of programming.
I don’t believe you
And you are right to challenge my judgment because there is another task that recent college graduates with no work experience are also very good with … cramming. Even at a good CS school there are graduates that take the same classes as everyone else yet graduate with a good GPA and no understanding of writing software, heck they can’t even compile an application in Java. So can we trust even the best school? I see your mind cranking away, “I know, I will contract an automated assessment firm”.
Unfortunately, that doesn’t work. There are several major obstacles that these cannot correct. We have already established that a recent graduate is an expert at cramming, especially if they graduated and have no other skills. An automated assessment is not going to weed those out; in fact since many automated assessments have fundamental flaws you may actually give lower scores to better programmers. There are many functionally correct answers that a real programmer would never give based on experience alone, yet these assessments, which often go by a book, will expect as gospel. With those major flaws could there be anything else? You bet, rampant cheating. How hard is it, really, to pay someone to take a test for you online?
Just great, how can you test a new hire then when you need an expert in the language of choice? Well first we need to change our thinking. New graduates are not about hiring immediate experts, new hires are about finding diamonds in the rough, polishing them, and then reaping the rewards. With that mindset we are not looking for things an automated assessment can tell us, we are looking for things an automated assessment can’t tell us.
My absolute favorite challenge for a new graduate is to ask them to compile a hello world application, on-site, in a language they don’t know. This simple, fundamental challenge is trivially easy to any exceptional candidate but presents itself like Everest to the uninitiated. Want to step it up a notch, don’t include the compiler on the test machine and don’t allow an IDE. Why can’t this be part of an automated assessment? This is too easy to cheat on plus part of the assessment is watching the candidate adapt and react. My first interview I was handed a book on C (not C++) and a printout of questions with the instructions program these and if you are done in an hour you are hired. It is incredibly effective. Of course, in my day we didn’t have StackOverflow or CodeProject and Usenet could take a few days for a response so this was likely even more challenging then.
The fundamentally concept is can this new graduate learn fast? We can teach concepts like version control, meetings, and test driven development all with very little out of pocket expense but what we can’t teach is fundamental learning skill and a capacity to compile. I don’t want to leave you thinking you should only test for Hello World in an unknown language, that isn’t deep enough, but I don’t want you relying on automated assessments as they are completely worthless.
Is Training that Easy
Part of the life of managing a software team is high turnover unless you are offering the highest salaries and the greatest benefits available and even then Apple can probably steal your people. This means that you need to be focused and prepared to train your staff. The more effective you can train the better, overall, your team will be. Think of it as business continuity for the development team.
Quick thought exercise, if all of your team leads quit today without notice how bad off are you? In most organizations you are likely in serious trouble. Because of this training is so fundamental to the development team that indoctrination of a new graduate should be a non-event.
Your development team should already have an internal video documenting the source control procedure. There should be a wiki, tips, and tutorials covering every Q&A about the source control system and easy ways to find it. Every team member should already be 100% onboard and willing and able to easily, consistently, and reliably train any new staff, even the new graduate, in source control. And, to be honest, source control is one of the easiest training topics to have covered but that does not mean it should be left to organizational knowledge.
Your job, as the development manager, is to make sure your team is able to rapidly train any new hire (so long as they can code) in the complete aspects of the group environment. Any deficiencies should be addressed creating a comprehensive training system so that when you look at the new graduate you don’t say, “I have no time to train this individual” but state instead, with confidence, “In six months, this person will be running the place”
Let’s discuss value here for a moment. I mentioned six months previously as it is a good rule of thumb. New graduates will take time to adapt. Depending on your luck in hiring you may have an immediately billable graduate or one that takes a few weeks but in the coming months they will all converge, assuming good training and environment and become competent programmers within about 6 months. Sure they will learn more over time as they practice their craft but to expect years of training after 5 years of intense college is not realistic. If you have hired the right person they will be completely ready in six months.
But, you say, I can’t afford to train someone for six months! No? Why not? A new graduate outside of Silicon Valley commands about $70k and a programmer with 5 years experience $120k. Assuming your new graduate will leave you between 2 and 5 years what is your cost?
Potential five-year savings for the new graduate is $200,000. That is a lot of money. Notice there is nearly no savings in year one. Business is not about making short-term decisions but long-term decisions that offer the best future for the company. Even if your new graduate leaves after the second year you are left with a savings of over $60,000.
If you have a large enough team with enough skill to go around hiring new graduates to handle the natural team attrition with significantly impact your bottom-line in a good way. Plus, you will have been forced to master new hire training making your teams significantly better able to handle extreme negative events like the mass exodus.
What should you do?
There is no perfect way to handle all scenarios and if you are not comfortable with hiring new graduates with no experience then that is your decision to make. However, I firmly believe that this is a significantly missed opportunity. Most firms insist on at least two years experience first and that is a complete waste. Any great graduate is will be demanding significantly more salary in their next venture or will be the rest of the group. In fact, hiring developers with two-years experience actually might be the worst value buy possible. You still have to train and indoctrinate them, you still run the risk of bad hire, and you don’t get the advantage of entry level wages for outstanding candidates.
How do you get new graduates? Be a guest lecturer at local universities, actively hire Computer Science students part-time even when you don’t need them (at the local college rate for their year + a small bonus). Hold meet and greets. And, if you find a perfect candidate, hire them even if you can’t afford it. Turnover is such that you will likely still come out ahead.
The new graduate is the real secret of computer programmers. Those in Silicon Valley really know this and that is why they are so focused on college recruiting. If you wait until they have experience you have really missed the boat.
Having Trouble Enticing New Graduates?
I was in school before the DOT COM bust so this was a common topic on campus. Consensus was anyone of use would drop out of school for the BMW lease that we read about being used to lure graduates. Sure, intrinsic motivation is great but don’t underestimate the good, old-fashioned, bribe and a sports car goes a long way with new graduates. If anything else it will get you buzz.