Developing Manifest 1.0

Now I've finally released Manifest to the world, it feels like a good time for a bit of a retrospective. In no particular order, here are a few thoughts I had during the development process:

Scope Creep

One of my goals for this project was to avoid getting bogged down and ship something on a reasonably quick schedule. I'd say I was only partially successful. Even though my plan was to keep the feature set limited at the outset, I also really wanted Manifest to feel like a complete product. I had to constantly tell myself that I should keep my focus narrow for 1.0 and then focus on adding all these interesting additional features in future updates. It's easier said than done. I do think I ultimately succeeded, and I have a great backlog of stuff to add in future versions, but I was surprised how difficult it was to keep the scope in check.

Swift

One of my goals for Manifest was to develop an app entirely in Swift, and I succeeded. (All the new code is Swift. I did use a few open-source libraries and small modules I've written in the past that remain Objective-C.) All in all, I really enjoyed working with Swift, and I do think it added to the stability of the code. When I go back to other projects in Objective-C, I find myself missing a number of Swift features, particularly Swift's robust enums, structs, and protocols.

There were definitely a few annoyances. CocoaPods support was shaky at first, but is now much improved with the release of CocoaPods 0.36. Xcode's SourceKit helper crashes constantly, which messes up all manner of things, and doesn't always restart quickly or cleanly. Error messages aren't always clear. At the same time, these things are clearly improving rapidly. Apple introduced a slew of helpful changes with Swift 1.2 and Xcode 6.3 beta, and it's clear the team is working hard to address problems both with the language and the tools. I suspect changes will start to settle down sooner than many people expect. I probably wouldn't recommend using Swift in a client project right now, but that day is fast approaching.

I also want to include a shout-out to the Swift team and Chris Lattner in particular for the forthright and comprehensive release notes that accompany changes in Swift. They take the time to give examples alongside syntax changes, as well as provide insight as to why changes were made. It's a level of transparency that we don't always see from Apple, and it makes me feel great about the future of the language and the platform.

Design

I like to think I have a decent eye for design, but I'm not an artist by any stretch. Icons are a particular challenge for me, and I'm sure I'm not alone in this regard. I found myself wishing for a service that could match developers with designers who are open to taking on small projects – a handful of icons, or maybe just an app icon. The big-budget design firms are beyond my means, and my project would probably be too small for them anyway. I'm willing to pay a fair price to a designer to help me out where my skills are weaker, but simple Google searches aren't likely to turn up the kind of freelance or small design shop I need. Is there a service that can help with this kind of thing? What resources to other developers use when looking for design help?

Analytics

I thought about using a number of different analytics packages in Manifest: Mixpanel, Google Analytics, Flurry, Heap, and others. Ultimately, I decided not to use any of them. First and foremost, a lot of these services struck me as a little creepy. They collect a lot more data than I want, and it's often difficult or impossible to opt out. They also add a dependency, and integrating them well takes time that I could otherwise use to work on new features. Finally, I'm not confident that the data they collect will really lead to a better product. I'd rather solicit feedback directly from users (seriously, I'd love to hear from you on Twitter!) than try to guess what people want based on analytics data. I'm not saying that I'll never add analytics of any kind, but for now, I just don't think they're worth it. I am using Crashlytics, because crash reports are important, but that's it. (An aside: What in the world happened with the iTunes Connect analytics that Apple announced last year?)