Three Maturity Levels for Software Delivey

I believe that there are three maturity for software delivery.

Level One is delivering software as specification;

Level Two is delivering solution to solve business problem;

Level Three is  delivering solution to deliver customer value;

To be agile, you need to be at level 3


Transition in Agile Project Life Cycle

After some reading of "Lean  Startup" and "Scaled Agile Framework", I start to think about to add "Transition" as part of project life cycle into our projects. The problems that we have been experiencing are:

  • There is no feedback after projects delivered into production environment
  • Lots of team members treating deploying into production as end of life cycle
  • We have lots of features deployed into some of server for early access purpose, but there is no feedback loop into development team
  • Difference between business values expected to delivered and business values gained, no learning gain from that
From 2 months ago, I have setup portfolio board which outline projects and BAU items in project as a business and start to have in-transition as part of process. What is most important factor we are looking for
  • Mindset that project is only finished when stakeholders/customers gain values from it
  • Build learning culture across business about what we have failed and been succeeded 
  • Extend learning culture from Engineering team to other business departments
  • Early access program which bring a safe-net to delivery team 
  • Help support team and operation team preparing for production 

We are still working towards a better transition period. But most of feedback is positive and we will continue and make it better. There are few things that we have done along the way with feedback
  • Build rhythm for projects in transition too like setting up catchup every week
  • Setup specific page or websites as communicate tools between customers and business when projects in transition stage
  • Dedicated communication channels while projects are in transition to make sure problems solved as soon as possible so that business values can be delivered
  • Stories discovered in transition stage is always treated as highest priority
Please note transition is different from "harden" sprint in many ways. And if you are working towards continuous delivery, you should not have "harden" sprint at all.  At the transition stage, solution is delivered what it designed to do. But it may not fulfill customers' expectation fully or the solutions is deployed to test hypothesis. From transition, we need to learn something and business will grow with the stuff learn from it. 


Stakeholders and Business People in Your Project/Product Delivery

It has been amazing Agile journey since 2006 when I applied some general agile practice in my own business. And I have seen lots of advantage when business is small and innovative. And it fits with my personal believe that team output can be gain while empowering people. I had been working as owner, project manager and architecture designer at that time. It all works so perfectly because I always brought lead developer with me to talk with customer. As its nature of business, it is easy to get business people and client together with developers. 

But recent experience with SCRUM has given me headache. Product owner has been go-to person for questions related to business. Product owner decision is representative of both clients and business needs. Communication lost cost is high. And my experience has been that product owner acts as middle man in the case they are accountable for product delivered. I personally believe bring stakeholders including customers into table is one of the solution when product owner has decide priority and core requirement. 

What I am doing at the moment? There are few things: 
  1. Identify stakeholders from internal and external in project vision statement
  2. Bring stakeholders in grooming sessions to help developers understanding what customer needs
  3. Product can decide whether it is in scope or not if developer think some changes may requires huge amount of work
I have been pushing vision statement and identify stakeholders for projects. It has bring lots of value into business in which we don't such doc before. And I haven't try 2,3 yet. And planning to do soon. 

If you have some way to involve stakeholders in discussion both before development and after development, please send me or leave as comment


My Agile Failures - Deliver Software Frequently without Enough Safenet

"Deliver software Frequently" becomes symbol being agile. As my previous post, I am talking about that delivery software to production is not finish line because feedback loop has not finished just with that. This post I will talk about deliver software frequently without building enough safe-net or not enough infrastructure.

Recently, I have been push software from releasing every week to several times a week. But in the same time, there was an incident happened. Of course, there are many reason behind that. There are always many reason behind an incident. But the most important lesson that I learn from that is safe-net for delivering quickly.

The basic assumption that a team should have is that if there is a failure, what we can do. How can we achieve rollback without customer notice or with minimal impact. "Fail more often" doesn't mean that you can fail more often. But it is a mindset that

. We gona to fail and we should have a way and capacity to quickly recover
. We should learn from our failure

Failure doesn't necessary a system failure, it can be that metrics shows that business hypothesis failed.

And I personally found "Post Mortem" is a good way keep us learning from failure in real time. Dont let similar bad things happen more than three times.

What is your failure experience with delivering software more often?


My Agile Failures - Welcome "Changes"

"Welcome Changes" becomes one thing that product owners/managers love most in Agile .  Most of time, when you talk with new teams, product owner/managers always come and demand changes; At start of my Agile journey, I did believe that "changes" are important. We should allow "any" changes. The outcome is output of team is unstable and feature delivered were hard to maintain. And from time to time, we missed commitments because of change required. And lots of changes doesn't bring expected business advantage. 

