When researching the App Store's impact on how we build apps, I noticed an inherent relationship between the distribution model and software development methodology. From an evolutionary perspective, you can cluster this relationship into four distinct periods:
The Beginnings (1950s - 1970s)
Software and hardware were bundled together and custom-built for large companies. The development process was essentially copied from civil engineering/manufacturing.
The PC Era (1980s - 1990s)
With the PC revolution, hardware and software became unbundled. You could simply buy your software over the counter on floppy disks or CDs. The predominant development methodology was Waterfall: building software by separating analysis, design, development, and testing into sequential steps. Testing was particularly important, as it was not easy to fix bugs after release.
The Internet Distribution Era (2000s)
The possibility of shipping bug fixes and improvements over the internet also led to the rise of Agile Methodologies, like Scrum, Kanban, and Extreme Programming. These iterative methodologies allow for shorter cycle times, thus shipping updates faster to users. Apps were released in three types of versions:
Major Versions (e.g., 1.0): Used for introducing major tentpole features. Often, these were also sold as paid upgrades to existing users.
Minor Versions (e.g., 1.1): Used to add smaller features and user-facing improvements for free.
Patch Versions (e.g., 1.0.1): Used to ship bug fixes and technical improvements to users for free.
Note: It was during this time that the App Store was introduced, clearly with this business- and distribution-model in mind.
The SaaS Era (2010s - present)
With the increasing dominance of Continuous Integration (CI) & Continuous Delivery (CD), mechanisms that allow developers to easily integrate code changes into the current software (CI) and automatically ship those changes to users (CD), software companies were finally freed from thinking in versions. They don't have to hold back features to make a paid upgrade worthwhile. Users are now finally willing to pay monthly/annual subscription fees for software. To maximize this newfound freedom and deliver user value as fast and as often as possible, companies utilize frameworks like Lean Startup, Design Thinking, and Continuous Discovery, in combination with Agile Software Development Methodologies. This is what I call Lean Product Development. This approach is more than a collection of frameworks; it's a mindset. Companies that adopt this mindset have a competitive advantage.
So, each era has its own distinct software development/product management process:
- The Beginnings: Manufacturing processes
- PC Era: Waterfall
- Internet Distribution Era: Agile methodologies
- SaaS Era: Lean Product Development
However, here's the thing: Lean Product Development is only feasible on the Web. Apps, especially those distributed through App Stores, are stuck in the previous era. But that's a post for another day.
What do you think of the relationship between distribution models and Software Development Methodologies? Do you agree with how I clustered the time periods? Let me know at email@example.com. I am here to learn.