Programmers are the backbone of a good software product. They take your requirements, communicate with you, flesh out your ideas, and deliver your product. They also maintain your software after deployment, making them a critical part of your team from day one. If you are in need of software maintenance or need new software developed, a freelance programmer is what you need—but how do you approach hiring a programmer?

Here’s an overview and tips on what you can do to find and work with a freelance programmer.

Identify Your Programming Project Requirements

The first step is to define what you want, then identify the type and level of skill needed to make it happen. Research what those requirements might be using resources like the Hiring Headquarters: There are explainers that explore the role of JavaScript programming in front- and back-end development, why certain frameworks are better for some tasks than others, or break down the differences between front-end programming and back-end programming.

From there, you should consider breaking down the project into the specific technologies your programmer will need to be familiar with. The Hiring Headquarters also has lots of resources here, with information about various programming languages and frameworks like AngularJS, C#, and Python.

Wondering how to budget for a programmer? Here’s a look at how you can crunch the numbers for how much it costs to hire a front-end programmer or a back-end programmer.

Write an Effective Job Post

Use the information in your brief to create a detailed job post that will appeal to the type of freelancer you’re looking for.

Start by defining a scope of work that focuses on three things:

Results: What deliverable(s) do you expect?

What deliverable(s) do you expect? Targets: What are your deadlines?

What are your deadlines? Time: What are the start and end dates for your project?

You’ll also want to highlight the specific skills you’re looking for. Programming is often language- and framework-specific, so make sure they’re familiar with the tools, scripts, and frameworks they’re going to be using on your software project, whether those are languages like CSS, SQL or JavaScript, or frameworks like Ruby on Rails. If you’re looking for mobile programmers, be sure to include the platforms, operating systems, and frameworks they’ll need to know.

Shortlist Potential Freelance Programmers

As proposals are submitted, you’ll need to vet the most promising programmers to create a shortlist of people you want to interview. Here are some points to look for:

Professionalism. Who’s tailored their submission to speak to your business and your project? Check out their Upwork profile: How do they present themselves in general?

Who’s tailored their submission to speak to your business and your project? Check out their Upwork profile: How do they present themselves in general? Talent. Because programmers can be specific to many different fields—from mobile to databases to front-end development and back-end software—it should be clear from their proposal, profile, and portfolio that they have the specific mix of skills needed to do the work.

Because programmers can be specific to many different fields—from mobile to databases to front-end development and back-end software—it should be clear from their proposal, profile, and portfolio that they have the specific mix of skills needed to do the work. Experience. Has the freelancer worked for others in your industry, or handled projects like yours in the past?

Has the freelancer worked for others in your industry, or handled projects like yours in the past? Feedback. What do previous clients have to say about the work on their work? Reviewing feedback can give you insight into their ability to communicate, solve problems, and produce a great product.

What do previous clients have to say about the work on their work? Reviewing feedback can give you insight into their ability to communicate, solve problems, and produce a great product. Portfolio. Have they handled complex programming projects before? What were the results? Each sample should provide a description, which may explain the problem they needed to solve and other project requirements. Make sure they can explain how the work in their portfolio relates to the questions you’re trying to answer.

Prep for the Interview

The interview is an opportunity for you to learn more about a programmer’s approach, creativity, experience, and talent.

Prepare your interview questions ahead of time so you can feel confident that you’ve covered all relevant points. We’ve created a list of interview questions in a variety of programming languages like C#, JavaScript, and PHP that you can reference, but here are some additional questions to consider:

“What do you think of our existing product? What’s something we could be doing that we’re not right now?” Tailor this to ask about something related to your software project—i.e. your existing application, database, or UI—or to learn whether they’ve done their homework.

Tailor this to ask about something related to your software project—i.e. your existing application, database, or UI—or to learn whether they’ve done their homework. “Tell me about three software projects you’ve worked on?” Ask about their most similar projects, favorite projects, or most recent. Listen for how they solved the initial problem, challenges that came up during the programming process, and what they did to address them.

Ask about their most similar projects, favorite projects, or most recent. Listen for how they solved the initial problem, challenges that came up during the programming process, and what they did to address them. “What’s your production timeline?” Get more details about how quickly they work, how much time they’ve spent on previous projects, and how they receive and implement feedback.

Get more details about how quickly they work, how much time they’ve spent on previous projects, and how they receive and implement feedback. “What makes a great [insert type of project here]?” Learn more about how they’ll approach your project as well as their experience with similar work.

Using your observations and their responses, engage the programmer who has the talent, development experience, and mindset to excel with your particular project.