After years practice, I believe that there should be a line for

  • Whether a change is a new story or changes to existing story
  • Whether changes are the change which bring lots of customer advantage or it is another hypothesis from product owner/manager
And if you frequently experienced any problem related to story change becoming new story, you need to looking at what is the root cause of problem. It is very important to solve root cause of problem. Mostly, I found that lack of either functional requirement or architecture design are mostly root cause of problem. It is highly related misconception about agile doesn't require document. Agile means "communication" over "document". It does NOT mean that you don't need documentation. But from time to time, document, esp design document, are very helpful, but skipped. Although you don't need them in a very formal format. But some sketch on whiteboard and record them in somewhere will help team understand problem and find question earlier.


My Agile Failures - No or Long Customer Feedback Loop

For agile journey, most of companies focus on engineering practice like TDD, BDD, Automatic Testing, and Continuous Deployment. But the everything in agile is about shorting customer feedback loop time. Without it, agile practice will mean nothing to business. It will only become purely cost side for business.

The hardest thing in Agile is about involving customer / customer proxy in every stage of development including analysis, development, UI testing and customer satisfactory survey. Without customer feedback, any decision to change or add feature to a product is gut feeling and guess. Production vision is build from experience and vision. But to build a software product can survive, it is about to build an innovative product which support ever change customer's need. 

In my agile experience, I have seen similar problems happening from time to time where there is lack of customer interaction and there is no define of success for a story/feature. If the situation continues, it will cause friction between business and development teams. 

I still in progress build such feedback loop, I am trying following ways:

1. Get customers into UAT stage
2. Setup early access environment so that customer can access newly released features
3. Setup monitoring/tracking strip for user actions
4. Involve customers and other stakeholders at grooming sessions
5. Try to change to business culture to understand importance to have customer/customer proxy in house/easier to access while product delivery process

Do you have any suggestion for this? 


My agile failures - Deploy to production is a finish line

Agile principle highlight that to be agile, we need to deliver valuable software to customer in continuous way. In practice, it becomes continuous delivery. And we keep forgetting about customer value. 

My experience is that we focus on starting Agile transformation at Engineering/Technical teams is easiest way to do considering popularity of "agile" in software development space. But as soon as you get a team up to certain maturity level, you will be able to deliver a piece of software continuously. I were in a phase like that. And I still didn't see lots of satisfied customer faces. 

So what has been wrong? There are few things that I found that we can do better: 

  • Didn't engage customers in story discussion and delivery (we only involve customer proxy - Product Manager in the discussion)
  • Treat deploying to production as full stop, then 
    • Engineering is disconnected from customer; Small issues are stopping large number of customers adopting
    • Project based methodology has delayed future improvement
    • Support team take over communication even for MVP products
    • Lack of communication between teams and engineering team after software on production
What I have done to improve the outcome:
  • Setup a kanban which has "transition" as one of columns; Project/Stories will be only moved to "Party Time"/Finished/Done when it is proved to work for customers;
  • With above Kanban board, we make sure improvement stories related to new projects/stories have highest priority
  • Engage customer directly in "transition" stage so that customer values can be delivered in timely manner; Project can actually become "valuable" product
Some further things to be answered:
  • Does "Project" stop us from doing better job? 
  • Without project, how will you manage budgets? 
  • How to engage customers more in execution/in progress stage to shorten transition stage?  
If you have any suggestion, please let me know


My Agile Failures - Customer Value and Failure Demand

Agile first principle: "Our highest priority is to satisfy the customer through early and continuous delivery of valuable software."  So first of my thought that means that we should deliver customer value as quick as possible. As highly experienced developer and architect, a customer value does not only include function delivered, but also include non-functional requirements including quality, security and others. 

But with monitoring in place, it doesn't seems that our agile delivery bring more significant sales into business.  So which part goes wrong. A recent read of John Seddon article bring some lights on that. In his article, he talk about failure demand - "demand caused by a failure to do something or do something right for the customer".  Most of our "agile" delivery are delivering wrong thing quickly. 

There are few wrong sides for things delivered:

1. Miscommunication and information lost
2. Someone else did that and that is valuable to our customers too
3. Never analysis root cause of customer business problem; So solution can't solve the most important problem

Sprint Review has been prescribed in SCRUM as part of process. But our product delivery and customer value feedback were just skipped after sprint review. And there were no continuous improvement process related to product development and provision. 

What I am trying at the moment

1. I have setup Kanban to visualize whole product delivery process including MVP provisions 
2. Plan to have some review meeting like sprint review. But it focuses more on product delivery to customer. 


Agile Principles

Everyone in Software Development knows about Agile Manifesto;

But I personally believe the principles are more important.

What is your thought on each of them?

We follow these principles
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity--the art of maximizing the amount of work not done--is essential.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly