Getting Developers for your Project
This article is written for anyone who is not technical or a millionaire, but who may be interested in creating an iPhone app. As I mentioned in a previous post, I am about as technical as a blue dry erase marker. I mean, I really don’t know how to do much on the computer in the way of troubleshooting, much less programming. In fact, if you take out making random designs in Logo, the obligatory “Hello World” program in C++, and getting to the Gorilla Throwing Banana game in Q-Basic, I don’t have any computer programming experience at all.
This might make it rather challenging for a person then to develop an iPhone application. In fact, 10 years or so ago prior to ease of forming communities on the web it would be rather impossible for a non techie person like me to get any program accomplished. Yes, I know that there were BBS, forums and the like, but you have to remember that 10 years ago I was purely using the net to see the weather, the sports scores, and the news (come to think of it, not too much has changed…).
What has changed is the ability and ease to form communities that Clay Shirky so elegantly states in his book Here Comes Everybody. With the transactional cost reduced almost to nothing, it was relatively easy for an Average Joe like me to search for a site, post my requirements, and receive bids on the project. The revolution of the web giving the ability for people to communicate and work together is really what has brought the world BarCards.
Now, before you go off gallivanting around trying to get someone to create your app, it is extremely important to document, document, document. You need to understand EXACTLY what you want your program to do, how you want it to do it, and how it should look. This is extremely difficult to do even when you are working in the same building with developers much less with developers halfway across the globe.
One of the jobs that I had in my previous company (I had a lot) was working with developers to create an enterprise wide piece of software. The first thing that I learned from them was the importance of them being in constant contact with the customer because they are the person who is going to accept the application or not. The second thing I learned was the importance that the customer presents the idea clearly in language for the developers to create the product. What one person envisions is not always what the other person envisions.
The devil is in the details. As you put pen to paper you are really going to find that even the most basic ideas produce complex questions. What options should I have to transition from this screen? Where is this data being drawn from? What events make a game over? This is tough work but it is vital to be explicit so that you have a clear picture of what you want and the developers have a clear picture on how to execute on it. By taking the time to vet this out as much as possible, you will eliminate a lot of ambiguity and scope creep, both of which cost time and money.
Once I had my documentation complete, I went to Elance to post the job. It is relatively simple and you put in a description of your project, any of your documentation that you want to share publicly, and your budget. It is important to note that during this phase you might not want to be as explicit as what you are looking to accomplish because this is viewable to the entire Elance community.
You will start receiving bids (I think that I got some from Latvia, Russia, US, India, and China) pretty immediately. One thing that you will notice is that many of these bids are very generic; in fact, I got the sense that a lot of these guys didn’t even read what I posted, but rather did a keyword search on “iPhone” and created a proposal. I really tried to focus on the responses that seemed to directly address my statement of work.
Elance is really good about letting you check ratings on developers from their past jobs, a synopsis of their job, and how much the job cost. I also was able to download the apps that they had created and played around with them to understand the look and feel of what they had created.
When you select your developer, you will not only settle on the terms of the price to be paid, but also when you will pay and what percentages of the total. At this stage it is important to define clear deliverables so you know exactly what should be produced and how much should be paid. I would shy away from paying more than 25% upfront prior to any work being completed, and be sure to leave the lion’s share of the payment for the final product. You must setup escrow payments within the Elance portal which is a benefit for both you and the developers.
I have been working on my main project with some developers in India and have become familiar with their culture, work habits, and the time change so I decided to contract out another group from India for BarCards. We settled on the price and began development.
Overall, I would say that I was satisfied with my developers as we had a good rapport and we were able to accomplish our goal. The fact that they did produce a workable application that garnered some attention on the web was huge. I will now be able to take the proceeds from that first version and refine and enhance the app.
The main thing that I was frustrated with was the Q/A piece of development. The devs later confided to me that they did not have a Q/A Analyst and would be hiring one given the troubles that I had throughout the project. I had to do a LOT of testing and often times they would fix one issue but have another thing (or more frustrating a previously fixed issue) fall apart. In this instance, it is important for you to have an understanding of base test cases on how your application should work and be sure to test them all every time.
My development also took longer than expected, and I found out later that this was primarily due to the fact that they had to remove the original developer from the project as he could not handle the work. Another developer was brought in (unbeknownst to me) and picked it up and knocked it out. That developer has since left the company to pursue another job. I am now in kind of a pickle because while they promised a month of debugging they have no one to do the debugging. Consequently, I am looking at moving the development over to the other, more stabile dev group that I have been working with.
In conclusion, the benefits of contracting out your dev work via Elance: (1) it is far cheaper than getting someone domestic, (2) for the most part these guys are college educated folks who have some amazing skills, (3) I have had nothing but dedicated developers who have put in a lot of hours, (4) you have a certain amount of protection by paying an escrow fund instead of paying directly, and (5) if something does go bad and you lose your money you can leave negative feedback which the community will see.
There are some negatives: (1) you are not in the same physical location, (2) off shoring can have risk that the dev you are working with leaves the company, (3) potential language barriers, and (4) you will spend a large sum of time checking the quality of the app to make sure it was done correctly.
Finally, while I do not believe that this is necessarily a negative, you must be cognizant of the cultural differences. There are going to be things that are by nature foreign to you in the other culture, but you should be patient and try to learn from the differences. By remembering the golden rule of treating people the way that you would want to be treated, you will not only have a successful project but probably develop some good working relationships.
