How work can be – Stories of agile & lean

Post Category
→Self-Organization

[This topic in German will be part of the upcoming 2nd sipgate book \o/].

We don’t have any middle management at sipgate. In our teams nobody is anybody else’s boss. Hearing this, visitors often assume we’re without leaders. In fact, the opposite is true.

(Disclaimer: We do have a hierarchy. It only has 2 levels but it’s there. Our not-so-called C-level sets strategy and everyone else is trying to execute it.)

The roles of Scrum Master and Product Owner have elements of leadership in them. Product Owners have authority about what is being build. They do not have authority about people, their jobs, how the team builds something or the broader organizational setup.

Because nobody gets to lead solely by the power vested in them by some management title, everybody takes the lead sometime. If something is important to you and you don’t take the lead, there’s a chance nobody will. Fortunately, the issue that’s important enough to take action is a different one for different people. So it distributes nicely.

Some people will now object that there is always an informal hierarchy in a team anyway. And someone at the top. After pondering this for months and qualitative surveys at the coffee machine I can’t confirm this. Who’s on top is ever-shifting. Within any given team there are several people that lead, depending on the area in question. UX? Dan. Java? Lara. JavaScript? Kim. We follow their lead because we trust them to best judge the long term consequences of any decision. And yet, they usually don’t decide on their own, but together with others.

I’m pretty sure that half my colleagues would be team leads in other companies. They’ve got all the skills you’re looking for: take responsibility, present results in front of 100+ people, give constructive feedback, facilitate discussions and they’re reflected.

Btw, this post isn’t called “Agile Leadership” for a reason. In my experience, when managers talk about “Agile Leadership”, they babble about “empowerment” while keeping the existing hierarchy and its reporting structure as it is. Yeah, right. Wash me but don’t make me wet, much?

And what do we get from having a flat hierarchy? Everybody takes responsibility. We can take decisions fast. We don’t waste time on political games. Instead we can add value.

We don’t have any middle management at sipgate. There is still a boss – bosses even, plural – and we look to them for strategy and long term planning, but they are not involved in day to day decisions. In our ~12 product teams no one is the boss of anyone else. This often prompts the question “So, how do you take decisions around here? Who decides things?”

That’s an excellent question that I had absolutely no answer for, the first time I got it. I had never thought about it, because decisions just … get taken. But how? And by whom?

Once I started thinking about it, I realized that the answer is not straightforward, because it’s always different groups of people that take any given decision. The guiding principle is:

We want decisions to be taken by the people who have the most information to make a good decision.
Sometimes that is a single person. More often it’s a pair or a team. Decisions that are more far-reaching but affect mostly one job role can be taken by this role’s community, e.g. all developers or all UX designers.

What happens when people can’t agree?

Our teams have many degrees of autonomy to take decisions about “their” product. Most decisions are taken together. When the team can’t agree the decision falls back onto the most appropriate role: The Product Owner has last say on product feature, time budget etc. Developers have last say on technical implementation etc.

A smart team and Product Owner take care not to force too many issues, because that always leads to trouble down the road. Resentful people are not doing their best work. Fortunately, we can usually agree at least on a general direction

What about company-wide decisions?

In most cases, the group that can take the best decision overlaps with the group of people that will be affected by the decision. The smaller the overlap, the more you need to consult with the people that will be affected.

A popular way to decide something with the input of many people is to discuss it in an Open Friday session. Let’s look at a decision from about 2 years ago:

At sipgate teams can go out on team events to foster team spirit. A typical team event is an activity (escape room, cooking class, minigolf, …) + restaurant + booze. Up to a certain amount, this is on the company’s dime.

Now, our colleagues in accounting had noticed a worrying trend and pitched the following session: “Last year, we’ve had 1 team building event in the whole year. Now it’s April and we’ve already received 5 team building events. We suspect some of these to be regular ol’ team events but we can’t and don’t want to decide which is which. We’d like to talk about how to handle this.

Wait a minute! “Team building event”? How is that different from a “team event”? Turns out, a team event is is your own private fun, whereas a team building event counts as company time, i.e. you can go home earlier if your team building day is longer than usual.

Anyway, at the time of the session, about 12 people from all over the company met and a short Q&A and some discussion we came up with a list of criteria so that every team can decide whether they are planning a team event or a team building event.

