Last month, I came up with an idea for an iPhone app for the Christmas holiday season. The idea seemed simple enough: I wanted to give parents a way for their kids to send a message to Santa, and keep track of good deeds that they do. Nothing fancy. I mocked up the design in Photoshop, and posted on Reddit to find a developer. I had virtually zero budget, and since it was already late September, time was ticking. I fielded a few responses from qualified developers, but I just wasn’t going to be able to afford their services for my pet project. So, I signed up for Elance and posted the job.
After Posting the Job on Elance
Within minutes, my inbox was full of proposals from iOS developers from all around the world. Some appeared to be brand new to Elance, while others had complete portfolios, feedback from previous Elance clients, and earnings in the six-figure range. The proposals ranged from a couple hundred bucks to thousands. I took a little time to look over the proposals, and contacted a couple of the developers that I thought would be a good fit.
Less than two hours after my original job posting, I was chatting on Skype with a developer from China. He had great feedback, the price he mentioned in his proposal seemed fair, and he communicated well despite a slight language barrier. We discussed specs, I walked him through my mock-ups of how a user should flow through the app, and I asked him a few questions about how the process would work. Shortly after, we agreed to a price after a few rounds of negotiation, he submitted an updated proposal, and our business relationship was formed.
So I’ve Hired a Developer. What Now?
My first step after making the hire was to make sure my Photoshop files with the app’s different designs were organized, easily understood, and correct. I sent the .psd files to the developer, and he got to work. Skype text chat would be our main method of communication, but I was sure to log any important files in the “Files” section of Elance’s “Workroom,” which is basically the area within their website that you manage your project’s payments, communications, milestones, files, and agreements.
Two days later (!), I received a message from the developer to download Testflight, and he sent me a working version of the app to test. I have to say, this was one of the most exciting things I’ve ever experienced as an entrepreneur! Seeing an idea come to life less than a week after coming up with it was a rush, to say the least. I’m sure this will only be amplified when I’m doing the development myself. Needless to say, with the developer getting something back to me this quickly, I was seriously impressed.
Debugging and Changes. Where the !Fun Begins…
So, things were going great. I went through the app, listed out the bugs I was finding for each component, mocked up a couple small graphical changes, and sent them over to the developer. Here was our conversation (copy and pasted):
Developer: oh sorry.. this is not original spec. I have to rework about it…
Me: I figured some graphics changes would be OK. Basically, the overlay graphics are slightly different. Same functionality.
Developer: Ok.. but you don’t change the graphics in future… If you will change the graphics, I have to work many times again.. So It needs extra price.. I hope you understand me…
Me: Sure. I didn’t realize it would cause very much additional work.
Developer: Ok I will fix it now.
OK, so now I’m feeling like I wasted some of his time, and he’s doing me a favor. I’m a little concerned that what I would consider to be “standard” changes as we go through the process are considered changes to the job’s original spec, but we’ll see where things go.
Pressure to Pay Faster: A Never-Ending Theme
One thing that seemed to be mentioned over an over was something to the effect of “If you want me to continue, you need to pay $XXX now.” Despite having very clear milestones outlined (four of them, $200 each), I was constantly under pressure to pay early for things that weren’t quite ready. Every conversation was a bit of a battle. Here are some examples:
Right from the start, I had outlined that the developer would need to sign a work-for-hire agreement, which outlines ownership of source code upon completion of the project, etc. The first milestone said that upon my receipt of the signed document, I would release the first payment, and work could begin. Pretty clear, methinks.
Me: Let me know when you are around, so we can finalize everything, and I can release the first $200 payment.
Developer: Hi Please release the 200$ first. I am working now.
Me: I’m on my way back to my house. You’ll need to sign the agreement I linked above first. I’ll release the $200 immediately after.
The second milestone payment was made immediately upon receipt of the first working demo. When he sent the second iteration based on the bugs I outlined, the following conversation happened:
Developer: I need you fund $400 to Escrow for bug fixing
Me: I’ll be funding the next $200 milestone this weekend. I think it says it gets released when there is a final release candidate.
Developer: ? Bug fixing for $400, am I right?
Me: I’m not sure what you mean. (At this point, I send a screenshot of the milestones outlined originally.)
Me: That’s the payment schedule from Elance.
To clarify, the third $200 payment was to be released when I received a final release candidate. The last $200 payment was to be released 10 days after App Store approval (developer to upload mentioned in milestone), to ensure that A) the app is actually accepted, and B) users have a week or so to report any bugs.
Developer: I am not sure about last milestone/ Sorry. I think we have a misunderstanding each other. Let’s determine about last milestone’s boundary. I am a developer. I can develop the app. You can test full time. If you are ok for my app, you can release last milestone. then I will send you last full source code. Uploading app to Appstore is your task…
Me: I understand. The last milestone was created that way (and, for the sake of argument, you agreed to do it) to make sure that if the following happens, you’re still available to fix:
1) App not approved by App Store for some reason.
2) Users find bug(s) that we missed.
Developer: Sorry. I have agreed your first requirement.. In fact, you are changing some specs… but I understand.. I have fixed it free… but I can’t fix other update spec.
Me: What other update?
Developer: Ok I can upload app in appstore. After I have upload your app to app store, can you release last milestone?
Me: I have no problem doing the upload (I have a dev account). I just want to make sure it’s approved and fully functional before releasing, that’s all. There’s no problem.
Developer: Apple will review app for many days.. I can’t wait this days. coz I have finished my working… Of course, if apple will reject your app coz of my code, I will fix it free.
Developer: but you have to release last milestone after I sent my last source code… this is the rule to work in Elance. I hope you understand me. I am a honest developer.
Me: And I am an honest customer. I’m not understanding what the problem is. Right now, we just reviewed a list of bugs.
Developer: I want to know when can you release last milestone. I think If I will fix last bugs, I can get 400$ at once.
Me: The project total was $800. The milestones are $200 to start, $200 upon delivery of first working version, $200 upon receipt of final release, $200 upon app store acceptance. I paid the first two $200 payments appropriately, I’m planning to pay another $200 when the final version of the app is ready, and another $200 when the app store accepts and 10 days have passed for bugs to be reported by actual users.
Developer: “$200 upon app store acceptance” is no for me.. I need that you will release last 200$ when I have uploaded app in appstore. then apple will review app for 7 ~ 10 days… then your app will approve for sale.. So I mean when I will upload binary file to app store, you have to release 200$. I can’t wait apple’s review time… I have worked all project with this rule. I hope you understand me…
Developer: can you change the last milestone? “Uploading Binary and sending Source code” – $200 and I hope you will fund the miestones in Escrow. so I can work next step..
In the end, I ended up agreeing to pay the last $200 milestone once he uploaded the app to the App Store, as long as it noted in the milestone that he would fix any issues that are found within the first 10 days of approval at no charge. I was frustrated when this conversation was over. I was very close to having my app on its way to the App Store, and ultimately gave in as a result of the pressure I was placing on myself to get it uploaded.
An Attempt to Hold My Source Code Hostage for a 5-Star Review
Up until now, the juice had been worth the squeeze. In a little over a week from when I originally hired a developer, I had an app being uploaded to the App Store for approval. It was missing some features, but it was functional, and ready to make its debut to the world. This is when I encountered a situation that made me rethink whether Elance is worth the risk and headache.
After the developer uploaded the app to the App Store, he messaged me to tell me that he was zipping up the entire project so it would be ready to send. The conversation is below:
Developer: once you release me $200 final milestone, i will send project
Me: Ok. Give me 5-10 minutes, and I’ll get it paid.
Developer: ok and then please give me 5 star and good review and end job and then i will give you all of project source code
Me: (Five minutes later.) Last $200 released!
Developer: okay 5 star give me 5 star right now i am zipping the source code
Me: I’m planning to write a full review.
Developer: did you leave 5 star?
Me: Not yet. I’m going to write a full review later on. But, I’m not going to play the “hold files hostage until I get reviewed” game.
Developer: once you leave 5 star, I will give you all of source code
Me: Yeah, that’s not how this works. You were paid in full already.
Developer: review is also important to me. i think it’s easy to leave 5 star
Me: I understand. And you can expect a positive one. But, this is not how you deal with clients.
Developer: sorry. i think we have finished our task. and i have uploaded app to appstore… So we can remain review each other. Of course, I will remain good review too. I hope you understand me…
Me: We’ve almost finished. I haven’t received the source code I paid for yet, though.
At this point, he seems to realize that I’m not going to leave a review before receiving everything, and he sends me the source code. He goes on to tell me that he did this job for the review, not the money, etc., etc., etc. Serious pressure to write a positive review. Overwhelmingly, he deserves (and will receive) a positive review, but situations like this really make me wonder how much faith we can put in the reviews on Elance. It’s like the days of retaliatory negative feedback that eBay was once plagued with. Not good.
In summary, I paid a developer to build an app I designed, and he did just that. It took less than two weeks, and it’s now live on the App Store (after a rejection, and a successful appeal, which I’ll post about later this week). In many ways, you could say that I accomplished my mission. However, the frustration that went along with the process, dealing with someone on a completely opposite schedule, and constant battling over the nitty-gritty left me feeling like I should learn how to do it myself. And that’s exactly what I’m doing. Next time around, I’ll be able to bring my idea to life without worrying so much about increasing costs, code being held hostage, and dealing with future issues. I’m breaking out of the jail that is have-to-hire-someone.