In this guide we will take you through the skills and steps that you need to follow when hiring a new Software Engineer for your company.
What Is a Software Engineer?
A software engineer or software developer is basically two interchangeable terms for the same thing people that write and design computer software, websites and apps.
It’s common to group software engineers in to 3 main areas of expertise from which other finer grained skills are derived from:
- Back End: This is someone who specialises in creating the underlying logic that drives your system, for example calculating the value your shopping cart or processing an order and storing it in a database.
- Front End: This is someone who specialises in creating the graphical user interface, including layout, appearance and user experience. They will use the functionality provided by the Backend to get things done, such as saving a completed order to the database.
- Full Stack: These are people with competence in both backend and frontend, combining the two skillsets mentioned above. A full stack developer can create an entire application or website from front to backend by himself. However, hiring someone that does everything, may mean you get someone who is less well practiced and not specialist in a particular skill.
Hiring a great Software Engineer
Hiring a good Software developer can add an important asset to your company. While hiring the wrong developer can not only be a costly mistake, but also harm the morale and productivity of your existing team.
There are many software engineers available, and they usually specialise in a particular set of programming languages. However, just because there are a good number of software engineers available does not unfortunately mean they are abundant. This is because the demand for good and experienced software engineers is also higher than ever and growing.
To find a great software engineer you will need to have to have a multistage approach.
Below we will discuss the main factors that you must consider when hiring a software engineer for your company:
Decide on what skills your software engineer needs to have
Software can be written for anything from simple marketing website or data automation all the way up to complex banking or gaming platforms. Depending on the type of product that you are making, the specific technologies your software engineer will be required to know will differ.
It is important that before you consider hiring any developer you fist take time to investigate what technologies and frameworks you currently use or plan on using?
For example, a Java developer who is going to work on a web application would likely need to know at least one of each of the following Java frameworks
- An MVC Framework - To create the user interface (such as JSF, Play, Struts, or Spring)
- Hibernate or JPA - to interact with databases
- Dependency Injection - for database testing
- Restful Web Services - to create an API
- A Build tool (such as Ant) - to build your project
- JUnit (or similar) - To write software unit tests with
- Version Control – to allow the team to work on code collaboratively
- Application deployment tool - to deploy the software on the server or cloud
- Markup Languages like HTML, XML and JSON.
Once you have created a list of required skills and technologies for your project, you will be able to create a targeted a job description that will match with the right candidates. Using this list to find a candidate with the right skills match, who can start work coding your project earlier and be productive faster.
When you receive a software engineers resume or CV, it will typically contain a list of the candidate’s current skills and technologies experience. Matching the skills list on the candidates resume with your list of required skills, will allow you to start filtering out the best candidates straight away.
Hire complementing skills
Every developer from the first that you add to your team should add value. However, you will likely find some developers add more value than others.
For those that already have an in-house development team, you can ask them what parts of your project need support and what skills will be required to help.
For example, having 3 developers who primary focus and skills are in the front end won’t be particularly useful to you or your project if no one is providing them with the backend functionality.
Creating a good software development team can be compared to creating an effective squad in the marines. In a marine squad you will typically have specialists with light and heavy machine guns as well as others who specialise in mortars and artillery. They work together just as an orchestra playing a concert with every member having his part to play.
Just as it takes many complementing skills to win a battle, it also takes many complementing skills to make a great software.
Choose the correct size of team
It’s essential when hiring for software engineers to work on your project, that you attempt to estimate the amount of resources required to complete it successfully. To do this you will need to estimate how only how many people you need and how long they must work. This must also be done in order to estimate the budget you will require to complete the project.
If your project is small, you may only need a contract software engineer for a short period or even on a part time basis. On the other hand, if you’re building the next YouTube or Facebook competitor you will likely need an entire team of engineers with complementing skills in order to make your project a reality.
To estimate how many developers and resources you will need a project needs to be broken down into its component parts and each one estimated. If you have no experience in managing software projects, you should probably ask or hire someone with more experience who will be able to estimate more precisely. As if your estimates of time and resources are way out, you will risk becoming another failed software project.
Filter applicants by their CV before committing to an interview
Each interview you do will likely incur time and cost to your business. For this reason, you will want to plan out your interview funnel well in advance.
It is usual to conduct multiple interviews for each candidate, and there's no telling how many candidates you will end up interviewing. This means that filtering down candidates at the CV level will save you significant effort later.
Now that you have listed the main technologies and frameworks that will be used in your project you can now compare your list requirements to that of list of skills offered by potential candidates.
Many developers list their skill sets on their CV but do not usually tell you their competence or experience. If there is a particular skill or technology your team requires you can always ask the developer to describe his previous experience.
Simply writing down technologies and frameworks on their CV should only be the first step. Before allowing the promising candidates into the next step, you will want to verify they do indeed know the technologies they have listed. Make sure you ask a candidate what types of projects they have worked on, and when they last used the skills that you require.
Code Test potential developers
It is important to look beyond a developer’s CV to see if they have the skills to enhance your development team. After all, anyone could enhance their CV beyond their real capabilities, so having a technical part to the interview will verify their skills and hopefully highlight any weaknesses.
No matter how good a developer sounded in the previous steps, if they cannot complete your technical task to a high standard, they may not be what you are looking for.
Every Software Engineer you hire should have the skills to create, deploy and manage code effectively. Testing these abilities will allow you to see how experienced a coder they are.
It's also important to include several problems to be solved within your test as this will allow you to determine their problem-solving ability. It is often said a software engineer is a problem solver first, and a coder second. Programming languages and programming frameworks can be learned by studying. But the natural intelligence and problem-solving abilities required to solve complex problems is harder to learn.
As a rule of thumb, a code test should at least fulfil the following two requirements
- The test should challenge the developer to solve a problem
- He should be free and not overly directed in how to go about tackling and solving the problem described
Don’t delay hiring when you have found a good software engineer
Software engineers or developers are always in high demand. And as they may get multiple jobs offered to them you will be competing with all the other businesses that may want to hire them
You should ensure that you have efficient hiring procedures in place before you attempt to hire a software engineer. When you do find a good candidate, you should consider hiring them as quickly. Try to make a hiring decision within a week of the final interview, this will prevent you being disappointed or having to compete for the candidate.
Just like a big game hunter on the planes of Africa, when get a rare glimpse of a rump gazelle or indeed great software engineer you should shoot (or hire) before they disappear out of view. A great software developer will either be unobtainable or more costly if you wait too long to hire him.
Look for the soft skills
Even if you find a software engineer that has great technical skills and experience you still need to look for human skills. If a developer doesn’t have a good fit with your team culture or company ethos, it’s unlikely that they will feel motivated and happy working in your company.
One of the best ways to filter the developers that you are considering hiring and find the best fit, is to have them meet with other members of your team. If they do not seem to get along and complement each other, then they might not be the right person for you.
Finding a developer with a good cultural fit should be paramount, as this will help them integrate into your team and make an immediate impact on your project.
By taking the time and due diligence to make sure you have a good soft skill fit, you may find a developer who will stick with your company for long-term.
Good luck Hiring your next Software Engineer
Now that you know how to hire a software engineer, feel confident and know that only through experience do you gain competence.
So, go out there and make a top hiring choice to assist in the growth and expansion of your company!