[A team building event is for teams that are in trouble. They typically last a day. You probably aren’t looking forward to them (see “team in trouble”). A team event is typically in the evening and you are happy to invest your own time because your team is awesome!]

Took less than 1 hour and those criteria still stand.

You made a money-related decision just like that?

Well, in this discussion a new colleague wanted to “delegate” the decision to a higher level: “Management has to decide that! That is not something that we can decide!”.

Not true. I could vividly imagine what would happen if we really bothered a higher level with that. The higher level would have been C-level, since there’s only 2 levels, C-level and everyone else. They would have looked at us like we’re crazy people and told us to decide for ourselves. They don’t want to think about minor operational stuff like that.

The same applies to at least 90% of issues that I’ve heard the “someone higher up has to decide that” bit by newbies. We absolutely can take many of these decisions and we do. We usually have more information and are also the ones affected.

It’s part of acclimatizing at sipgate to stop relying on higher ups. You can take your own decisions. You also have to. With great power comes great resonsibility.

What are the drawbacks of this distributed decision-making?

Problems arise, whenever it’s unclear who are the best people to take a decision. Depending on personality some drop issues, others talk to a looot of people to try to reach a decision.

Another is that we are used to great autonomy. When team decisions are overridden by C-level it’s usually not taken well.

You might think that “You have to discuss, so this approach takes longer” is also an issue. I don’t think it slows you down for two reasons:

A lot of decisions affect only 1 or 2 people and you can take those without asking anyone. You need a software tool for 50 bucks that will save you 1h per month? Buy it! The time to run this by anyone else is more expensive than the tool

Execution is faster, because we all agreed on what we want to do, instead of dragging our heals on executing something we had no say in and think is a stupid idea by someone ignorant

Would I trade this for a traditional top-down decision making process?

Hell, no! I admit, there were times (~2011) when I longed for someone to swoop in and just take a decision so that we’re done discussing. Now, I’m very happy that the powers that be deliberately created a decision vacuum until we had all learned to take widely supported decisions together.

Overall, I think this appoach makes us faster and results in much better decisions.

Addendum: I’ve just realized that this can only work because we’ve got a strong sense of “how we do things around here”.

At the end of 2011 I wrote about what makes an agile mindset (in my opinion) and even made a fancy infographic about it:

It concentrates on how people think about their colleagues as humans vs. cogs; whether they have a growth vs. a fixed mindset; iterative product development vs. extensive planning and more. These are all still valid, but I can add another set of examples today.

The past few weeks I have often thought about how conversations changed at sipgate over the course of the years and why it is much easier and more fun to get things done than in the beginning. So here’s a list of behaviours and how they changed:

“It can’t be done!” -> “We have to take X into account”

In the beginning, many a discussion about potential features revolved around a central theme of what we can’t do. There seemed to be an awful lot of things we couldn’t do, despite the fact that we were working with software. If we created it in the first place, we can also change it. Made me so angry, I ranted about it here.

These conversations have been replaced by “If we want to do that we have to take care of X and Y. Oh, and Z will be tricky, too. From the top of my head we look at a two month effort. Is this feature worth two months to us?” A much more productive conversation!

“Clearly A is better!” “No, B!” -> “Can we just try it?”

We used to discuss options endlessly. Fruitless hypothesizing. Nowadays one of us will rather soon ask something along the lines of: “Can we try it out? (What would it cost to just try? Can we decide this or who else would need to take this decision with us? How easy is it to roll this back if it doesn’t work out? Who might we confuse with this?)”

And the number of theories you can easily put into practice to see what happens is surprisingly high. I’d estimate about 90% of the time we realize that, yep, we could just try it out without repercussions.

? -> “Where’s the value to customers?”

Here I’m not sure what was the focus before. I suspect there wasn’t any focus. But nowadays if you want anything done you’re better prepared to explain how it is of value to a customer. Otherwise, fat chance!

As my colleague Mathias so beautifully put it about how we build websites: “At first we designed desktop first, then mobile first, then content first and finally: Purpose first.” What is it that we want the customer to achieve on a given page? This approach makes decisions and trade-offs clearer and points you into the direction you need to take.

Summary: Appreciative and constructive

In general the whole company’s vibe has become much more appreciative and constructive. There are hardly any cynics left. Instead we’re pointing out what’s already going well and look for solutions where it’s not. Most days, anyway. Nobody’s perfect 😉
It is a highly satisfying way to work!

