The most important part of the process started in October. I began beta testing with a group of about 20 friends and was immediately inundated with ideas for improvement. The app changed significantly during this two month period, usually for the better. It remains difficult to hear that you may be wrong about what you’re building although it seems to become easier with time. I stopped blindly predicting what users wanted and put my energy into understanding exactly what their problem was so I could solve it.
This phase was easily the most demanding but also the most motivating. I found that I wanted to please my users; I was happy to listen to them and push new builds out as often as possible. I didn’t mind that I would often create and delete an entire feature across only a handful of releases. A special thanks goes to Will Etling for helping me narrow the feature set and overhaul the interface.
The most difficult period was the last few weeks before release. There was nothing fun left to build, only subtle bugs to hunt down and stability and performance tuning; occasionally I would procrastinate by refactoring. I just wanted it to be done so I didn’t have to work on the same project anymore. I set a date for code completion and app store submission (New Year’s Day) and beat it by a day. It was the only part of the process that felt like a grind.
Admittedly not scientific whatsoever, it seems to me like somewhere around this final push might be where most software projects die, and that the only way to breathe new life into them is to release them. It could be that the amount of motivation left is diminished by the amount of work left to do. It’s probably easier to limit the size of the project than it is to find more motivation.
The day I submitted Spacebook I felt proud. The next day I felt like I had retired. This project had been dominating my spare time over the last few months and now there wasn’t anything else to do with it, at least not until it was time to release an update.
I was at the movie theater when I saw an email from Apple saying that Spacebook had been published. I was elated. I hugged my brother and Casey, and texted my girlfriend, some beta testers, and my family. Then I watched 3 hours of Zero Dark Thirty.
I think there are a couple of reasons I was able to actually finish Spacebook. I held myself to a rule of working on it for at least 30 minutes every day. I took time to refactor bad code so I could make quicker progress in the future. I tried not to refactor too much too soon—the app shipped with plenty of code I’m not proud of. I used Trello to organize my tasks and, more importantly, keep my priorities straight. Work progressed much faster after I deployed the API server and installed the app on my phone; I think it’s important to release something as early as possible.
Most importantly, I took the “less talk, more rock” advice very seriously. I can’t emphasize this enough. This was the first project where I felt that I built the most interesting components first and then filled in the gaps. This kept me excited and made it easier to avoid working on trivial stuff.
I don’t expect Spacebook to be a financial success. It costs money to rent servers and I don’t anticipate people clamoring to buy the app. I can say that it doesn’t matter as long as I can afford the server space. I am just very happy I shipped something. I’m happy that I learned a bunch about coding and a little about myself. If I find out that a couple of curious kids used Spacebook to find panoramas from Mars and learn about rover missions, that would be a really nice bonus. Either way, I’m going to try to finish more projects.
Spacebook is a growing collection of over 6,000 astronomy photos intended to educate and entertain. It is now available for iPhone and iPad.