1
 
 
Account
In your account you can view the status of your application, save incomplete applications and view current news and events
September 02, 2019

Developing for the OTTO platform: What have we achieved so far?

What is the article about?

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.

Overview


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:

Phasen der Plattformentwicklung bei OTTO
Phasen der Plattformentwicklung bei OTTO
Phasen der Plattformentwicklung bei OTTO

Step 1: Preplanning

Of course, such a large project is not easy. At the beginning, a lot of questions arise, for example:

  • What exactly is to be developed?
  • How do we want to organize ourselves?
  • Which technologies and architectures do we want to use?
  • What do we call the project?

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.

Understand the Business:

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:

Post-Its im Rahmen des Event-Stormings
Post-Its im Rahmen des Event-Stormings

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:

Kontextmap, die sich aus dem Event-Storming ergeben hat.
Kontextmap, die sich aus dem Event-Storming ergeben hat.

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:

  • Each context describes a self-contained subject matter.
  • Each context is as independent as possible from surrounding contexts and also serves a business purpose on its own.
  • The relationships show which contexts exchange data with each other (asynchronously as possible).
  • Each context should be able to be handled by a single product team.

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 do matter!

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.

Projekt Deep Sea
Projekt Deep Sea

Agile Projectmanagement

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:

1. as much responsibility as possible in the product teams.

The product teams essentially consist of the following roles:
Die Rollen unserers agilen Productteams
Die Rollen unserers agilen Productteams
  • Product owner (PO): A colleague from the business who sits on the team and works out the direction in which the product is to be further developed.
  • Business Designer (BD): An IT colleague who can translate the business requirements into concrete stories. Spoiler: In perspective, the roles of PO and BD will probably merge.
  • Business Analyst (BA): A few teams with very complex technical contexts also have a business analyst as an expert for a specific topic.
  • Technical Designer (TD): The TD is a senior developer who represents the team in external communication on technical topics and designs the technical architecture internally with the other developers.
  • Devs: The developers are at the heart of every product team and ensure that the technical requirements are translated into executable software. Devops is an integral part of all teams. Our developers are also involved in the conception of the products and can thus also contribute their technical know-how and innovative strength to the product development.
  • Scrum masters: They supervise up to two teams and ensure that social problems are solved within the team but also that a continuous improvement of the team with the Scrum methods takes place. This concerns both the software quality and the development speed.

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:

  • Functional roadmap
  • Software development
  • Operation
  • Cost responsibility
  • Quality assurance
  • Security, performance, scaling, maintainability, etc.

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.

2. scrum - with bi-weekly sprints as the overarching clock and working method to enable continuous improvement and planning in the teams.

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.

3. Helpful committees to work on cross-team tasks.

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.

4. regular project insights

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.

  • What do we mean by review:
    Each team conducts a review at the end of each sprint and uses the running software to show which new features (technical or non-functional) have been implemented. Here the respective team participates as well as colleagues from other teams and stakeholders who have a special focus on certain functionalities. After the presentation of the results of the last two weeks and the outlook on the next sprint, there is always a good direction check with the stakeholders.
  • What do we mean by Showcase:
    Every two weeks, two teams present the main new features of all teams. More than 100 colleagues, from developers and administrators to the board of directors, regularly attend. In this way, all interested parties know very well at all times where the project stands and how we are progressing. We are aware that this approach is burdensome for the presenting teams. This is exactly why this job rotates, so that we spread the task on different shoulders.

5. early attention to non-functional requirements

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.

6 Internationalization: English as the project language

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.

Technical Architecture

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:

  • Each team develops self-contained systems. This goes hand in hand with independent deployability and the extensive renunciation of synchronous communication.
  • Each team maintains its own infrastructure in its own AWS accounts.
  • Each team should be able to deploy at any time. Usually with continuous deployment

Microarchitecture

  • Within their area of responsibility, teams are free to choose technologies, but their responsibilities require them to independently consider available expertise, potential synergies, etc.
  • At DeepSea, the technologies used are actually very diverse. Very commonly used technologies are Java, Terraform, DynamoDB and MongoDb and SQS/SNS.

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.

Step 2: MVP until February 2019

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.

Step 3: What are we working on now?

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.

Explanation of terms

Project Ihotse

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.

More information.

Domain driven design (DDD)

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.

More information.

Event Storming

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.

More information.

0No comments yet.

Write a comment
Answer to: Reply directly to the topic

Written by

Christian Finckler
Christian Finckler
(former) Technical Architect at OTTO

Similar Articles

We want to improve out content with your feedback.

How interesting is this blogpost?

We have received your feedback.

Allow cookies?

OTTO and three partners need your consent (click on "OK") for individual data uses in order to store and/or retrieve information on your device (IP address, user ID, browser information).
Data is used for personalized ads and content, ad and content measurement, and to gain insights about target groups and product development. More information on consent can be found here at any time. You can refuse your consent at any time by clicking on the link "refuse cookies".

Data uses

OTTO works with partners who also process data retrieved from your end device (tracking data) for their own purposes (e.g. profiling) / for the purposes of third parties. Against this background, not only the collection of tracking data, but also its further processing by these providers requires consent. The tracking data will only be collected when you click on the "OK" button in the banner on otto.de. The partners are the following companies:
Google Ireland Limited, Meta Platforms Ireland Limited, LinkedIn Ireland Unlimited Company
For more information on the data processing by these partners, please see the privacy policy at otto.de/jobs. The information can also be accessed via a link in the banner.