In Scrum workshops participants often come up with platform migration as a task not suitable for Scrum. Examples are the migration from Rails 2 to Rails 3 or from one EJB version to a new one.
For technological reasons it is often not feasible or even impossible to have both platforms in parallel in the system. And the new platform API has breaking changes. Therefore installing the new platform results in a completely broken system and the team would need several Sprints to have a potentially shippable product again. The consequence at first sight might be to adapt Scrum regarding shippable product increments or to use another approach.
But: Sometimes we gather new insights when we make the probem worse. What would one do if we had to replace the programming language (e.g. migrating a COBOL system to Java)? You wouldn’t just install the Java compiler and try to compile the COBOL source files, would you?
You would rewrite the whole system step by step having potentially shippable code all the time. When this approach works for replacing the programming language it should work for an easier problem like replacing infrastructure as well. And it does.
Rewrite the system on the new platform/infrastructure feature by feature. Of course you make heavy use of copy&paste to reuse the existing code.
Is it worth it?
At first sight the incremental approach needs higher efforts. There has to be something on the plus side to make the approach attractive:
- Bugs are easier to fix: When you make a mistake during the big bang migration you will not recognize it until you have finished the whole migration. But then you introduced the error weeks or months ago and it will take you a really long time to figure out how to fix the bug. Using the incremental approach shortens the time from producing the bugs to detecting and fixing the bugs. That makes it much easier to fix the bugs and therefore reduces the effort.
- Remaining time is easier to estimate: When you proceed feature by feature you can compute an average velocity and create a rough forecast when all features are done.
- Release early: With proper prioritization you can deliver the migrated system to some customers long before all features are migrated. (You could start with the features for the customer who needs the smallest feature set). These early customers would give feedback about the system in production and so lower the risk of the whole migration.
There was a lot of buzz and critics about Scrum-like Sprints around the last time. One of the merits of the discussions was that now only the how but also the why was discussed. I try to do a short wrap up of what I read and think.
Forcing Hard Decisions
A Sprint in Scrum is timeboxed. Every Sprint has the same length and it ends when the time has come – no matter how much we completed. Jim Highsmith wrote on Twitter about timeboxes: “I’ve always said timeboxes weren’t about time, but about forcing hard decisions.” I think this is an important statement since it questions what a lot of Scrum teams do: Plan what to do during the Sprint and get the approval for that in the Sprint Review. When we look at the Sprint through Jims Eyes we get something different. First we have to think about the “hard decisions” we want to force. There are definitely several options. In my point of view there are two very important questions nowadays, that are related to each other:
- Did we validate or invalidate our assumptions?
- Did we produce value for customers and users?
The Sprint timebox forces us to decide how to proceed based on the feedback we got. Should we pivot or persevere? Should we stay with the current Product Backlog or adapt it?
Without timeboxes it is – of course – still possible to force these hard decisions. But most of us like to avoid hard decisions and tend to postpone and postpone and …
Creating Rythm and Flow
Tobias Mayer wrote on Twitter: “Reading anti-timebox tweets. It’s amusing how much disgust is aimed at a unit of time. Units of time create rhythm. Rhythm creates flow.” He added a blog post called “Timebox != Commitment” where he explains his perspective on timeboxes. It is NOT:
- Set a timebox size
- Commit to a bunch of work
- Realize you are failing to complete it all
- Rush to finish
- Produce crappy work
- Be exhausted
- Go to #2—repeat until dead, or company goes out of business
But it is:
- Set a timebox size
- Engage in dialog with requester/s. Review requests, prioritize
- Select a request, small enough to fit inside the timebox
- Complete the work to the satisfaction of the requester
- Breathe [reassess remaining requests if necessary]
- Go to #3—until there is no request that can fit in the remaining time.
- Stop work [if time remaining, take Slack time]
- Reflect. Learn from mistakes, and adapt accordingly
- Go to #2—repeat until all requests met, or deadline arrived at.
This perspective is supported by the latest modifications to the Scrum-Guide published by Ken Schwaber and Jeff Sutherland: The development does not commit to the Sprint Backlog but does a forecast (like a weather forecast) about what might be achieved.
Scrum-like Sprints are one possible implementation of timeboxes. I know of at least two other possible implementations. Here are the three options I am aware of:
- In Scrum we batch together a set of features during the Sprint Planning and use this feature set for the Sprint Review.
- In Kanban planning and release/review cadences are often decoupled. Review cadences can still be used in a timeboxed way (in the sense of Jim Highsmith to force hard decisions). In this case we batch together some features for review but not for planning.
- Eric Ries suggests to have a kind of deadline per feature in his book “The Lean Startup“.
In the end it is just the question of when and what to batch together and that is a question of transaction/coordination costs. Batching features together for a review is an easy-to-implement solution when we want to get face-2-face feedback from customers and users. When we have a lot of active users and work a lot with Lean Startup-like cohort metrics and the like we may not need to batch together features for review. Batching features together for planning is an easy solution when the “feature requesters” are not continuously available. When the “feature requester” is available all the time (e.g. because the Product Owner role is shared across the team) it may not be the best solution.
In march 2012 seven it-agile people (including me) formed the StartupMarch team. We decided to build a product to make online discussions more effective. In the end we had built http://www.discuss2decide.com and http://www.discumeter.com.
This blog post is about the “process” we used. We just started to build the product – without any discussion of the process to use – Scrum, Kanban, XP? We just didn’t talk about it. This is what emerged:
- Before the start of the StartupMach we only had decided on the problem to solve (online discussions) and the technology we would use (Rails). So we invested the first day for some conceptual work.
- At the second day we started the development of the first ideas. We had the first product (Duscuss2Decide) live at day 3 and the second (Discumeter) at day 5. After that we had more than 15 releases per day. The rule was simply: whatever you commit into the master (aka Trunk/Head) will go live immediately.
- Typically we started the day with an informal wrap up of the product usage (a kind of review if you want). Then we discussed what to do during the day (kind of planning). And then we did it. For both “meetings” together we invested 30 to 90 minutes.
- During the day we had 2 to 4 sync meetings to check where were and how to proceed (kind of Daily Scrum).
- We did no Task Breakdown but Story Splitting on a very tiny level. We worked with MMFs (Minimal Marketable Features) that we broke down into User Stories. Most stories were done in less than 2 hours.
- We managed work in progress by gut feeling. Normally we all would work on the stories of one MMF (single piece flow). That way a MMF normally needed one day to complete.
- We did Pair Programming in most cases and often switched pairs at the sync meetings.
- We had two retrospectives. One in the middle of march, one at the end of march.
- There were no roles. No Product Owner, no ScrumMaster, no Testers etc. Just team members. During our second retrospective we had a discussion about the roles. The conclusion was that we sometimes would have profited from a ScrumMaster for facilitating discussions and forcing us to face uncomfortable facts. And we thought that the absence of a Product Owner person was helpful. The team was not only empowered to decide on how to do the work but also on what to work on.
It was a great time. We had a lot of fun, we learned a lot and it felt very productive. Although we didn’t acquire millions of venture capital for our products, Discuss2Decide seems to have value for users. There are some regular users of the tool and most online discussions at it-agile are done with the tool today.
Will it travel?
Will the “process” travel to other contexts? I don’t know. I think there were two special ingredients that are uncommon and may have been crucial:
- With the seven team members we had roughly 45 years of experience with Agile of different flavors in the room: Scrum, XP, Kanban, FDD.
- All team members shared a common cultural background (it-agile) that showed up as an extreme openness for other’s ideas, perspectives and needs.
Read more about the Startup March.
Auf der diesjährigen JAX haben Arne Roock und ich zusammen ein Theaterstück in Sherlock Holmes-Stil zum Thema Qualität in der Softwareentwicklung vorgeführt.
- Das Skript mit Fotos aus dem Theaterstück gibt es als PDF.
- Ein kurzer Ausschnitt aus dem Theaterstück als Video findet sich hier.
- Ein kurzes Interview zu dem Thema mit Arne und mir gibt es hier.
Scrum is for product development. Check. There is the Product Owner, the Product Backlog and the Product Increment. Check. There is no project in the Scrum framework. Check. But…
What does that mean for all the service providers that are in the project business? They develop whole software systems and single features for clients. Therefore they face a broad range if project sizes: months or years with complete teams as well as one to ten days for a single developer. Therefore one of challenges for these companies is the so called resource management: How to staff all the projects and how to ensure that everybody is working on paid tasks.
When applying Scrum to these contexts I recommend to ignore the Scrum framework for a while and think about the Scrum core. That is – in my humble opinion: a cross-functional team with end-to-end responsibility that applies inspect&adapt to the what and the how of their work.
Therefore I suggest to start with the team and not the project: form long term stable teams and reorganize work so that it matches the team concept. Every team has its Product Backlog with all the thing they plan to deliver. These may be features of a larger development project mixed with single feature requests. Assign a Product Owner and ScrumMaster to each team or even better let the teams self-select Product Owners and ScrumMasters.
E voila: Ready to start with Scrum for projects and a lot of new options will occur. The teams could take over additional responsibilities like writing the offers, managing customer relationships, hiring new team members etc. Be prepared to be surprised.
“As a top manager I want to introduce Scrum.”
“Ok, you are used to say people what to do. But Scrum is about not saying people what to do. You should not start the journey to self-organisation with command&control as the first step.”
“So I am not allowed to do anything? I just have to sit here and hope that something changes for the better? You are kidding!”
“Of course you can do something. To make change happen you have to do something. But focus on the goal not on a specific approach like Scrum, XP or Kanban. So what is your primary goal?”
“I want shorter time to market and better products.”
“Fine. You could tell the team that you want to see running software demonstrated to happy customers every 14 days. And you leave it to the team how it achieves this goal. You should offer your help when impediments occur and you could offer to hire a coach. But the most important thing is: don’t interfere with the work the team is doing. Focus on their achievements.”
This blogpost is very much in line with Tobias Mayers Scrum: a 5-step guide for managers.
In March 2012 seven it-agile members formed a Startup team that tried to solve common problems with online discussions. We created two products (http://www.discuss2decide.com and http://www.discumeter.com), learned a lot and had a barrel of laughs.
Me and my collegues will write and talk about our experiences with Lean Startup, customer development, agile to the extrem, continuous deployment (we had about 15 live deployments per day) and more. I will collect all these ressources at this page.
Here is, what we have by now:
In letzter Zeit gibt es vermehrt Diskussionen darum, wie eine agile Organisation aussehen müsste. Radical Management, Management 3.0, STOOS etc. sind die aktuellen Schlagworte. Eine sehr frühe und sehr weitreichende Implementation dieser Ideen findet sich beim basilianischen Unternehmen SemCo. Der Besitzer Ricardo Semler beschreibt in “Maverick”, die SemCo-Geschichte. Und auch wenn das Buch bereits 1993 geschrieben wurde, hat es an Aktualität bis heute nichts verloren. Ich empfehle das Buch allen, die sich für agile / empowerte / menschenfreundliche / moderne / scrummige / schlanke Organisationsstrukturen und Führungsstile interessieren.
Mein Bruder Arne und ich haben zusammen einen Artikel mit dem Titel “Auf der Suche nach dem Qualitäter” im “Business Technology“-Magazin veröffentlicht, das in der Ausgabe 1.2012, Heft 8 ganz unter dem Titel “Qualität” erschienen ist.
In dem Artikel beschäftigen wir uns mit der Frage, was überhaupt Qualität ist und stellen die klassische Qualitätsdefinition (“Qualität ist die Übereinstimmung der Realisierung mit den Anforderungen.”) in Frage. Wir stellen die kundenorientierte Qualitätsdefinition (“Der Kunde definiert, was Qualität ist.”) dagegen und bringen diese mit agilen Verfahren wie Scrum und Kanban in Zusammenhang. Nicht zuletzt zeigen wir auf, wie die kundenorientierte Qualitätsdefinition in der Softwareentwicklung besondere Herausforderungen an die interne Qualität des Systems stellt.
Auf der JAX-Konferenz werden wir übrigens zum gleichen Thema zu sehen sein, allerdings in einem etwas ungewöhnlicherem Format (Schauspiel).
We founded it-agile seven years ago. This is a good reason to reflect on what we have achieved regarding management and organization within it-agile. Some of the things listed below were already in place seven years ago, others are just a few days old.
We believe that our employees are it-agile with the implication that the best employees would make the best it-agile. And we do not just aim for satisfied customers, we want to delight our customers. To express these believes we have a defined purpose:
“Create fulfilling jobs for our employees to delight customers.”
We achieve this purpose by:
- Transparency and openness: Nearly every information is visible for every employee including the wages, travel expenses and time sheets of every colleague (the CEOs are just colleagues also). On a company level the economic data etc. are accessible for everyone.
- Peer groups: Employees have self selected peer groups that work with the employee on personal improvements and suggest promotions.
- Pull principle: We have implemented the pull principle for coaching and development. Customer requests are visible for the whole company and employees pull these. So employees may choose to prefer jobs in their local area and decide on themselves if they are capable of doing the job.
- Meetings at it-agile are optional. Every employee decides for himself if he attends.
- As long as the results are achieved everybody can work when and where he wants. (Of course this has to be coordinated with colleagues and customers since most of the results can’t be achieved without colleagues and customers.)
- Every employee has 30 days of slack were he can do whatever he wants: go to conferences, work on a self selected project, read books, go to trainings, … Of course it is transparent within it-agile what everybody did.
- Employees don’t apply for holidays. They decide on themselves when they take their 30 days of holiday.
- Overtime: There is no pressure for working overtimes. Sometimes employees decide themselves to work overtime to achieve important results. The overtime is collected in a work hour account. Employees decide when to withdraw time from that account.
- Expenses: Employees decide how they travel and what equipment they need for their work. They don’t ask for permission. They just buy what they need.
- Profit sharing: About 2/3 of the company profits are distributed to the employees (in principle every employee gets the same percentage).
- Company ownership: About 2/3 of the company is owned by the employees. This implies ultimate empowerment: The employees can change ANYTHING. They could even fire the CEOs or change the purpose of the company completely.
Is it successful?
We have more employees, we have higher revenues and we have higher margins today than we had in the beginning. You never can be sure if the described principles created this growth or if it just was good luck. But I think we were and are successful.
Will it travel?
In general the described concepts shouldn’t be taken as a blueprint for another organization (although there are similarities with other companies like SemCo). I think we wouldn’t have been able to start with out current state even if we had known it. I think that we observed a kind of co-evolution during the last seven years. We made a small modification to the organization of the company. That enabled a small progress of company culture. This progress in company culture then enabled the next small modification of our company structure and rules. And so on…
Will it scale?
We started it-agile with 10 people. Now we are 35. In my point of view the things we did enhanced empowerment and autonomy which are important building blocks for our growth. The changes we made enabled growth. I think for further growth we have to intensify empowerment and autonomy even more.
Since there is no big boss at it-agile you never know what will happen next. There are some very interesting and challenging discussions in the moment.
BTW 1: We are hiring agile coaches and developers. (Notice; Sometimes people seem to think they wouldn’t match our expectations and therefore don’t apply for a job at it-agile. There is only one way to find out: Let’s talk!)
BTW 2: We offer consulting to managers who want to transform their company/business unit in an agile way towards more empowerment and autonomy.