iOS and Mac apps rely heavily on state to change their presentation and respond to input—it’s hard to imagine writing an app without the use of properties and variables. However, state is also a huge source of needless complexity, and responsible for most of the easily avoidable bugs that users encounter. Think about how many times you’ve heard “turn it off and on again” as the way to solve a problem—and furthermore, how many times it’s actually worked!

“Enemy of the State” (slides and presenter notes available)

Enemy of the State” is a talk I created and presented multiple times in 2014, in which I explain what state is, detail exactly why it’s so harmful, and offer ways to minimize and avoid state—making the apps we develop simpler and more reliable.

This presentation is primarily aimed at Cocoa (iOS and macOS) developers, but the fundamental concepts, and the discussion of how state breeds complexity, apply to all of software engineering.


Here are some of the materials referenced in the talk:

Leave a Reply