Product problems compromise value delivery
Agile most marketable and viral aspect it is “value delivery”. That sounds great, but that will not solve all the problems of the software development and also it is just a one-dimensional representation of Agile.
The biggest
remaining problem for Agile development are the product problems. Often delivery and small releases will address
some well known problems in software development that too often will cause project
failures. Small releases, working software and close customer
collaboration will reduce the project level complexity, one of the major reasons
for these failures.
What about
product problems? Generic problems are related with accumulation of technical
debt, brittle architectures and loss of intellectual control over the product
knowledge. We need a solution also for
that aspect.
Technical Excellence
A great response
to such problems it is introduced by Agile Manifesto by demanding “technical
excellence” and good design. Jeff
Sutherland says that as a conclusion after 10 year of the Agile Manifesto, “technical
excellence” it is a key factor of success of Agile teams.
The question is
if these two principles to follow - close to the customer and technical excellence
- are sufficient to cover all kinds’ of possible problems.
Others problems
A tough
real-life scenario is related to new
products or new significant part of the product that need to be distributed, deployed
to more clients. An initial one-time distribution to more clients it is rather
Waterfall than Agile despite the fact that developing could use iterations and
customer collaboration. There are several reasons for that: a full-new product deployment
it is equivalent with a big release (also with a rare delivery) and it is hard
to imagine that we will work close with all the customers.
A great Agile solution
for such kind of problem suppose, an (obviously!) incremental approach. Scott W. Ambler has described such
solution here (“An Exploratory “Lean Startup” Lifecycle”):
This problem and the product knowledge problem need supplementary solutions.
Solution step #1 – Inject the business
The main
conclusion is that we have a supplementary dimension of Agility beyond often delivery:
we need to often and continuously inject back the business into the product.
The product should be kept close to the business where will be integrated.
Solution step #2 – Products with “Business DNA”
Other question: how we could know that that business “injection”
will be effective, when some recurrent problems are the loss of the intellectual
control over the product knowledge and the product fragility because of increasing
technical debt. Let remember what will request Robert C. Martin if will be your CTO (): "We will not ship shit.", "You will always be Ready.”, "Inexpensive Adaptability."
We will always
be ready with inexpensive adaptability if will be performed a creative work to model that business before include it
in the product.
The deliver
product or product change will need to “live” inside the customer business and
will need to adapt and evolve in that environment.
.
.
In order to realize a „natural” evolution inside the target business, the software system must have „Business DNA”. Translating that in engineering measures that mean all architectural aspects must serve that business integration.
.
Solution step #3 – Implementing the “Business DNA”
There are some software engineering instruments
that could build and protect the „Business DNA” for a software product.
.
.
Functional cohesion
- The core structure of the software should match the real business functions. A change in the business will be reflected with minimum effort and with maximum quality in these cases
- That will be the core representation of Business DNA
Separation of concerns
- Beyond any particular architectural or design patterns, a basic rule is to kept distinct concerns decoupled. A default separation should be the one between technological aspects and functional aspects
- That will protect the Business DNA from technological changes
Good design &
technical excellence
- Good design will enhance any software development enterprise
Solution step #4 – Agile product = Adaptive product
The missing link
in Agile Development seems to be a principle that requires an “Adaptive Product”,
with good design and “business DNA”. We should always think to “Agile Products”
as “Adaptive Products”.