Recently I’ve been presenting our Work Hacks at a couple of places and talking about pairing up as part of it. Not only do we pair program but we also mob program and pair up across roles: Dev and UX designer, PO and customer support, UX and PO, dev and customer support, dev and … You get the idea. We’ve done just about every combination our very cross-functional teams allow for.

Whenever I talk about this, a common follow up question is: “How did you introduce pair programming?” or “How did you make people adopt pair programming?”

Short answer:
We didn’t. Nobody made a concerted effort to establish pair programming at sipgate.

Long answer:
Not long after we started using Scrum it dawned on us that Scrum alone wouldn’t save us. Only combined with sound software engineering practices such as the ones from XP would we be able to improve our codebase.

Sometimes I hear tales by developers from other companies about management not wanting them to pair program or TDD. In our case the opposite was true. Our management was okay with TDD and pair programming. There just weren’t many people interested in doing it.

Fortunately “not many” is more than “nobody”. There were some curious minds and teams who started to try it out.

It worked well for them so they kept doing it and told others about it. And what do you know, just a few short years later (about three or so) the tables had turned and pairing up was the new normal. Now you were the oddball when you didn’t want to pair up.

To this day it depends a lot on the team. Some teams pair up all the time, some mob, some only pair up for critical stuff. All of that is okay.

We all agree that pairing programming leads to fewer defects and better readability. And pairing up across disciplines helps us keep tight feedback loops and to spread knowledge.

At sipgate, we’re more than 10 teams that work (more or less) independently of each other. Each team is self-organizing. Together we deliver more than 20 updates of our services to our customers. That makes it hard to stay up to date with all improvements. That’s why the Scrum-prescribed „Review-Meeting“ evolved into a synchronisation meeting for us. During the “demo” we update each other and reach a shared understanding of where we are.

Stefan demoing (Credit: sipgate / Oliver Tjaden)

Every second Thursday we meet at 3pm. Representatives from each team take turns presenting their results. Results = stuff customers can do, that they couldn’t do 2 weeks prior. The teams get to bask in applause for their successes. Just don’t dare show work in progress that’s not live yet! The demo is reserved for things that customers already benefit from. “99% done” doesn’t cut. It’s not of value yet and not worth mentioning.

Logistically the turn taking is easy-peasy, thanks to Google Slides. Whoever first feels like creating slides on the morning of demo day copies last demo’s slide deck and shares the link with everyone else. Then it’s on: massively parallel slide editing with up to 20 people creating slides at the same time.

Come 3pm we all gather and walk our way through the slide deck. The representatives come to the front and present their part. Teams get gold stars for live demos of new features 🙂 BTW, the representatives are not fixed. They change from demo to demo.

The latest beautiful trend is that teams working on the same product have banded together to present in one go for their shared product instead of presenting team-based.

It takes 10 to 15 people 30 minutes or less to present. That’s all we need to update each other about the latest changes in our products.

Crude self-selection into initial teams

We made the switch to Scrum and cross-functional teams in 2010. Tim (the CEO) asked two designers and me into a meeting room. There was a board with a table in it. Three empty columns headed Team 1 | Team 2 | Team 3. The teams would start with Scrum one after the other with two weeks (= one sprint) in between and we each should pick a column.

The three of us were the first ones who got to choose a column, so I just picked the first one. I was looking forward to getting started with this whole Scrum thing. I still think that many of the people looking forward to Scrum self-selected into that first team. It was certainly fun to be part of that team. Continue reading →

I thought the topic might be worth elaborating on, as “no overtime” seems to be a rare thing. It’s time to confess my undying love for our time clock:

Obviously, it’s not its looks that secured the clock my affection. In fact, whenever I take visitors on a tour through the sipgate offices, the time clock is an unexpected sight. An young-ish company with foosball, ping pong and hammocks and then a time clock? Isn’t that a bit backwards?

No, the time clock is what prevents me from working overtime! When I was working trust-based hours, I always did overtime. When there was something to finish, I would stay to finish it, but I wouldn’t leave earlier, when there was nothing immediate to do. I didn’t really keep track of my overtime so I was unsure, when it would have been okay to leave.

