Even though I've worked on startups that create apps, I'm not a developer. If you were to ask me to write some code, I would have to reach into the depths of my memory to my freshman year as a Chemical Engineering major to recall how to write the "Hello world" program in C++. However, the Internet has connected us in a way that allows information sharing and knowledge transfer so even a non-developer has the ability to create software.
Both oDesk and Elance are websites that can connect you to third party developers who can help create code for your idea. But before you jump in head first in contracting out software development, here are some things that you should consider.
Mock Up Your Idea
Whether you do this in Balsamiq or Microsoft Paint, you absolutely should mock up your idea. This not only will be helpful for your developers, but also for you to fully understand the idea that you are trying to create. Furthermore, you need to breakdown the logic on how to transition from screen to screen.
The adage “an ounce of prevention is worth a pound of cure” is quite relevant here; you will directly reap the rewards (both in time and money) for having a well-defined mockup or storyboard of how you want your application to flow.
Post Your Idea on a Freelancing Website
Post your idea on one of the freelance sites and begin gathering bids for the job. I understand that many people are apprehensive about fully disclosing their idea, but the more detail you can provide is the better. In fact, you can do this in a way without completely showing your hand.
One time I was developing a simple card game and instead of giving away the secret sauce of the game, I just posted the logic of how I wanted the cards to be shuffled, displayed, added and removed. The essence of the game was in the images on the cards, and there was no need really for me to go in that level of detail in my post.
While it is better if you can provide more information, you can be clever on obscuring your idea while providing the nuts and bolts that makes the software work.
Select Your Team
After you have posted your idea, begin gathering bids. You will be shocked at how many people will bid on your idea from all corners of the world. There will be a range in price of your bids, but before dismissing some as being either too high or too low, look at the developer's portfolio. In particular search out completed projects that require a similar skillset to your project.
Similar to eBay, a rating is given to people on freelancing sites and can be a good indication of how reliable they are. Consider the fact, however, that everyone has to start somewhere. You might get a better price from someone who is relatively new to the freelancing site as they are trying to prove their chops. If you have a low tolerance for uncertainty, you should hire someone with a proven track record.
I also pay attention to whether a developer took the time to respond directly to my request or if they just copied/pasted a canned response. Those who write an authentic response and appear to have taken time to consider my proposal immediately jump to the top of my list.
Finally, a factor to consider is whether you hire a developer from within or outside your country. For me, developers in the US share similar cultural norms (of course, there are many stateside developers who come from other countries, so this is only a rough rule of thumb) as well as being in approximately the same time zone. I speak with a lot of colloquialisms ("let's knock it out," or "that dog don't hunt"), and I don't have to explain them as much to someone from the States. However, developers in the US can be more expensive than their offshore counterparts.
Developers outside of the US can come from a very different culture; I find it fascinating to learn both the similarities and differences from my own. I understand that there will probably be different approaches to business, conflict resolution and communication channels. There is also the aspect of a time zone difference that can result in early morning or late evening conference calls. Developers located outside the States, however, can be cheaper than their US counterparts, so that is something important to consider.
I have had both good and bad experiences with developers located in and out of my home country. Regardless of whom you get to develop your software, its quality will be directly proportional to how effective you are at communicating the logic, purpose and problems that your app solves. Selecting the right developers will be crucial to the success of your project.
Finalize the Contract
The last step before your new team starts slinging code is to finalize the contract. I have worked with development teams on both a fixed priced and hourly contract, and I favor having a fixed cost contract.
Hourly contracts can be beneficial if you have familiarity with programming and you can pull back the covers to see what your developers are building. If you are more technical in nature, you will be able to look at the output and code and see if your team is pushing full speed ahead.
Since I am not technical, I like knowing upfront how much the development work is going to cost. To get a developer to agree to a fixed priced contract you must (1) have well defined mockups and logic, (2) introduce little to no change of scope throughout development and (3) pay a chunk of the total cost up front.
I will structure the payment of 25% upfront, 25% upon first proof of concept and 50% upon completion. There are other styles of structuring fixed price contracts, but I favor this way because it requires skin in the game for both parties involved. I particularly like the escrow service that Elance offers because it protects both parties involved.
Once you finalize your team you get to move on to the fun part – beginning to see your software or app come to life.
Starting Up (Is Hard to Do) is a weekly series published every Friday on the Rackspace Blog from a guy who is in the trenches of starting up a business while working a day job. Check out Garrett’s previous post that talked about the importance of mocking up your idea.