In this article, I explore the intersection of different software development methods to illustrate the common principles.
More than 10 years ago, I studied iterative methods and used the “Rational Unified Process — RUP” in my faculty assignments. That was the last time I wrote zillions of documents before starting with the real design and code. I smile when I remember drawing dozens of detailed UML diagrams.
When I started working full-time, one of my first projects was to build a set of scrum tools to enable the management of software development teams. We tracked work items, bugs, time spent, velocity, etc. with the end goal of having a better process. Scrum always felt a bit too much as a choreography, and I’m not sure that most people ever understood the underlying principles and value.
After I moved from project-focused companies to product-focused companies, I became familiar with Kanban, lean startup, design thinking, and design sprints methods. The impressive parts of these methods are primarily the short iterations and removal of strict rules, which is liberating. These methods made me focus again on reality through real metrics.
Recently I discovered continuous delivery and it was an epiphany. I realized it’s the most advanced process for delivering value frequently, while, at the same time, automating repetitive work.
At the intersections of different methods, we can find similar ideas:
These are not all principles that intersect between different methods, but the most important ones.
Could you invent your own method by combining the principles above in different ways? Yes.
The essence of good development processes is the combination of foundational principles, which is also a reason why the Agile Manifesto is still relevant today, as it was in 2001.
And finally, does it really matter which process you use as long as You deliver real value frequently?