Steve Jobs famously said "Real artists ship." He meant that putting your work out in the world is an essential aspect of every creative, and that includes developers. Creatives that only work in isolation and never ship anything may not be that real after all.
Earlier this year, I sent a survey to Cocoacasts readers to learn more about what they do, what their goals are, and where they're currently at. I also asked them about any applications they have in the App Store. Many of us have published some personal projects, but the most common answer to the question was the goal or ambition to have an application in the App Store. It's common to start something without ever finishing it.
It's Hard
I've written about this many, many times because it's something that fascinates me. Developers are creative people, and we have an urge to create. Unfortunately, most of us stop when we lose interest. Motivation isn't what's going to get you from idea to App Store. It's grit, tenacity, and persistence.
Solving a problem is what we like to do. Writing release notes, implementing in-app purchases, or localizing an application isn't what we enjoy most. But it's an essential aspect of software development. Unfortunately, it's what stops most of us from shipping.
How to Ship Consistently
Over the years, I've built many, many applications and some of them made their way to the App Store, not all. It has taught me several useful lessons that guarantee that I ship stuff consistently.
Make It Tiny
It's fine to dream and to be audacious. But Rome wasn't built in a day. What stops many of us from shipping our creations is aiming too high. I don't mean to say that you shouldn't aim high. What I am saying is that you should aim for consistency.
My latest application is focused and to the point. I have big goals, and even dreams, for this application, but the first release focuses on the essentials. I interviewed people that are interested in the product and asked them which features were essential for them to use the application. I analyzed the results, went to work, and plan to ship the first version of the application later this month.
It's fine that your application is limited in scope. That's much better than no application at all. Right? I'm convinced that there are thousands of applications collecting dust on people's computers because they aimed too high for the first release. Keep it small and focused.
Ship Frequently
Once you have something in the App Store, it's surprisingly easy to iterate on what you already have. Define the scope for the next release, keep it focused and small, and ship. Rinse and repeat. Listen to feedback and improve the application as you go.
It's an approach that has worked very, very well for me. It also shows my customers that I'm continuing to invest in the product. It builds trust and confidence. The App Store is littered with abandoned applications that no longer receive updates. One of my favorite utilities stopped working after I updated my phone to iOS 11.
Keep the Bigger Picture in Mind
Shipping frequent, focused updates is very effective, but make sure you keep the bigger picture in mind along the way. Avoid ending up with a product that packs dozens of features but lacks a clear direction. You're the product owner and it's your task, not your customers', to give direction.
Internal Deadlines
I sometimes make the mistake of publicly committing to a deadline. This strategy works for drawing attention, but it's detrimental for your sanity.
What works much better is setting internal deadlines. It works well in teams, but it's also an effective strategy for personal projects.
The idea is simple. Schedule releases on a regular basis and ship what's ready. That's the gist. If you adopt a branching strategy that works, then that's simple to implement. Combine this with a dash of automation, and you have yourself a shipping machine. Such a workflow lets you focus on what you enjoy doing most, building amazing software.
Remove Friction and Clutter
There are numerous tasks you need to handle if you're building and shipping products. It can be a chore to prepare a release. To make this easier, I automate most of the trivial aspects of a release, such as translation management and creating and uploading screenshots. You're a developer and you should be automating repetitive tasks. It pays to set aside a few hours from time to time and automate your workflows.