I know, the last article was already a year ago. This is not because there is so little to report, but so much. But let's take it one step at a time.
As you could read in the previous part, we have started to transform OTTO's business model from a retailer to a platform. As part of our platform strategy, we are developing new business capabilities so that we can offer our customers and partners the greatest possible benefit for their respective needs.
For anyone wondering what OTTO's platform strategy is all about, I recommend this (german) interview with my colleague Tim Buchholz, who as Principal Platform Business is driving the transformation together with his team.
This includes building a functioning marketplace. For us, this symbolizes, for example, the ability for partners to offer products in self-service. As a platform provider, we also want to expand our service universe and offer our partners an all-round package, from financing to logistics services. Together with my colleagues, I'm working on exactly that. And in the meantime, we have taken a big step forward. I would like to outline below how we have achieved this.
In retrospect, this project can be divided into the following phases, although we did not plan them that way from the beginning. We have developed this way in the course of time and in which order we approach the future, we also always consider step by step. In this way, we can always take into account the current circumstances.
In this blog article, I describe the following phases:
Of course, such a large project is not easy. At the beginning, a lot of questions arise, for example:
Of course, you can spend months or years on these questions and still never come up with the perfect plan. Many of us still know this from the waterfall world. That's why it was clear to us early on that we wanted to develop in an agile way. But agile doesn't mean haphazard either.
We therefore started a two-month preliminary project with about 30 people from IT and business. Using the method of Domain Driven Design we approached the question of what capabilities we needed as a platform. Despite a lot of prior knowledge, it was very helpful to think about all the topics in a completely new way.
First, we got to grips with the method of Event-Storming and worked out which steps have to happen one after the other in order to create an optimal business process. In the process, we basically created a wall full of ideas that we collected on sticky notes. From left to right, these sticky notes lead us through the customer or partner journey:
Why slips of paper and not digital? This is mainly for practical reasons: It is actually much easier and literally more tangible to stand with many people directly in front of the wall and simply move notes around. This gives us in the team a transparent insight into the to-dos of our colleagues and we know who is working on which topic and what the status quo is.
With this starting point, we have created a so-called context map. For illustration purposes, the following is only a zoomed-out image:
An example of a context shown here is payment processing. To give you a better idea of what I mean by this. This context map combines several pieces of information:
In the case of the payment processing example, the responsible context is the actual connection of different payment service providers. The responsibility for deciding from which customer we expect which deposits and withdrawals is again in a different context.
With this information, we were equipped to define a Minimum Viable Product (MVP). For example, an MVP for us was the development of a live deployed software for the marketplace to gain experience together with our first beta test partners. This gave us immediate, direct feedback and allowed us to implement improvements quickly.
We cut as many corners as possible at the beginning to keep the complexity small for now. For this MVP, that meant we developed only two payment types and no shipping costs as a first step. This allowed us to deliver results quickly. However, we were sure that with our agile approach, specific features could be added gradually - in a decentralized way, i.e. without joint (and sometimes time-consuming) coordination of all teams.
For this MVP, we have set a target date of February 2019. And this much I can proudly reveal at this point: We kept the deadline.
Names often seem like smoke and mirrors. But they help a lot in communication and identification with one's own work. In analogy to the Lhotse project , we have given this project the name DeepSea. For us, the name symbolizes that we are not only renewing the part that is visible on the surface, but also the part that takes place beneath the surface. And there, in the deep sea, there is also much that is unknown.
In addition to the question of content, we also thought about how we wanted to carry out the project organizationally during the preliminary project. It was particularly important to us that the teams can concentrate on themselves as much as possible and are not constantly burdened with status reports. Nevertheless, we want to keep our managers regularly informed about the status quo so that they can provide us with the best possible support where necessary.
These were our six recipes for success:
The product team thus combines in itself the complete know-how that is necessary for the further development of the product. This concerns in particular:
Across the company, there is also a strategy process. This takes place every three months. The main focus is on the prioritization of topics for which several teams are necessary.
An example of a topic that affects several teams is the so-called customer cancellation - i.e. when a customer cancels an ordered product. For this (1) the order processing has to be adapted, but also (2) the payment as well as the (3) partner communication. So at least colleagues from these three context teams are needed to solve this problem.
In the strategy process, all POs, plus some other stakeholders, come together and evaluate the relevant issues together. Based on this, they can decide whether a cross-team issue can either be worked on simultaneously by all required teams or pushed to the next processing phase.
All teams work in the same bi-weekly cycle. This makes it very easy to react to new findings at short notice, because all teams can help each other during this period, for example with a new interface. In the case of minor challenges that arise in day-to-day business, everyone helps each other immediately.
We have introduced an exchange round for both POs and TDs so that cross-team issues can be addressed and solved there on a regular basis. We usually form short-lived working groups composed of volunteers to work out the solution afterwards.
Extremely important for our project, in which we can take a lot of liberties, is transparency and trust. It was clear to us early on that transparency is the only way to ensure our colleagues' trust in our approach. Since we wanted as little reporting as possible, our regular reviews and showcases were important to us.
Very early on, the TDs in particular thought about how we could guarantee that the non-functional requirements would be ensured. To do this, we collected all the topic clusters and provided them with details. Then each team derived these topics for themselves and defined stories.
In this way, each team was aware of what needed to be taken into account, but the concrete implementation is still always up to the implementing teams. In addition, we involved special support departments, so-called security teams, at an early stage to support the teams during implementation.
We knew early on how big this project would be and that we would need a lot of developers. From the very beginning, we have focused the project on English in order to have the possibility to integrate many non-German speaking developers at our location in Hamburg.
This also makes it easy to collaborate with our development teams in India. In addition, after initial fears of contact, it turned out to be a great motivational boost for all colleagues to work in international teams. For all those who are interested, English courses are of course offered.
We started with the definition of our Technical Manifesto. In it, we set out our self-image and the demands we place on our software development. Basically, it is divided into two sections: macroarchitecture and microarchitecture.
Macroarchitecture
In order to support decentralized product teams, they should also be as technologically independent of each other as possible. Therefore we have defined the following rules:
Microarchitecture
If you're interested, I'll be happy to go into this point again in a separate post. Just leave a note in the comments below the article.
In software development, MVP means Minimum Viable Product. In other words, a product that is as small as possible but still adds value to the business. The goal is to be on the market as quickly as possible and to create a basis for continuous further development.
We started the MVP phase (approx. 6 months) with three product teams. We started from the beginning with the selected specifications from the pre-project and therefore also started immediately with bi-weekly sprints. Thus, we were able to show executable software already after the first sprint. After about three months, we were so well-rehearsed that we created three additional product teams and were thus able to develop all the required products for the MVP. In order for the three new teams to benefit from the experience already gained, people from each of the existing teams were transferred over.
In the last two months before the deadline, the joint testing phase with the first partners began, which actually went very smoothly. Although we were all deploying continously and therefore technically already live for a long time, the rollout date was still very exciting. Because that was the date when we actually flipped the switch in the otto.de webshop, with which the new partner products could actually be found and ordered.
The development of this MVP was very instructive for us, because it allowed us to test a lot of things without having to consider all the complexity. Our first two partners were also very satisfied.
The first weeks after our MVP, we focused on delivering some features that we felt were very important to make the MVP "enjoyable". Since then, however, our main focus has been on partner growth. This includes simplified and, above all, automated registration as a partner who wants to sell products on otto.de, as well as expanding our product ranges. I'll tell you more about that in the next article.
Is the most exciting phase already over? Not at all! The focus is now shifting to the topics of partner UI, which is particularly essential for smaller partners, and the further development of logistics services to further simplify processing for our partners. So this incredibly exciting journey has just begun. If you found this article interesting, please write it in the comments.
With the Lhotse project, the webshop (www.otto.de) was completely redeveloped in 2013. The project was a great success, already at that time we worked in distributed teams. We were able to massively expand our IT know-how and build a state-of-the-art flexible webshop.
Domain Driven Design is a working method for modeling complex business processes into manageable building blocks. The main idea here is that the domain influences the system design - with the aim of developing domain-oriented units that are as independent as possible. This fits very well with OTTO's philosophy of working in independent product teams.
Event Storming is a method for jointly understanding a business process within a workshop and describing it with events, actors and then contexts. It is particularly suitable for modeling business processes relatively quickly in collaboration with many experts. Event Storming is often a very quick way to start modeling the target system world in more detail using Domain Driven Design.
We have received your feedback.