Founder's Guide to Hiring Web Developers
Amir Boroumand
Principal Software Engineer | Java | Spring Boot | AWS Certified Solutions Architect Professional
Overview
As a founder or business owner, hiring a web developer for a project is an important decision. There's a large pool of developers who seem to be qualified at first glance. However, finding the right person can be a challenging task.
Perhaps there’s a performance issue hampering your site and causing frustration among your customers. Or you’re missing a feature that could attract new customers. Or maybe you're building a new site from the ground up that needs to power your business.
In this article, I'll provide the information you need to identify the right candidate. With this information, you can be confident in selecting a candidate with strong technical skills and knowledge of software development best practices.
Don’t worry if you’re non-technical. The concepts and technologies will be explained as we go. If you are technical, then some of these concepts will already be familiar to you.
Understanding the Importance of Code Quality
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” — Martin Fowler
Working code does not necessarily mean the code is well-written. Unfortunately, many code quality issues are not visible to management until they begin to pose a serious threat to the success of the product.
Let's review some signs of poor code quality.
Fragile
Fragile code tends to break in many places each time it's changed
Unstructured
Code that lacks structure is often referred to as "spaghetti" code. It's a maze of logic that's difficult to follow, test, and debug.
Duplicated
The same code appearing in different places leads to maintainability headaches when things needs to change. This leads to bugs where a site could have inconsistent behavior because an action is performed slightly differently in multiple places.
Soft Skills
Communication
Make sure they can explain technical concepts in layman's terms. This is a key soft skill that any good developer possesses.
Problem Solving
A developer's job is to solve business problems with technology. A good problem solver will be able to adjust technical solutions based on shifting requirements.
Ask them to describe the challenges they faced in a recent project and how they overcame them.
Teamwork
Developers need to work well with others in order for the project to be successful. Team members may not always agree with each other, but having different points of view helps build successful products.
Being able to tactfully disagree and offer a different opinion is valuable.
Technical Skills
Programming Languages and Frameworks
Look for a developer proficient in the language your site is written in. This is important because each language has its own ecosystem of tools, frameworks, and best practices.
If you're building something new, ask them which language they would built it in and why.
SQL
Most databases are relational which means they store the data in tables that have relationships with each other. A developer should have a strong grasp of SQL which is the query language used to retrieve and update data from the database.
Performance
Are they experienced in troubleshooting slowness on a site? Can they pinpoint the root cause without haphazardly looking in many different places?
Many performance issues in a web application can be attributed to using the database an inefficient manner. The web application may be issuing an excessive number of queries. Or the database may not be indexed properly which means it's not tuned to the types of lookups the application performs the most frequently.
Testing
Do they write automated tests along with their code? If so, what types of tests?
There are two types of automated tests: unit tests and integration tests. Unit tests verify that individual components are working correctly. Integration tests verify that related components work together as expected.
At a minimum, they should be experienced in writing unit tests. As an example, a unit test could verify that the tax is computed correctly in different situations.
Tools & Libraries
There's a large ecosystem of tools and libraries built around software development. An experienced developer will be comfortable discussing their favorite tools and libraries they've used on past projects.
Version Control
Source code is saved in version control repositories which are digital catalogs of files that have versions associated with them. These repositories allow a developer to look at the history of a file to see what changed over time.
Git is the predominant version control system used today. Github and Bitbucket are sites that host Git repositories in the cloud.
IDE
An IDE (or Integrated Development Environment) is the software a developer uses to write the code. It has features like syntax checking and code completion. Ask them what their preferred IDE is and why they like it.
Third-party Libraries
We've all heard the expression "Don't reinvent the wheel". Most web projects rely on external libraries for common tasks in order to save time and make the code easier to read.