I’m doing freelancing full-time this summer. Here’s a brief summary of what I’ve learned so far.
The key to being a successful freelancer is being good at what you do. If you are bad, no amount of business wisdom will save you. In the iPhone business, this means:
Apple wins by saying “no” to features. It makes sense that in Apple’s market, you win by saying “no” to clients. Some examples:
If you are good (see Lesson 0), the amount of work available to you is effectively infinite. Every person who has held an iPhone has an idea for an app and dreams of riches. The number of people who can take that idea and convert it to a product, on-time and on-budget, however, is vanishingly small–perhaps 10,000 good developers at most. So only take the best clients.
This concept is a lot more counterintuitive in real life than it is on paper. You are looking somebody in the eye who is offering you $5k (for a $6k app), and turning them down, because you know that next week somebody will call you who is willing to pay full price. It means turning down a stellar multi-app repeat client who pays on time but is extremely picky about the background color of unchangeable Apple UI controls because you know that right behind him is another stellar client who trusts your (and Apple’s) professional design judgment and will be a lot easier to work with. Turning down a deal in-hand that’s “ok” but less than stellar simply goes against all intuition.
As soon as I have any idea at all what the project will be, I quote new clients a price with a margin of error of a couple of thousand dollars. I do this before investing any work into writing an estimate or even hearing much about the project. I need to weed out the “revenue sharing” people instantly, not after even one hour of my time. There are simply too many of those guys out there.
Fast food is cheap. It’s the same everywhere. Any fool can be taught to make it.
I am not in the fast food business. I am a chef. I juggle Apple, clients, changing HIG guidelines, changing SDKs, tools, documentation… I design good layouts. I think through small-screen UI design. I pay attention to battery life. I look at what the client wants and I see past the requirements and into the real business problem. I anticipate what they really want, and I find the right balance between features and complexity. Those are specialized skills. They’re not cheap. They’re not replicable. They’re not scalable. And if you give that speech to somebody who’s trying to order a burger at McD, you’re never going to get anywhere.
A lot of people are worried about lowball foreign developers “stealing” all the work. I’m not concerned, any more than the 5-star chef is concerned when McD opens next door. It’s not within 100 miles of the same market. I will solve the problem for you and bill you a price to match. Fast-food developers will copy and paste something off a forum somewhere and you’ll be stuck in revision hell forever until you give up and hire someone new.
In the past, I’ve come down pretty hard on revenue sharing:
If you’re going to offer something stupid like “revenue sharing”, just walk away. Developers are going to laugh at you. I have a “revenue sharing” deal already–I do development work, and Apple sends me a monthly check. The only way to compete with that is to pay actual money up front.
I still think this is mostly right. I have all the revenue sharing agreements I want already: with Apple. And there’s still no shortage of people offering me a 50/50 split for their “app idea”.
However, I have begun to offer a 5% discount for a 3c per copy royalty for certain projects where the clients are known to be reliable/honest and the product is sound. This gives me a little bit of residual income and a little bit of risk. The smart clients realize that it keeps me invested in their projects.
I’m learning more this summer than I’ve ever learned in a classroom. Being forced to make actual money is perhaps the best teacher of all. Why don’t we expose students to something like this before they enter the workforce?