Working with and hiring developers in a significant number of companies over the past 15 years. I can shed some light on this question.
Answer: Expect to pay $20-60 an hour for a good programmer or about $40,000 to $100,000 as a general rule covering most programming needs. This number of course can go up or down depending on skillset and location, but it is a good starting point that will cover 90% of cases.
What is A “Good” Programmer Anyhow?
When looking for someone to help me on a project or for full-time hire I have 1 main objective: I want to find people that are able to progress without constant supervision or help. Some projects require more attention from the person holding the requirements, but hiring someone to do some programming should save you time or effort, or both.
A “good” programmer is going to be able to help you accomplish your goals faster and without a ton of hand-holding. This is different from a junior developer which requires a lot of teaching and guidance. Many people make the mistake of thinking they want junior-level people to save money but often find themselves spending more time and effort restating requirements or correcting misinterpretations.
Based on this, you can imagine how the pay will directly correlate to the skill of the programmer. A good or even better than a good programmer will be worth magnitudes more than the lousy programmer as a bad programmer can actually end up costing you money.
How Will I Know if a Programmer is Good?
This might be a hard question to answer if you are not yourself a programmer, but I can give you some helpful insights into what to look for and think about during the search process and after you have hired them during the first few months of work.
When searching for a programmer often they will post links to past work or a blog etc. This is a great time to get to know them and how they might communicate with you in the project or on the job.
I like to look for programmers that have clear written communication, and hopefully documentation or readmes on their code samples. (I plan to write more detailed instructions on this for non-technical people later). I will also often run people’s projects if possible or view their live online examples.
Even if you are not familiar with coding you can learn a lot from peeking at their codebase or viewing their live samples. Do you see a lot of naming that looks like “test” “example” maybe they followed a tutorial and didn’t think through their naming very well, however, I enjoy when someone does some witty naming. I like to see names for functions and classes that make sense even from a non-technical standpoint.
One of the biggest things I like to look for is easy and clear communication. If you are going to hire someone that is supposed to make your life easier clear communication is about the best thing you can find.
I know a lot of programmers try to look at the logical flow and for simple common mistakes that new programmers make. My goal when evaluating a programmer to hire is simple, “did they write better code than I would have written trying to do the same thing?” I always want someone that is better at the task than I am.
Once you have hired them or if you are trying a sample project first. Now is the time to consider some important things:
- What kinds of questions do they ask
- The best programmers ask a lot of questions to get the core of the problem
- How smooth is the communication
- Smooth communication is not how easy it was for you to “hear” them. I have worked with some fantastic programmers that had a very hard to understand accent. Smooth communication is more about how much was actually lost in the communication, aka how much was misinterpreted and not followed upon (now or) later.
- Deadlines and promises
- admittedly I would fail this every time, and most of the best programmers I know only get it right about 65% of the time. But you have learned what you toleration is here for missed deadlines and try to adjust expectations accordingly. If you can not manage a programmer’s wildly inaccurate deadlines or promises, you need to find someone else.
Side note on the last point about deadlines and promises: A great programmer is going to be far more accurate than a “good” programmer in this area. The programmers that I know that are great and hit their deadlines 85%+ of the time charge between $125-250/hr. They also tend to write amazing code that makes other programmers weep when they see.
The next most common mistake is not hiring the right type of programmer for the task at hand. I have more in-depth information on that here, but let’s take a quick look.
What Type of Programmer Should I Hire?
Sure you might have an idea bout what a “good” programmer is and a general range but if you want to get more specific we need to figure out what type of programmer you need to hire. Let’s keep things simple here and look at the major types of programmers and programming.
Below we are looking at pay ranges for both full-time and freelance developers. I think a good argument could be made for not dividing the list the way I have here, but when I have helped clients make hiring choices or plans for projects these divisions made the most sense to the largest number of people.
Do you need to make a website, webapp, or other user interface function?
Then you need a frontend developer. Remember at $32,000 to $70,000 as a general average full-time salary these guys are not designers. Interestingly though on the freelance side of things frontend, devs can make much more with $40-60 /hr being rather common. To get full use out of your frontend developer you really should provide them with at minimum a wireframe design, and ideally with full mockups and wireframe.
Are you trying to do something more complex possibly involving data manipulation or building an API?
Then a backend developer is going to be the right fit. Unlike frontend developers, backend developers are not the right choice for anything customer-facing, but they can build rudimentary user interfaces when absolutely required. The current national average pay for Backend developer in the USA according to glassdoor is a cool $101,000 and those “good” freelancers typically cost between $35-60 /hr.
Are you looking to make something that you need to happen “inside” your computer, possibly some automation, or operating system-level development?
A Systems Software Developer will be the right fit. Found more in the government contract sector, medical, IT, and other industries where a typical web interface is not desired or needed. The range for the Systems Developer has a much wider range at $48,000 to $138,000 according to glassdoor. Freelance I have always hired on the lower end of the spectrum because my needs were IT-related being $20-40 /hr. I know of a freelancer working in the medical space that makes $75 /hr and I think he fits the bill for “good” perfectly.
Did you want your project to result in a phone app or even a windows store app?
App developers are just about everywhere these days. If you are working with a remote developer you can pay as little as $10 /hr to get your app developed. However, you might want to consider if you will have the result you desire. Glassdoor says the national average for a full-time app developer in the USA is $105,000. I have hired good app developers for as low as $18 /hr here in the US on a full-time basis with benefits. On the freelancing side, I have tried the guys that are $10 an hour in other countries all the way to the ones here that charge $70 /hr. I think you start to find really good people at around $30 /hr, and then beyond that, it comes down to the other factors we talked about before like communication.
Should I do a Sample Project?
Better than a sample project what I have done in the past when I didn’t know the best option was to hire 2-3 people to do the same thing. After a few weeks, you will have found which people you work the best with and be able to make a better decision.
Sometimes you will have unexpected results as one of the times I did this the two people I hired turned out to be very good at opposite things so I brought them both on for the long term to finish the project.
So I look at it as the main project can have samples produced and I throw out what is bad. Programming is like art two versions can accomplish the same goal, but one is likely going to be way more beautiful.