During the course of my career, I’ve hired many freelance developers and I’ve been hired by many clients.  I’ve learned quite a few lessons on both sides that can be helpful when staffing your next project. Avoid these mistakes to find a productive developer and get yourself on the path to software happiness.

 
1. Beware of tunnel vision.  Seek individuals that can see the big picture. 
Writing code is great fun and developers can write endless lines of code without ever understanding the strategic goals of a project. They can optimize relentlessly to get better, cleaner, faster code, but often time spent optimizing adds little to no business value. They might spend significant time on features that are not relevant to the success of the project. If your project is new or not well defined, you will get much more value from a developer who has seen several project cycles. There are many critical decisions during the course of a project that can have a lasting impact on your investment. You want someone who can see to the horizon and can make the right decisions and trade-offs for your project.

In addition, there are some developers that just can’t see things from the end user’s perspective. It’s important to have compassion for end-users and understand their struggles so you can develop software and features that add value to their workflow. Not having an appreciation or an ability to see the view from another perspective can lead to bad decisions and software that misses the mark.

2. Avoid favoring hard skills over soft skills. 

I’ve made this mistake so many times. It’s hard to avoid. You need a specific skill and you need it fast, so you go narrowly looking for a developer that can hit the ground running and be productive with that skill on day one. You ignore all candidates except for the ones that specifically highlight that skill and you make concessions because you feel that deadline approaching and know that there is limited time to get the right candidate up to speed. So you take the candidate with the hard skill that will get you to the finish line. Or maybe not.

My best hires, hands down, have not necessarily been the Entity Framework expert or the dev that has the most experience with Redis or WPF. My best hires have been the ones that have great soft skills like commitment, integrity, communication, and collaboration. You can teach someone XAML, but you can’t teach someone drive, dedication, or professionalism. Those skills are inherent. You either have them or you don’t. And it’s those skills that make the difference between project success and project delays.

So these days, I look for developers that have great foundations, unparalleled professionalism and an aptitude for learning. And then I set them loose on learning the hard skills required to get the project done. Great developers learn new skills quickly. We’ve been doing it for years because technology evolves at lightspeed (see mistake #7). If you can find both hard skills and soft skills, then you’ve found the holy grail, but if you have to favor one, take the soft skills every time.

3. Run (don’t walk) from bad communicators.
Ask any technology veteran what makes a project, team, or a company successful and they will tell you it comes down to communication. It’s imperative to find developers that embrace good communication practices. Understanding project requirements is a key to success, and understanding requirements means asking the right questions and listening attentively.

I’ve seen many developers deliver results that miss the mark because they moved forward, head down, and never asked for clarification, or never talked to a teammate about integration details. Vague communication, inaccurate communication, or no communication is a project killer. Run away.

Look for a developer that provides weekly updates, gives accurate and clear responses to questions, and knows when to admit they don’t know the answer right now (but will provide one by COB tomorrow). Look for a history of collaboration with tech and non-tech colleagues. Avoid anyone who doesn’t ask smart questions or doesn’t communicate clearly during the hiring process.

 “One bad programmer can easily create two new jobs a year.”  -Dave Parnas, Early Pioneer of Software Engineering

4. Avoid transients.
I’ve worked with freelance developers that hang a shingle in between jobs or as a side hustle to their full-time job when money gets tight. There is definitely a time and place for these developers and short projects that match their availability can work out. But all too often you’ll get someone up to speed and feel good about the progress you’re making only to have their situation change, leaving you scrambling to find a new developer halfway through your project. Beware of those freelancers that might not be fully committed to seeing your project through to completion. Spinning up a new resource is costly and time-consuming.

Keep in mind that your two-month project, if done correctly, will probably lead to new opportunities, changes, iterations, and upgrades. If that is the case, then you might consider looking for someone who will be available long-term.

5. Overestimating your own bandwidth.

Be honest with yourself about how much time to you have to devote to your project and how experienced you are running technical projects. You can get by with a less experienced resource if you have ample bandwidth to direct and manage their efforts. Less experience typically means lower costs but more effort in generating productivity, understanding requirements, and generally staying on track.

If you’ve managed technical projects in the past, then you probably have a good understanding of how to structure an engagement. But if you’re strapped for time and your calendar is filled with meetings and other commitments, then you would be best served by hiring an experienced developer that can manage the project and keep it on track, providing you with updates and targeted questions along the way.

6. Don’t sacrifice experience for lower cost.
Experience leads. No question. A developer that has been through many project cycles can anticipate issues before they become project killers. If your project is critical to your business, look for a dev with a long resume of successful projects that can help guide you through a proper software development process. Keep in mind that applying technology to a business problem requires more than just writing some code. Having a developer that understands the value of planning and communication and has successfully managed projects from start to finish can lead to a more successful outcome.

Typically a developer with less experience will work hard to deliver features, taking shortcuts along the way to deliver results fast. They will miss or overlook other important aspects of a project like security, maintainability, or how it will scale with business needs. You might get results that look promising today, but when you scale up or try to build on it, everything falls apart. An experienced developer understands these tradeoffs and can help you navigate a project with full disclosure of the costs, benefits, and pitfalls.

“The difference between an experienced developer and an inexperienced developer is the experienced developer knows when they’re taking shortcuts.”  -Lance Haag, VP Engineering, Cal-Bay Systems

7. Don’t overlook resourcefulness.
We all need resources to be successful. Developers can find resources all over the web (webinars, podcasts, blogs, eBooks, white papers ). Don’t forgive a dev that’s not willing to go the extra mile to get a deeper understanding of the problem domain or the technical options. With toolsets changing monthly and new tools being introduced at every quarterly event, it is the job of every software developer to stay up-to-date on the latest innovations and developments in their area of expertise.

Any developer that doesn’t do the hard work to stay current, or research options to successfully complete projects, won’t fully be able to assess the trade-offs necessary to successfully deliver results.

Conclusion
For your next project, take a good hard look at your candidates. Be honest with yourself about your own bandwidth and how much time you have to guide and oversee this project. Be sure to evaluate your candidate’s experience against your needs. Look for committed and resourceful candidates with proven track records of successful projects. Remember that partnering with the wrong freelancer could mean you end up doing your project twice, or you get stuck looking for a new resource in the critical ninth inning.

If you avoid these 7 mistakes, I promise that you will get a lot more productivity and a lot fewer missed deadlines and failed projects. You might even achieve software happiness.