In general, I think that if you have an idea, you should write the code yourself (previous post). It’s more likely to turn out the way you want and you will have more control moving forward. But, that’s not always an option. Recently, I’ve been advising some friends on how to use their time most efficiently with freelance developers. Hopefully this post can help you avoid some hiccups they have encountered.
If you are going to hire a freelance developer, be sure that you are going to be willing to spend enough money to get a quality product, especially if you are going to be relying on the software for more than just a proof of concept. Many people claim they know exactly what they need a “programmer” to do, since they have sketched out some wireframes in PowerPoint. In my experience, these “wireframes” are probably going to be thrown out because my friends have not thought through what they actually want in enough detail.
Writing software takes time and expertise. I’d recommend you try to think about this process in similar way to asking a freelancer helping you to create a physicial prototype. It’s going to take time and it’s going to cost real money. If this seems like it’s going to be a problem, consider whether this is a project you actually want to work on.
Assuming you have decided to move ahead with your project, here are some concrete ways to be economical with the time your freelancer is going to be billing you for.
This may sounds simple, but most of my friends only knew what they wanted in an abstract sense. They had not figured out the details. For example, they had a couple sentence description, but had not thought through the details of what would need to be built to accomplish their vision. Some freelance developers relish the opportunity to craft your product, but there is a lot of variability in quality and this exposes your project to unnecessary risk. Before you start looking for a freelancer, you should be able to articulate workflows and what they are intended to accomplish.
Wireframes are certainly important, but you also need to know which data is important for you to collect from your users. This needs to be super specific.
It’s important to both understand how users are going to be
inputting information and how you would like to store it.
For example, you may just ask a user to enter an
but on your server you would like to geocode the
longitude, so that it will be easier
to sort by distance later.
address should be stored as a string and
longitude may be stored as floats.
You should know that you want to collect first and last names of your users separately as strings and that you would like to keep track of how many times a user has visited your site as an integer. You may also want to keep track of a user’s billing address. For your convenience later, you may want to break this down into many smaller fields, so that you can easily look up all of your customers who live in a particular zipcode.
If this feels painfully specific, then you’re probably doing it right.
Once you have thought through these details, you can short circuit many conversations with your freelancer that have a tendency to go around in circles. And by providing a clear picture of what you want, you should be able to get a more accurate time guestimate. Hopefully this will help save you from learning two weeks before your deadline that the software you need won’t be ready in time.