How I usually work…
When I work on an app, I do whatever it takes to make something that people can love. There are few things that drive me more crazy than an app that is hard to use. I get frustrated with inefficiency, complexity, and over-design. I try to create designs that are simple, obvious, and useful.
Most of the work I’ve done involves designing across all stages of the product lifecycle. Usually this means I do user research, prototyping, experience design, visual design, interface design, and interaction design. I also often manage the app development team and entire development process, and do all customer support, usability testing, quality assurance, marketing, and business development. To help solve design problems I usually use a 4 step process. Note: this is my own made up process and it's not very design-legit, but it's where I usually start.
Step 1. Understand
If possible, I like starting a project at the very beginning, spending as much time as I can with potential users, gathering information, questioning, and listening to try to uncover the real underlying problems and issues. Then I want to know the business goals for the app, who is involved in the project, and the business and design constraints that surround the project.
After that I start exploring some assumptions and guesses with quick and dirty concepts on paper to see if I understand the problem and some of the ways it could be solved. At this point I'm just going for rough and quantity, starting to understand the basic user stories and how that might work in an app.
Step 2. Explore
After the first round of understanding it’s time to start exploring potential solutions. I usually end up with some of the core user stories mapped out in UI, a basic look-and-feel style, and some first-version solutions for each of major use cases. Most of the time I use Sketch to create high fidelity UI. This allows me to work quickly and preview designs on a real device without getting lost in abstract details that don't actually work.
If the work requires interaction design then I normally do this in Keynote or Xcode. I've built lots of complex app designs in Keynote and find it really useful for sharing work. If I have time I also use Xcode and Swift, Interface Builder, third party pods, and Autolayout to create working UI that I can test on a real device. Here are some typical outputs at the Explore stage:
Step 3. Test
After exploring it's time to share and test. The best way to share work is to get it onto a device with working UI and code. This can slow down the process though, so testing sketches or wireframes can also be a great way to get useful data. My preferred way to share is to present from Sketch or Keynote. If it's an Xcode project for internal use then I share repos via Git or install to a development device from Xcode. For non-developers I use Testflight or distribute builds via the App Store.
Once the work is in the hands of real people I like to test and measure how everything performs. Normally this means usability testing in person or via video, user feedback, and quantitative analyses to evaluate the work against the project goals.
Step 4. Repeat.
Once the app is live I like doing as many iterative releases as possible. The apps needs to feel great and achieve the business goals, and this can only be achieved by going around and around many times.
If this is my own project I’ll keep looping around forever. If it’s a client project with a limited budget then I usually transition out after the first few major versions have stabilised and the app is working well.
At this point I'll help the client hire their own in-house team of designers and developers so they can grow the app into its next stage, or I'll return to help out with major revisions or minor updates as needed.