At my current workplace, whenever I swipe my little card in front of the time clock to check in or out it tells me if I’m on track for 40h a week or not. You see, the 40h week did not come about because factory owners in the early 1900s thought how nice it would be if everybody got home at a reasonable hour and had 2 days of weekend. No, it happened because Ford’s tests showed that humans have about 40h of productive work per week in them. Working more does not lead to more results. At least not middle and long term. That’s why we don’t want overtime at sipgate at all.

And we follow up on that directive. We talk to colleagues who work too much. Sometimes we force people to take their annual leave (which is 30 days btw. It’s beyond me how anyone gets by with less than 25 days of paid leave. Poor US folks…)

Despite the time clock we don’t have core hours. Everyone can arrive and leave at any time they want. That’s super practical for doctor’s appointments and such. You just have to co-ordinate with your team. Missing the daily stand up should be an exception, because otherwise it’s difficult to work together 😉

Some of our customer supporters works in shifts, staffing a hotline. They have to be on time for their shift. But other than that, we’re pretty free to distribute our time as it fits ours and the company’s needs.

When building self-organizing teams, one of the hardest things for their (former?) managers is to pass power on to the team. Power as in “the possibility, ability and duty to take decisions”. If you pass a decision on, you have to let go of your “solution”. There are infinite solutions out there. Don’t expect the team to pick the exact same one that you would have picked. The chances are rather slim.

Unfortunately this is how I sometimes see it go down:

Manager thinks: “The solution is obvious. But I’m supposed to empower them, so I can’t just tell them what to do.”

Manager: “Umm, wouldn’t it make sense to … <Some more leading questions>”

“Together” they arrive at a new solution. The team is quietly steaming.

This is the opposite of empowerment. Having to reverse engineer a fixed solution by trial and error is painful, disheartening and teaches a terrible lesson. As someone who used to be on the receiving end of this, I’d love for the manager to just straight out say what they want. They are the boss. It’s okay for them to dictate the solution, if there’s no wriggle room. But making teams guess over 3 rounds, because they don’t want to dictate a solution? That achieves the opposite of want they intended. Plus, they blur the line. It becomes harder for teams to tell when they really own the solution and when they secretly don’t.

Sometimes the solution mismatch stems from the manager having more information than the team. If you’re part of the team, strive to become good at asking questions about constraints.

If you’re the manager pass information on to your team as soon as you notice they’re missing. If it’s classified information, you probably shouldn’t pass that particular decision on to the team.

And check out Delegation Poker. It can help managers and teams figure out, how much power is really conveyed for each pending decision.

Recently I got to see a talk by Uwe Lübbermann. He is the “central coordinator” of Premium Cola. He founded and runs Premium Cola with a so-called “operating system”, which he has already exported to other companies. Well, companies is not really the right term, because they all work very differently from what is considered normal:

At sipgate we sometimes are too nice to each other. That might sound like a luxurious “problem” if you’ve have to weather a tough company climate, but it can indeed be a problem. As in, we don’t shoot down ideas that aren’t that well thought out. Or we proceed with projects that only one person is really excited about and all others think “Meh” quietly to themselves.

What has really helped us to challenge and improve ideas is a technique called “Ritual Dissent”. It works like this:

One person pitches their idea to the others. Then the pitcher turns around, so that their back is to the group. The others then have to point out weaknesses and flaws in the concept (dissent) or can suggest alternatives (assent). They are not allowed to say anything positive!

Of course, the dissent should be something the pitcher can work with. “This is the worst concept I’ve seen today” fulfils the rule of “not positive” but the pitcher can’t use it at all. It’s bad how? In what aspect? Only speak if the pitcher can use your feedback to improve instead of slumping their shoulders in defeat.

The great thing about Ritual Dissent is that it a) absolves feedback givers from having to find positive aspects for a “sandwich feedback” and b) it gives you permission to criticize. It’s what we want here! You’re not a nagging nay-sayer if you point out flaws!

Usually you do Ritual Dissent when several people will present there respective ideas. One person pitches. The others dissent. Next person pitches.

It’s less personal if you know that after you it will be another one’s turn. This is also the official reason why the pitcher turns their back to the group, i.e. that it will feel less personal. My hypothesis is that as the pitcher you have to just absorb the feedback and aren’t tempted to argue your case. And as the dissenter it’s easier to say hard things because you don’t have to see the pitcher’s face twitch when you point out that their “baby” has three legs and no arms.

I find this to be a very valuable technique to improve ideas, concepts and designs in an environment reluctant to voice harsh criticism. Have you tried it?