Start Here

If you’re like most of my readers, you’re already a successful iOS developer. You’re able to create apps and ship them.

But the older the code gets, the harder it is to maintain. New features aren’t as easy to develop; the code seems to resist change. You’re spending more time fixing bugs than you used to.

late night coding

late night by Mike McCune, used under CC BY 2.0 / Cropped

Sometimes there’s a call to take existing code and reuse it. This might be in a new target, such as a share extension. Or it might be in a new project altogether. This sounds easy to the product owner, but you find it’s actually quite hard.

Does This Sound Like You? Be Honest:

  • Is your codebase becoming easier to manage? Or harder?
  • Are there sections of code you’re afraid to touch?
  • Are you free to refactor ruthlessly? Or does the code itself resist attempts to “respond to change,” making it hard to be agile?

If you feel your code is becoming brittle and harder to work with, you’re not alone.

I Know How You Feel

I’ve been in those situations. I was on a team responsible for maintaining a touchy framework used by the rest of a Fortune 100 company. Successful changes became harder and slower. Eventually, the entire team was laid off and the framework was replaced.

At each new job, I’ve been confronted by code that was tangled together.

In the midst of chaotic code, I began carving out areas of safety:

  • I learned about object-oriented design.
  • I started practicing Test Driven Development (TDD) and Refactoring in 2001.
  • I’ve been applying TDD to Objective-C since 2005 — first on macOS, then on iOS.
  • Now I’m doing TDD in Swift at another Fortune 100 company.

Me at my computer

My Goal in Writing This Blog

I’m here to help you create iOS code that is maintainable over the long haul. My goal is to equip you with practical approaches that you can put to work to achieve greater success. If you’ve ever been frustrated by fragile code, or interested in unit testing but afraid it would slow you down — then Quality Coding is especially for you.


I can't thank you enough

Jon, I can't thank you enough for putting together these videos AND some of the frameworks that help facilitate effective testing for Objective-C projects.

I think the biggest impediment to high quality code on a lot of the iOS projects I've been involved with is lack of knowledge around good coding and testing practices, and I find myself referring more and more people here to Quality Coding.

Tim Pesce

If you’re new to my site (and you likely wouldn’t be on this page if you weren’t), here are some of my most popular posts in each category.

My Most Popular Posts


Unit Testing

Architecture & Design

Project Structure & Language


My Archive

You can also check my blog’s archive for a list of every post I have written, or use the search field in the sidebar to find other posts that might be of interest.

My Products and Services

While the content on my blog and the tools I provide are free, I do offer a number of commercial services. Click here for more information.

A Word about Affiliates

Some of my articles contain affiliate links to products, apps, and services. If you click through and purchase, I will receive a small commission on the sale. Rest assured, I only recommend products or services that I personally use or believe will be helpful to my readers.

Subscribe to My Blog

In order to make sure you don’t miss my newest blog posts, why not subscribe to my blog? It’s fast, easy, and you can unsubscribe at any time. Best of all, I have a special gift when you subscribe. (Click here to learn more.)

Yes, you can tame your code. Let’s do it.


Thanks for a great blog. You've really inspired me down the TDD route!

Mikael Hellqvist