Building the Foundations of an iOS Application

Premise

What does it take to create an iOS Application that can have features added to it over a long period of time while resisting the temptation of wholesale rewrites? Can the foundations accommodate bug fixes made after months of neglect and unfamiliarity? What processes and infrastructure facilitate these goals? This article attempts to determine the foundations that lead to this resiliency using authoritative references. Failure is considered a valuable outcome worth documenting.

Questions

What prerequisite infrastructure is needed? Where is the interface with the operating system documented? What code patterns are used? How is user privacy and safety preserved by the application? How is application usability maintained? How is the application accessible to users? How is the application tested? How is the application deployed? How is the application monitored? Emphasize breadth over depth as a philosophy? Value knowing a library exists to do that thing over memorizing its API. Breadth can be depth. Value knowing how the OS works to understand crashes, but maybe not well enough to write system code?

References

We will attempt to build a process optimized to reliably determine the truth at the expense of speed.

Application Environment

When implementing new features or fixes what authoritative sources need to be reviewed? Apple understands the environment they built so we start with their [developer documentation](https://developer.apple.com/documentation/technologies), but there is no guarantee that it will be current, correct or thorough. When the official documentation fails, we can reference the less authoritative WWDC talks and tutorials for hints. Conference talks are frequently covering pre-release technologies so they are prone to inaccuracies post-release. Tutorials and their sample code similarly suffer from discrepancies due to the constant evolution of the operating system. Finally, source code or disassembled instructions offer a much slower but more insightful view of the truth. References published by Apple offer the opportunity to intuit their trends and design goals.

Delivery Pipeline

The book "Accelerate: Building and Scaling High Performing Technology Organizations" by Nicole Forsgren, PhD, Jez Humble, and Gene Kim provides evidence for the effectiveness of DevOps and its component parts. Related capabilities are: version control, deployment automation, continuous integration, trunk-based development, test automation, test data management, shift left on security, loosely coupled architecture, empowered teams, monitoring, proactive notification.

WWDC Talks

Conference talks are organized by year. WWDC 2022, WWDC 2021, etc. Working backwards in time leads to current information and working forwards in time leads to understanding how technologies have evolved.

Sorting Relevant WWDC Talks by Topic and Year

The large number of videos produced over the conference iterations is difficult to organize and comprehend. A script to scrape the video list from the Apple site for our own organizing and tracking will be valuable.

2021