The essence of proper development processes is frequent value delivery and feedback

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:

  • Fast Iterations of value delivery (e.g. daily delivery in Continuous Delivery, N-week delivery in Agile, shortest delivery frequency possible in Lean Startup, fastest flow possible in Kanban)
  • Customer-Centric Approach and qualitative feedback (e.g. customer development in Lean Startup, User Stories in Agile, User research/observation and testing in Design Thinking and Design Sprints)
  • Short-Lived plans (there are no detailed long-term plans. Launch and learn to remove uncertainty and pivot plans. E.g. Release and Sprint Planning in Agile, MVP in Lean Startup, Ideation and Testing in Design Sprints, JIT planning in Kanban)
  • Quantitative analytics (e.g. analytical dashboards in Lean Startup, story points and velocity in Scrum, Cycle-time in Kanban, release frequency or MTTR in DevOps)
  • Co-Creation and efficient communication (e.g. planning, stand-ups and retrospectives in Scrum, Kick-off meetings in Kanban, Pair Programming in XP, ideation in design sprints)
  • Team Productivity Optimization (e.g. WiP optimization and reduction of waste in Kanban, Batching of activities in Design Thinking and Design Sprints and CD, sequential LOFA validation in Lean Startup, deployment automation, Continuous Integration and testing in Continuous Delivery)

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?

--

--

Faris Zacina
Ministry of Programming — Technology

CEO @ Ministry of Programming. I enjoy startups and software innovation.