Moving Average Inc.

iOS App Quality

How to build a solid app

John M. P. Knox


Does your team struggle with bugs and delayed releases? You're not alone. Many organizations struggle to release usable websites on mobile devices. Native mobile apps present even more challenges and require a specialized infrastructure to address. Trying to apply a front or back-end web development methodology on an iOS app doesn't work.

The most fundamental building block of a high-quality software development process is a bug and feature-tracking tool like Jira or Basecamp. Every line of code your team commits to your codebase should link to a well-written ticket. These tickets help you prioritize, track, manage releases, and communication with members of the development team -- especially Quality Assurance.

Next, a high-quality iOS app development process requires peer code review. A second developer should inspect every line of app code before it can migrate into a release branch -- no matter how senior the original developer may be. Typically this is mediated through a pull request process like GitHub offers.

Every pull request should also execute your automated suite of unit, integration, and UI tests. You may also wish to have the code style checked automatically on the creation of a pull request. Automated tests might not fully cover your app's experience, but they are needed to catch errors in core functionality and provide quick feedback to developers. Detecting the "obvious" flaws with automated tests frees up your quality assurance team to focus on more complex and nuanced issues like usability and consistency. I've seen teams struggling to achieve product-user fit simply because the delay from bug detection to bug repair reduced their efficiency.

An iOS development team also needs an automated build (or CI/CD) pipeline to deliver quality apps. Building and shipping an app from a developer's Mac is NOT the best practice, even though I still run into teams at established companies. Every pull request should kick off a build to run your suite of automated tests, and prevents a merge until they pass. Every completed pull request should automatically run a build, which creates a developer release for internal testing.

Your app should also integrate with crash logging tools (e.g., Crashlytics), analytics tools, and possibly a production monitoring log like Papertrail. Also, consider in-app user feedback or support widgets to capture customer feedback. Inform your product roadmap with suggestions from customers, sales teams, and your customer support/success teams.

Finally, your app's codebase should make consistent use of code design patterns, Swift, or Objective-C best practices, and good object-oriented design. If your app has no sense of organization to the code, maintaining and improving it will cost a lot more. In addition, you will find it challenging to help new developers become productive in your codebase.

You can find an expanded guide to the iOS Development Process here.

If you'd like help in any of these areas, please drop me a line to reserve a week of my time.

Learn More