Why Hiring A Computer Science Graduate Won’t Get You A Software Engineer
If you’re considering hiring a new Software Engineer to join your team, you’re in a tricky place.
Hiring programmers is hard, even for top companies like Google, Microsoft, Apple, and Amazon. Getting the process right to identify quality developers is so hard and valuable, there are companies who have received over $50 million in investment just to work on a solution. Yes, $50 million just to make a hiring platform only for software engineers in the United States.
Knowing that it’s a huge problem, we thought we’d give our perspective. Since Flint Hills Group is a custom software development agency, we have our own process for retaining top talent to produce great software.
As mentioned, hiring is hard and we can’t solve it all in one blog post. So the topic for this one is about whether you should hire a new computer science graduate or hold out for someone who has demonstrable software engineering experience.
Don’t make the mistake of thinking that a new graduate will be able to create the software you want in the way you want it.
In programming, there are different “levels.” Low level programming and high level programming focus on different areas of work. CS curricula usually focus on the lower levels of programming because the technology there doesn’t change nearly as fast. They can teach more fundamental and theoretical concepts year in and year out without having to change much.
Because of this, most new grads don’t have all the skills necessary to create good software. Fundamentals and theory only get your foot in the door. The only way to get good at writing software is to write a lot of it, and have it used by real people to do real things.
Here’s What New CS Graduates Are Missing
Because some CS projects in university are solo and one off, students may not learn how to code in a team environment. Working with coworkers to divvy up tasks is an important part of creating software.
They don’t teach you how to architect your code properly so that new features can be added later on without hassle. Students don’t develop the foresight you get when you have to stick with a code base and work on it for years.
New graduates are missing communication skills with stakeholders that let them figure out what to work on and how to work on it. It’s only with experience that engineers learn to discuss and plan projects with stakeholders.
#4. User Experience
Because CS curricula focus so heavily on deeply technical subjects, students don’t develop the creativity and intuition required to make software products that users enjoy using. Junior developers can miss many edge cases as they work on features, leading to bugs in production.
Having worked with a lot of software lets you code faster. You remember mistakes you made in the past and don’t repeat them. You keep up with the industry and know of new tools and methods for creating better software.
Because of these reasons, you should only consider hiring new graduates if your company has the resources to grow them into productive developers. That means having experienced engineers already on staff, and non-critical projects for new grads to work on.
Although some new grads list impressive side projects and internships that can show work towards overcoming those deficiencies, you need to evaluate whether this investment is worth the cost. Once you nurture a graduate and they become a good engineer, you can’t rest on your heels when it comes to compensation. Turnover for developers is high because they have an unemployment rate of just 1% and the average tenure is a little more than two years. Most of this is due to developers “moving up” to higher paid positions at different companies.
What should you look for in a software engineer?
When it comes to hiring experienced engineers for small companies, it’s important they are able to be on-boarded and contribute quickly.
A lot of industries have their own “silos” of developers. This is because programmers are valued for the solutions they create. Solutions fall into categories, and usually programmers don’t stray from the first “solution category” they fall into. If you become familiar with making web applications, and invest time into learning all of the industry specific technologies for your job, your next job is also most likely going to be creating web applications.
Compare this with someone who writes airplane control software. If they learn the industry language (the FAA generally requires Ada to be used) and pickup all the aviation and aerospace engineering concepts as they work on their software, they’re more likely to stay the course and pick jobs where that’s relevant.
For most companies, the best approach to take when hiring is looking at a candidate’s past projects and see if there is relevance to what you need them to work on. This is important because developers carry industry specific knowledge with them.
What About Hiring Agencies?
When it comes to evaluating software development agencies to complete a project, much of the above applies. Agencies are nothing but a group of people working together. They’re teams for hire. The best way to evaluate an agency is to try and evaluate who would be working on your project.
If you think about an agency owner’s motivations, the owner is trying to sell you the solution, and keep the difference from what they pay in labor. In many cases, agencies can resort to having more junior engineers working on your product.
Flint Hills Group is different in that our 100% U.S. based engineers have 20+ years of experience. We’ll skip past the mistakes and delays of other agencies. If you’re considering hiring a software development agency, be sure to read our reviews on Clutch, an independent platform for rating agencies. You can then review our process, and request an estimate for your project.