I’m a big fan of learning tests and learning by doing. The primary reason I made Dandelion Breeze was to learn the WatchKit SDK, Swift, and SpriteKit. It was definitely fun and informative making this app, and in doing so I had always had the intent to release it completely for free. No ads, no in app purchases (for now, might make a tip jar later depending on number of downloads) and no initial cost. It’s a learning test that is going to be released.
David Smith, of Developing Perspective recently talked about making a Simon Says type game (Episode 214 : App Store Snowstorm). In this episode he talks about “feeling like a special snowflake” which is this idea that even though you feel like your ideas are new and novel, “you are a snowflake in the midst of the App Store snowstorm.” To paraphrase an excerpt,
When you’re working, it’s easy to get motivated into thinking that what you’re doing is new and unique. More often than not, what you’re doing is in some way derivative. If you’re making something that gets its market viability via its uniqueness then you might be in trouble.
His app Pedometer++ is not a unique idea, it’s the first learning test you could make with the Apple M7 motion coprocessor and really, it was his learning test for the SDK (check out Episode 146 : Get Up, Get Moving for more). The app when it launched had its fair share of copycats. Being first does not make you the best, being distinctive helps, but there’s no guarantee that you will gain any traction in the app store with it. Something that helps with finding your distinctiveness is when something new comes out, like a new SDK is to experiment with it. Experimentation is how we learn. It lets us have fun while allowing us to develop our skill sets. Like he says, “if anything, both patience and persistence as a concept, and willingness to experiment are the two biggest things you need to have to be an successful independent developer. And to have tolerance for failure.” Part of learning by doing is a willingness to fail over and over again until you’ve learned the concept you want and continue to experiment to further build your understanding of the topic. I think it’s important to have fun when learning, it shouldn’t be painful.
If you want to learn something go get your hands dirty and build. Build anything really, doesn’t matter how small, just go make things. Tutorials and reading is a fine way to start or research that one component you need, but making learning tests, isolating the thing you’re learning from larger systems provides a distraction free environment to experiment. Dandelion Breeze gave me a platform to make an Apple Watch Extension app. Super simple, just a button that when pressed plays an animation. Informs the group presences of the tap and plays another animation. Repeat. Simple, yes, but it taught me about device image caching, watch layout and group containers. The phone component to the app is a series of sprites moving across the screen waiting to be tapped. With it I learned some basic Swift, SpriteKit, and some minor physics stuff. In the end I have a two learning tests that have come together to make something I can ship and that I’m proud of.
David Smith actually reinforced much of my thinking along the lines of making sure you’re having fun in building your apps or whatever you want to build. In Episode 154 : Something You Are Proud Of, his tag line is “It matters that you can make a living — but it matters more how you make your living.” I love this line, and it really drives my want to become an independent developer, working from home (or coworking space). Getting paid to learn by doing is my dream. Developing new apps and new experiences all while being able to support myself would be amazing. Until then, I’ll continue to make games at a proper job, and use my nights and weekends to learn and play. Experiment. Learn. Play. It’s how to get better at anything.