Since 2003 I've shipped at least eleven apps including major updates. VoodooPad 1-5, Acorn 1-4, FlySketch, and a little failed project called FlyGesture. Occasionally someone, usually an aspiring indie dev, will ask me how I do it and my standard answer is "lots of practice". While it might sound like a funny quip, there's more truth in there than not. I notice if I haven't released an update in a while, the harder it is to ship. I got out of practice. But it's OK, I've been here before and I know what to do. It's been working so far.
So yes, shipping software really does get easier with practice, and especially time. It's an experience thing. You fail, you learn, you hopefully improve.
However much time I've been doing this for, and no matter how much practice I put into it, there's one thing that always sneaks up and pulls the rug right from under me. It's usually between major releases, but not always. It's a period of time where I'm pretty lost, and I don't know what to do. I have feature lists, I have open bugs to fix, and I have an outline of where the app is going. But I feel mentally incapacitated, like I'm getting nothing done.
I call this "The Wilderness".
I hear it talked about occasionally, though I don't think people really know what's going on. And I've seen it happen to other devs as well, from the hardly known to the super famous and successful. I've seen devs fall into it, never to return.
And this is the dumbest thing, isn't it? If you've shipped an app and you want to continue, then that means you've had some measure of success. You aren't complaining, but… shouldn't things be better than this?
I have a few theories as to why this happens.
Maybe you've been making foundational changes to your app. You've been spending time cleaning up your code, rewriting those hacks you've been wanting to fix for years now. Or you're targeting a new SDK and there's all these deprecated methods to replace. So while important change is happening, you don't seem to be moving forward. You look up and all of a sudden notice this has been going on for weeks and you've been standing still all this time, and now you're standing still for no reason at all. And you're lost in the wilderness.
Maybe you have to ignore your app for a little while to work on other things, like your website or documentation. Again, while you're doing good things and even creating something from nothing, a voice in the back of your mind is constantly yelling at you that you're losing ground. But you're not! You've got documentation and web stuff to show for hours and days of work and this mental conflict arrises and you look up and you're standing in quicksand, drowning, surrounded by the wilderness. And you're asking yourself "what the hell is wrong with me?" as you slowly sink and you're too afraid to move.
Maybe it's none of the above, and your brain is just tired and wants a rest for a while. It's a brain, not a machine, and it has needs other than typing, and you find yourself wanting to do yard work at odd hours of the day. Or your mind instinctively knows that you are going to be mentally sprinting over the next couple of months, so is it cool with you if we just chill out for a while, like a big lump of dough? Oh, that's not cool? Too bad, and say hello to my cold, dark, desert of a friend I call the wilderness. You see, I'm your brain and I'm not giving you a choice on this because we've been here before and I know what's up and you're trying to kill me. So we're going to do nothing on app X for a while and you can call it forced meditation if it makes you feel better.
I like this last wilderness theory the most, probably because it seemingly takes the choice away from me.
So those are the possible reasons, but what can you do to keep from getting lost?
Here's the thing- I don't think you can keep it from happening. It just does. Your little indie brain breaks and you're left there holding the pieces trying to figure out what to do about it. But there's hope.
"I climbed the Grand Teton once with a good friend of mine. It was probably one of the hardest and most rewarding things I've ever done. While I didn't feel it at the same magnitude, on the inside finishing VoodooPad 2 reminded me alot of that trip."
And in this quote lies the seeds for how to escape the wilderness.
One foot in front of the other. Push, maintain, breath, keep looking up, and know that even when you get to the top it's not really over because you still have to come down again. You can walk for miles and maybe months in the wilderness. Just keep on going.
The trick is knowing that you aren't the first to be here, and this won't be the last time. So you take care of your mental wounds and slowly create momentum again, then one day you look up and you're making the stuff you love, fixing bugs, writing release notes, and shipping.
"What I want them to understand — for everyone to understand — is that sketching is one of the most critical skills I think you could learn if you work in any environment that requires you to build something, whether that’s a physical product or a piece of software. And you should learn to stop being afraid of a pencil and a piece of blank paper, because sketching is fast, visible, collaborative communication, and it doesn’t matter how well you can draw."
A long while ago while working for Mizzou's IT department, I was attempting to write an SQL query for a perl script or java servlet, or something or another that was going out to the web probably. I don't remember exactly what the query was for, but it had something to do with dates. The reasons don't matter, but what did is that I was stuck because I didn't understand SQL. But I knew someone who did.
His name is Mike Hess, and he was our DBA. He knew SQL in ways that mere mortals didn't, and lucky for me he was sitting about 20 feet away. So I quickly walked on over to him and explained my problem. I'll never forget what he did next, as it literally changed the way I programmed for the rest of my life.
He pulled out a little yellow pad of paper and a pencil and looked up to the ceiling for a second, and started sketching out a little date line with some points on it.
I was immediately annoyed. I was young and stupid and I just wanted an answer.
He handed me the piece of paper and I went back to my desk. I stared at what he had drawn, and I didn't get it. I was slightly upset and super annoyed and I had to go back and ask him to explain (at least I wasn't so stupid that I was unwilling to ask for help when I didn't understand).
Mike smiled and explained what he had drawn with the date line and points, and then it hit me like a ton of bricks.
I understood exactly what the SQL query needed to look like. Programming could be visual. Solving problems could be visual. I love sketching. I love programming. Why had it taken me this long to realize this?
Ever since then, a pad of paper and a pencil has been my number one debugging tool.
Last Thursday was one of the bi-monthly Cocoa developer meetups (aka, Xcoders). And as usual we take over a large section of Cyclops, consume food and beverages, and chat.
And of course, at some point someone mentions that a recruiter at Apple contacted them about a team in Cupertino that needs some good developers. And hey, why not interview with them?
This happens fairly frequently.
There are lots of developers in this area, which might be unsurprising because we've got Microsoft, Amazon, Adobe, Google, various game companies, etc. But there's also a very large group of Cocoa developers in the area, though I'm not sure why exactly. Maybe it's because we have long dark winters and as long as it's miserable outside- well, you might as well learn this Cocoa stuff. Maybe it's the fresh air, or the mountains, or something else that I'm not thinking of.
So when Apple says "Hey, we've got a job down in Cupertino", the usual response is "Uh, that's great. I'm going to stay here thank you very much". And then Apple says "But, this is Apple. We're changing the world." and the developer responds "Yea, but have you seen housing and rent prices down there? And it's pretty awesome in Seattle- you couldn't pay me enough to move. Besides, Seattle is the fastest growing big city in the country, why don't you open up an office here?".
Yea, why doesn't Apple open an office in Seattle?
I know the usual responses: secrecy, being face to face is important, it is against Apple's DNA. But you know what? Apple needs quality developers in a bad way, so I think it's time for that special DNA to evolve.
Hire a manager, and open an Apple developer office in Seattle. There are plenty of places across the country where Apple has offices for historical reasons or acquisitions. Why not have a remote office on purpose this time?
Then you could quietly steal the best and brightest from MS, Adobe, and wherever. And you just solved a big part of your hiring problem.
* Flying Meat is doing awesome btw. So I'm not looking to join Apple. I just look around at all the talented people in the area, and I think Apple should do something about it.
"The United States Postal Service is one of America’s great infrastructure achievements. In addition to being a technical marvel, it is also a storied and hallowed institution. From the Pony Express to the first letters sent by air-mail, few things are so uniquely American.
"Plagued by budget woes in the modern era - the USPS sought to modernize its image, and more importantly, streamline the retail experience with clear signage, way-finding and packaging.
"To this end, GrandArmy developed a total re-design of the USPS in-store experience. A robust three-bar layout system was applied to all materials, from menu-boards to hang tags to welcome signs to kiosks and so on. This system holds together a huge variety of collateral. Ancillary materials include emotive creed posters, window clings, a mobile app, and shipping box design."
There's nothing earth shattering about this release, but I'm irrationally proud of it and I think it basically comes down to two new things in it that I really like.
The selection marquee has been tweaked a bit, and rotates through various colors and draws smoother making it 200% more awesome. I love it.
The other one is when you paste in dimensions such as "1256x408" into the width field of the new image window, Acorn will recognize that you probably want an image with a height of 408, and will automatically set that value for you. It's a small time saver, but it makes using Acorn even more pleasant.
There's been a lot of talk lately about how it's harder for folks to go and stay indie, or even make any money on the app store anymore (see Brent's post, Jared Sinclair's, Luc's post, various folks leaving indie life for , etc - I know you've seen them).
I'm in my tenth year as a full time indie dev (so I can claim to have a bit of perspective). And I think that yes, it is much harder these days to go indie.
I think it comes down to a handful of reasons, but the major one is that we have more potential customers than ever, but we also have more developers than ever.
This creates an environment where the majority of customers are using price as a filter for which apps to choose from. This in turn fuels a race to the bottom, and then it never comes up from there.
It worked for a time. If you can quadruple the number of purchases by halving your price- well, that's obviously more money. But when you start out at $.99, where are you left to go? Customers get used to it, and then expect it. They can point to developers who have gone this route and are rolling in the dough. It's an easy sell. But that's a lottery game and those huge hits are generally an anomaly.
Sales are now fueled by one day release surges, and then it tapers off into nothing.
What can be done to fix this?
I'm really not sure. But I can tell you what I've been doing, and what I will continue doing going forward.
My basic strategy is to make a useful quality product, and sell it at a fair and sustainable price. If your app is quality, it will find customers. And then those customers will tell their friends, and the news sites will notice it. And since you're charging a fair price a virtuous circle will form.
If you are just starting out, this might take years (maybe even exactly 1,068 days). It's a long road of hard work, pain, joy, and just showing up every day. Eventually you will get lucky and gain some traction- but it's not luck alone that is the key to success. You need to recognize opportunities as they come along and grab them. And just as equally important- you need to recognize time sinks and stupid ideas that come along as well. There will be more of the latter.
"Well, for starters, it takes a lot of patience. My sales didn’t appear overnight. It took five years for me to gain semi-stable financial independence. That’s something that I worry most iOS developers with indie dreams don’t appreciate. I’m not singling out Jared, but I think the “gold rush” mentality of the App Store leads many people to expect either instant success or epic failure. They lose sight that there might be a middle ground where you can grow your business slowly over time into something substantial."
I've always tried to set my expectations appropriately. I've looked towards those who came before me in indie-land and attempted to learn from them. I'm happy with Flying Meat being a mom and pop indie shop, and I want to keep it small. I try to make my customers happy within reasonable bounds, and they in turn support my for efforts. It takes time, patience, and lots of hard work.
This has worked so far, but I always have a plan B and C the back of my head if my ideas don't pan out. Expect failure, but don't let it get you down. Learn from it, and most importantly- enjoy it. Your company might grow and gain more customers, but it never gets easier. But you do tend to get better as time goes on.
The Acorn 4.5 betas have been going on for a while, and I'm pretty close to pushing out a final release. So now is a great time for some final testing and a chance to play with some new features before your neighbors.
So what's new? Well, you can read the full release notes for all the details, but the highlights include new presets, new AppleScript commands, full screen for Raw import, web export improvements, precision mode for the eraser, new shortcuts for common things, and Acorn can now open up .pict files. Yes, that last one was a real requested feature. I'm here to please.
There's also a handful of changes, as well as the usual list of bug fixes. And speaking of bug fixes- Project Oak is at 48% of the way there. I might not reach 100% by 2015, but I'm steadily making progress.