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
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 code tends to break in many places each time it's changed
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.
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.
Make sure they can explain technical concepts in layman's terms. This is a key soft skill that any good developer possesses.
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.
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.
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.
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.
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.
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.
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.
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.
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.