Once you start looking for a freelance developer to collaborate with, you’ll notice they’re everywhere. Online freelance marketplaces are packed to the brim with skilled candidates. On top of those, you’re bound to find at least one or two (hundred) in the nearest town.
Now, you’re left with the difficult task of narrowing this pool of talent down to the one that will work most effectively with you. It’s daunting even if you have some technical acumen, but it can seem near impossible if you don’t. On the other hand, it’s easy to think technical considerations are the only ones that matter. Anyone who has hired a genius who is impossible to work with, can tell you just how wrong-headed that can be.
In this article, we’ll focus on a few ways you can be sure you’re getting the most compatible partner.
Check out their work
Ask to see some of the developer’s finished work. Before you start evaluating, make sure you understand the parts your prospect worked on. Spend some time to explore their project. Make notes of what you like and don’t like. Maybe they built a web app that’s really fast, but it places some odd constraints on the user’s password. Ask them what led them to make those decisions.
Any sort of software development, whether it’s web, mobile apps, or desktop is a game of finding the best compromises. Hearing the various trade-offs a developer was faced with and their approach to solving the problem is extremely valuable in assessing how they will address problems your project will encounter.
If you know a little about code yourself, you can dig into the developer’s GitHub account to see what they’ve written and which projects they have contributed to. Seeing their code will help you understand if they are a good fit from a technical perspective. This gives you a more concrete idea what that developers list of accomplishments actually means in terms of skill.
Here are a few aspects of the freelancer’s GitHub that might not be obvious at first but you should pay special attention to:
- Languages: does the freelancer stick to one or two favored languages, or do they dabble in many different languages? Finding a specialist in the technologies you need for your project can move things forward quickly, but a freelancer with a breadth of experience can offer suggestions about other kinds of tools better suited to your job.
- Comments and Documentation: how well is the code documented? The nature of freelancing means that you may have other people working on the code at some point. Will this freelancer’s code be easy to work with? If not, that means you might be committing to them more than you want to. Some developers believe self-documenting code means they don’t need any comments. If you don’t see comments, how readable do you find the code?
- Do they contribute to other projects? As counterintuitive as it may seem, it’s often harder to contribute to other open-source projects than to build your own. Other people’s code can be difficult to understand but doing so is a necessary skill. This is particularly important if you’re bringing a developer in to work on an existing codebase. If they’ve contributed to open-source, it’s more likely they’ll write code that others can maintain later since they understand the challenges of doing so.
Find out how (and what) they learn
From the best practices to the actual technology used, software development changes at a rapid pace. If you end up with a developer who is stuck in the practices and tech of 10 years ago, you’ll miss out on tools and techniques that could make your project better, faster, and easier to maintain.
Ask prospects how they learn new things and what is the most recent thing they’ve learned that helps them in their development. What did they gain from learning it? What’s the next thing they would like to learn and why?
Even if you aren’t familiar with the specifics of their answers, you can get a sense for how curious this developer is. Too much curiosity can lead to projects being built on experimental, unproven foundations, but, in general, a curious developer can bring more to your project.
Find a compatible communicator
Communication can make or break a project. Make sure the developers you work with are willing and able to communicate in a way and with a frequency that you can live with. Most developers have communication tools in place they use with colleagues. Look into those and see if they will work for you. If not, find out if the developer is OK using the alternative tools you suggest.
This is also a great time to find out how often you’ll be hearing from the developer. If the answer is, “Once at the end of each milestone,” you’re probably going to be unhappy. What are the chances the developer will understand your project exactly the way you intend it the first time? What are the chances that every distinct piece that makes up a completed milestone will be perfectly in place just as you imagined it?
Regular check-ins (at least once a week) can fix small misunderstandings before they become big ones.
Test them with a project
You’ll learn more with this method than with all the others combined. Asking probing questions and peeking into their code can only give you tiny glimpses of what working with a person is like. The best way to understand what it’s like to work with them is to do it. A test is also your best opportunity to get past the technical stuff and into the stuff that really matters: Are we going to be miserable trying to work with this person?
If possible, break off a small piece of your project and work with the prospect to complete it. If at all possible, pay them to do it. This does a few nice things for you:
- it gives you a low-risk way to test working with the developer;
- it leaves you with a useful deliverable even if the relationship doesn’t work out;
- if you can afford to pay a fair rate it’s mutually beneficial for both you and the developer.
I mention this last point because sometimes companies are tempted to ask developers to build a small test project for free for the purposes of evaluating them and their work style. This is not a good way to start a relationship with your developer. If they can build something that will be useful to you — even if, in the beginning, it’s not the entire project you want to build — isn’t that worth paying for?
It’s probably best you don’t present this to the developer as a test project. You don’t need to lie or deceive them in any way, but present this as the project. In fact, it is the project for now. If everything works out, you’ll have another project to offer, but don’t hold this over them. It will adversely affect the relationship dynamic. No one wants to be the subject of experimentation. If everything goes well, the developer will want to work with you on future projects; you don’t have to use that in the beginning to keep them on the hook.
During this engagement, keep your eyes open for red flags. Think carefully about what kinds of behaviour you can’t work around.
Careful vetting pays off
If your timeline for project completion is approaching and you don’t have time to take all these steps, at least do the test project. Have your prospect build a piece of the larger project, that way your risk is low and no time is wasted. It’s an extremely valuable tool to ensure this is a relationship you want to have. Even if it fails and you have to find someone else, it will cost you less time and money than committing to a development partner to build the entire project only to have it fall through.
It’s much easier in the beginning to pick someone you like and hope for the best. Sometimes that can work out, but, for the good of your project, you should enter into relationships with your eyes open as much as possible.
HOW TO FIND THE PERFECT WEB DEVELOPER
Freelance Xamarin developers who are good at what they do can earn quite a lot of money compared to full-time jobs, especially where there's a shortage of skilled talent in certain areas of technology. You also have more control over your income because you can turn down projects if they aren't worth as much as others that you could take on instead.
ReplyDelete