This article is part of the series Your Company Will Never Be Agile. It is a case study about a company that managed to stay small and agile throughout their history.
Smarter Ecommerce has been an agile company from the get-go. Peter, who was one of their first employees in 2008, was always a strong advocat for agile software development.
They started with a “process” that was mostly scrum, but after almost 10 years of continuous improvement, it now looks a bit different. In those years, they started some remarkable practices, like daily tech talks and “Freaky Fridays” (see below).
Over the years, the developers started to “radiate” agile ideas to the rest of the company, and other departments (Product management, online marketing, …) started do adopt agile practices and to live by agile values and ideas. Now the whole company is “agile”.
Smarter Ecommerce places a strong focus on technical excellence and continuous learning. But this does not mean 100% defect-free software for them. They created a culture where failure is allowed, but where they try to detect problems very quickly and in an automated way and fix the important ones right away.
A Company Based on Values
Smarter Ecommerce changes their processes on a regular basis. They run small experiments all the time (from a few weeks to a few months), the keep what currently works and change what does not work - or does not work anymore.
They do this based on their values: They want to be a great employer, they want to enable their employees to learn and grow professionally, they want their employees to take responsibility, they want to adapt their processes for their people and they want to improve continuously to stay fast and agile.
To stay agile, you always have to adapt the process for the people you actually have. As a manager, you have to develop a lot of empathy for your teams and employees. Christian Gorbach
The key here, to me, is empathy. You need a process that works for the people you have right now. Not for the people who wrote the Scrum Guide. Not for the people you’d like to have. This process might be different for every department, or for every team. Which is totally OK - It only has to work for this single team!
Also, they actively manage process changes: They have a change process for process changes. This means that they try to make changes and run small experiments all the time. They run experiments for up to 3-4 months, then keep what works, and change what does not. They also accept that things that worked well in the past might not work anymore - They even change well-established “best practices”.
To manage process changes, they create “process change tasks”, assign them to individuals and track their progress.
Agile in the Whole Company
All departments at smarter ecommerce work in an agile way. They saw what was working for the developers, learned about the underlying ideas and started to adopt some of the practices, and changed others. They were actively encouraged to do this by the management of the company.
If your product management is not willing to work in an agile fashion, you will never be agile. Peter Rietzler
But not all teams / departments use exactly the same process. They are free to experiment and change the process in a way that best fits them.
Focus on Technical Excellence
Smarter Ecommerce have a strong focus on technical excellence. They actively encourage all their developers to learn and play with new technologies (see below).
They are very eager to automate everything. “You can only scale a company with great technical automation and using great tools”. They have automated quality assurance, deployments and failure detection.
But technical excellence does not mean defect-free software for them:
We have to let go of the idea of "100% defect-free software". This is expensive and slow. We have to accept failures, but have to be able to detect them quickly so we can react and learn. Peter Rietzler
According to Peter, fixing a problem in software can be more expensive than a manual workaround or a change of a process. When you fix a problem in software - especially one that rarely happens - You have to pay for it forever, on an ongoing basis: The fix affects your architecture, your design and the maintainability of your software (more code is harder to maintain).
The key here is to detect problems as quickly as possible, in a fully automated way. And then decide quickly: Do we fix this problem right away, should we fix it later or can we ignore it?
Continuous Improvement and Learning
The company puts a lot of effort into hirign, because they want to hire people who are eager to learn. They have accepted that the cannot hire the perfect employee, but they think that they can train them.
Everyone thinks they are willing to learn, but not everybody actually is. Christian Gorbach
They give their employees a lot of time for learning and professional development. Almost every day (but at least three times per week) they have “Tech Talks”, where one of the developers talks about a new topic for 15 minutes. The developers get time to prepare the talk (this should also be done in about 15 minutes), and everybody has to give tech talks.
With this practice, they learn about many different, emerging technologies. And all the developers learn to grasp new concepts quickly, to find the important information about a new technology in a few minutes and to talk freely (almost unprepared) about it.
They also have what they call “Freaky Fridays”: Every Friday, on of the developers DJ - she is responsible for playing music. All other developers get the time to work on whatever they want. They could do a refactoring they didn’t have time for, read blog posts, try out a new technology - Really, whatever they want. The only thing they should not do is work on the tasks they have in the current Sprint.
Actively encourage process changes: Have a change process for process changes. Assign process improvement tasks to individuals and track their progress.
Process changes have to come from the team: Process improvements have to come from the team. This also means that every team has to be allowed to have a different process than all the other teams.
The whole company has to be agile: Don’t stop at the development teams. Make sure other departments learn and understand agile values and principles, and let them design a process around that.
Give people time to learn: At Smarter Ecommerce, people not only get time to learn / experiment, they are actively encouraged to take this time. “We sometimes have to force people to stop working on the current sprint”, Peter told me with a wink.
Focus on technical excellence: Automate everything. Encourage people to become better at what they do - And then give them the time and budget to achieve this.