A few months ago I was contacted by a friend of a friend on Facebook who owns a local creative marketing agency. He knew I had made the Thoughtback iPhone app and was wondering if I’d be interested in doing some work on an iPhone app for him. I decided to head down to his office and find out more.
At that first meeting, he told me that bd’s Mongolian Grill, one of their clients, wanted an iPhone app and they had no idea how to make one. That was where I came in. We talked a lot about the whole process of building an app and what was even possible to do with an iPhone. I was expecting something more like a job interview, but was surprised when it wasn’t. They told me that they were going to talk about what features they wanted to put in the app and get back to me.
A few days later, I came in again to talk about the features that they wanted to add and to see if what they wanted was realistic. At this point I wasn’t sure if I was going to be making the app or if they were evaluating me. I guess they had pretty much already decided I would be hired, since either at that meeting or in an email right after, they asked how much I would charge to build this app for them.
How much should I charge?
How much to charge is a really hard question. On one hand, I wanted them to hire me and was afraid that if I charged too much they’d try to find someone else. On the other hand, I’m a qualified, professional, software engineer and my time is worth real money. I was really hoping they were going to make me an offer so I wouldn’t have to come up with the number myself.
I did some googling and found some crazy numbers. People were saying anywhere from $10,000 – $50,000. I tried doing an estimate of how many hours it would take and then multiplying it by what I get payed at my day job. All these numbers seemed unreasonable to me. $10,000 dollars is a TON of money. Remember, this is NOT how I make my living so I don’t actually need the money, it’s all gravy. I ended up picking a number that would let me take a couple pretty awesome vacations, but still not be unreasonable for a smaller company to pay. I think I lowballed myself a little bit because obviously development takes longer than you think.
You’re worth more than you think!
If I had any advice for someone else in my situation, pick a number that seems just a little bit too high. Remember, you can’t get money you don’t ask for. Don’t worry if it’s something you haven’t done before. Odds are good that you can. One of the reasons I think I went low is because I wasn’t sure I could actually do what they wanted. Now that I actually finished it, that seems silly because I was able to do everything they wanted (and more).
How long is this going to take?
Of course, with the money estimate, they wanted a time estimate. This was another tough one. I had never done an iPhone app of this scale before. They wanted lots of stuff that I’ve never done before like Facebook sharing, Twitter sharing, and use of the iPhone’s Camera. So I went through each feature and figured out how long I thought it should take in hours. Then I added a little padding time because everything always takes longer than expected. Thankfully, my client understood that too and added some more padding of their own onto the deadline.
You suck at estimating!
Well, maybe you don’t, but I do and so do most other people I know. There are always a ton of factors you don’t think about when making that first estimate. In my case, I was thinking I would spend about 2 hours a day working on the app after I got home from work. What I wasn’t thinking about was my weeklong vacation to Florida and all of the time I wanted to spend having a life (hanging out with my girlfriend, playing video games, going to movies, etc.). So towards the end of the project, 2 hours a day turned into 3 or 4 and some weekends were even longer. I also wasn’t anticipating all of the changes that my client would want me to make. I had to completely change some functionality mid way through because they wanted something different. This brings me to my next point.
Working for a client is NOT like working for a company that sells software!
Where I work, we don’t have clients. We sell software to consumers. Our deadlines are self imposed and we have to come up with our own specs. When you work with a client, they set deadlines and they tell you what they want in the app. They get what they want, because they’re paying for it.
Will you do it again?
Hmmm, it’s hard to say. This has been a very positive experience. It’s a great way to pull in some extra spending cash and I learned a TON about iPhone development. The company I worked with was really great. We kept in constant communication the whole time and they gave me a lot of freedom in finishing out some small parts of the design that weren’t in their mockups.
Even though it was awesome, it was a lot of work. I don’t really need the money and as much as I like doing development on the side, it’s nice to be able to set something down when I want to.
I would recommend any developer with some spare time to try something like this at least once. I really learned a lot, not just about development, but about communication and working with others.
I’ve done similar work for Android apps. In my experience, one of the most helpful part of working with a client is to have regular “check-ins” where you show them what you have done so far, and they are able to give feedback on the direction the app is heading. This keeps you focused and on task to have something deliverable at regular intervals, and allows your client to feel involved and ensure that what you are building matches what they are looking for. I like to think of it as a loose Scrum style sprint review.
If you are working with people who have never been involved in designing and building software before is to communicate to them the impact all of those little changes they want to make have on any deadlines and time estimates that have been set. Inevitably changes always come up, and you can give yourself some “buffer room” in your estimates but as long as the client understands that changes mean increases in time spent you can avoid a lot of potential issues.
Working with clients can be a lot of fun if you spend most of your time building software for a company that sells software, provided you get the right client. Any web designer can probably list off a laundry list of horror stories from working with fickle clients who cause nothing but issues for them.
Nice post. I actually went through more or less the same thing.It was a basic web based application. I figured out how bad i was with estimating when i did this project. My estimation on both the money and time was way off. I now believe i should have charged more. I underestimated myself because i was not sure if i was able to do it or not. The client for me was a mess. They would call me up when i was at work and say strange errors which when i head over in the after noon is a mere fact of the users not being computer literate. It was very hard to work with such a client due to the fact that they did not have the proper processed involved to implement the system in a orderly fashion. All in all i did gain alot of insight on how to estimate based on task break down and never to underestimate my self.
Also i totally agree with you on the week ends and all. ITs fun to do development work in your leisure time but we have to note not to let it interfere with our personal life. Whats the point of making money if you do not have time to enjoy with it yea? So always agree on time lines which will allow you to be flexible. This is ofcourse only applicable to those who do this part time. Freelancers ofcourse have to deal with it in a whole different way.
Thank you for the article. Some very good points were highlighted.
In order to have constant feedback from your client and to make sure that you’re on the right road, it’s better to give small releases than one big one.
Interesting Randall,
I am going thru a similar experience as well. I always think, I charge the client too much because as a developer I dont have the ability to pick a price for my work.
On the other side though, if the client wants more apps to be developed, you cant charge them more ( because you realize you have done it for a lesser $$, for the previous app).