So what? – Look for the real problem

Recently this statement raised my inner alarms: “We’ve got lots of problems! For example, nobody is pair programming.”

Why would this rub me the wrong way? That nobody is pair programming? After all, I am indeed a huge fan of pairing up. I witness this practice’s many benefits every single day at work. But no, that’s not the point. My alarms went off because “lack of pair programming” was presented as an actual problem. It’s not.

Let me repeat that: As much as I love pair programming, not doing it is not a problem in and of itself. Rather, pair programming is a possible solution to a host of problems an organization might be having such as:

And depending on the actual underlying problem there are different solutions available, one of which could be pair programming.

Nobody who’s not already a convert will start pair programming just “because”. Instead go looking for the actual problem. Ask “So what?” That phrase is magical and you can use it repeatedly. Just like there’s the Five Whys, dig deeper with five “So what’s”:

“Our problem is that nobody’s pair programming!”
“So what? Why is that a problem?”
“Nobody knows anybody else’s code. It’s 1 system = 1 developer.”
“So what?”
“Whenever a developer is sick or on holiday development in their area comes to a screeching halt. And there’s always someone sick or on holiday. Makes us super slow to release. And I dread the day someone quits.”
“Well, that does seem like a pickle…”

Okay, it weren’t five “So what’s” because I suck at making up examples but you get the point.

"So what" is a magical phrase to find an actual problem

This is not specific to agile practices either, though Agile folks have a reputation for dogmatism. Here’s a recent example from the field of web analytics: “We’ve got a huge problem: We can’t do cross-domain tracking.” Soooo …? What are the questions I want answers to and that we can’t answer because we lack this?

I’ve learned “So what?” in the context of Henrik Kniberg’s Cause-Effect-Diagrams and have since used it whenever I suspect that a “problem” someone presents is actually their (preferred) solution. It’s the same as with product features:

“Love the Problem, Not Your Solution”
Ash Maurya

PS: Like what you're reading? Join Corinna's Retromat newsletter!

What is an Agile Mindset? Six years later

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!

PS: Like what you're reading? Join Corinna's Retromat newsletter!

Examples for Swarming beyond the team

When I first learned about Kanban, I also learned about “Swarming”. Swarming is when the whole team pitches in to work on the same thing. That same thing is often a blocking task that WIP limits helped surface. Can’t work on “your” tasks because  you reached the WIP limit? Go help clear that blocking task up ahead!

Swarming with a team is not unusual and works pretty well. Some teams try to always work on only one story together so they’re swarming non-stop. And you can turn up the magic and swarm with large parts of the company.

Swarming cuts a big, intimidating mountain for a few people into realistic hills for many people.

Let me give you three examples of what you can achieve if you join forces and people do tasks outside of their normal job description.

1) Patch all the code

Some years ago we had a legacy product that was in use and earning money while not being actively maintained. Suddenly a wild security hole was revealed. It was a problem for everyone using that version of the specific language we were using. (Yes, you’re right, it was PHP.)

Not fixing the bug would have been irresponsible. How could we make it secure again, given that no team was taking care of the product and nobody really knew the code base anymore?

Drag 3 developers from their teams and go at it for a month? Takes long and these people are missing in their respective teams. And you make these 3 people rather unhappy. No, let’s stop and fix. Let’s take 2 days with all developers, spread the burden evenly and get it over with.

Fortunately the bug was least easy to search for. Two developers prepared a big board with a slip of paper for each and every instance of the bug in the legacy code base.

On Monday morning all developers met and paired up – one person with faint memories of the code base and a newer hire. Each pair took a slip and went on their merry way. All developers together finished that task within 2 days and with a high sense of community.

2) sipgate calling

After handling outstanding payments pretty badly for years, we decided to wow our customers in a commonly negative situation. Instead of passing late payers to a debt collection company we switched to writing friendly “Hey, maybe you forgot to pay us?” emails.

As part of switching from old to new way of handling we wanted to personally call about 200 customers with overdue payments. 200 is a lot of calls for the 3-person team that was wowifying our reminder process. 67 calls per person is daunting.

That’s why they asked the whole company to volunteer. They asked for people willing to help call customers at a certain time and date. They kicked it off with a short training and then some 20 people were calling up customers, nicely asking to update payment details. 10 calls per person is a lot more doable than 67.

3) Got a minute? Answer a ticket

In times of needs you can ask for quick help on Yammer. Sometimes customer support tickets pile up. That can be due to an incident or unusually few people to tackle tickets or both. In these cases you can rally the troops:

“Due to $reasons we have 4 times as many tickets as we normally do. We’re a bit overwhelmed. If you’ve got a spare minute and a Zendesk account, please check if you can resolve any of the tickets in our queue -> link”

At least once, yours truly did have time, read about 30 tickets, decided she could help with about 10 of them. Of these 10 only one popped back open because my answer didn’t help with everything. Which means I closed 9 tickets as a non-customer-support-person. Sweet!

Did I take longer than a proper CS person would have?
Definitely.

Isn’t it wasteful then?
No! Not to me anyway. Sharing your colleagues’ burden in that way strengthens relationships.

Okay not wasteful then, but it’s still inefficient for people to pitch in with tasks they don’t have routine in …
Probably. But then again, I don’t care about being efficient. I care about being effective. And that’s what swarming is. It cuts a big, intimidating mountain for a few people into realistic hills for many people.

And yes, that last example only worked because a lot more people have Zendesk accounts than just customer support people. These licenses are pricey. It’s a trade-off. We opted for the ability to act effectively rather than (money-) efficiency.

To say it with the words of my former choir leader:

Viele Hände, schnelles Ende
Many hands, fast end

Smart chap, that choir leader 🙂

PS: Like what you're reading? Join Corinna's Retromat newsletter!

How to deliver a project early

PS: Like what you're reading? Join Corinna's Retromat newsletter!

My Facilitation Mindset

It all started with a tweet by Tobias Mayer:

“Don’t make assumptions” says one school of wisdom, “Assume positive intent” says another. I choose the first. You?

I’m a card bearing member of the second tribe (at least I thought I was) so I answered:

The second one. Makes me kinder.

Going into difficult conversations assuming positive intent has rarely left me disappointed.

Or as Gitte Klitgaard so beautifully put it:

I find that I get what I expect. So if I expect good, I get good.

My experience is exactly the same. Whenever I don’t manage to assume positive intent and give in to blaming thoughts it leads to more disappointment. My beliefs always always leak into what I say and how I say it.

That’s why I ask someone else to facilitate / mediate in my place when I cannot honestly assume positive intent for each party.

The “don’t assume anything” school of thought has never helped me to prep angry people for constructive conversations. When someone thinks others to be malicious, countering their theories by saying “You don’t know that. Don’t just assume that” only helps for about 2 seconds:

They rake a hand through their hair and say “Yeah, I guess you’re right. I don’t know that for sure.” Pause for effect. “But I swear, they’re just doing that to fuck with us!” Aaaand, back to square one.

What did help multiple times is giving a couple of scenarios in which the enraging behaviour is a result of good helpful intentions of the other party and doesn’t manifest their evil and / or stupid nature.

Giving examples of how something might have had positive intent opens the door to really talk. I’ve established a possible alternate reality 🙂

What’s really going on is something we can try to find out during the facilitated conversation.

After I laid out these thoughts, Tobias remarked:

Talking “of how this might have had positive intent” is very different to making the assumption, isn’t it?

Huh? Hm, I guess that’s true. Apparently I fall inbetween the two schools of thought and my mindset when preparing to facilitate is “I assume that positive intent is possible (while not actually assuming any particular motive)”. And I can come up with at least 2 positive intent scenarios for any given situation.

Assume positive intent is possible

Learned something about myself there. It’s a mindset that has served me well so far. What’s your mindset for crucial conversations?

PS: Like what you're reading? Join Corinna's Retromat newsletter!

How did you introduce pair programming at sipgate?

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.

PS: Like what you're reading? Join Corinna's Retromat newsletter!

We have it backwards

We don’t go out and do difficult things because we’re confident. We do difficult things and that gives us confidence.

We don’t work longer hours and get more done. We work less, sleep enough and get more done.

We don’t have more defects in production when we deliver often. We have fewer defects when we deliver more often.

Immigrants don’t take away jobs. Immigrants create more jobs than they take.

Makes me wonder what else we’ve got backwards…

PS: Like what you're reading? Join Corinna's Retromat newsletter!

 

Demo time – How to stay up to date with 10+ teams

[This post first appeared in German.]

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.

PS: The demo is one of the “24 Work Hacks” in our book of the same name that is also available in English.

PS: Like what you're reading? Join Corinna's Retromat newsletter!

Welcome to Multipartiality!

For the longest time I thought it was my job as a facilitator to be neutral and impartial. I wasn’t sure I was “doing it right”, when I strengthened one party in a conflict by paraphrasing and helping them be understood, when they were at the disadvantage and I wanted the parties to have equal footing to work things out.

It wasn’t until the workshop with solution-focused coaches Veronika Kotrba and Ralph Miarka that I learned a new word: Multipartiality (“Allparteilichkeit“).

It means to be able to understand and empathize with each party as needed, to help them phrase and explain their needs.

You expect neutrality from a judge. But mediators and (depending on the situation) facilitators will be more effective with a mindset of multipartiality.

PS: Like what you're reading? Join Corinna's Retromat newsletter!

Work Hacks beim Flaneur

[English summary: Bastian Wilkat interviewed me about Work Hacks in his podcast “Der Flaneur”.]Der Flaneur

Falls Du thematisch nicht so festgelegt bist, gibt es einen ziemlich interessanten Denkanstöße-Podcast: “Der Flaneur” von Bastian Wilkat.

Die Themen reichen von “Robo Advisors und Geldanlage” über “Positive Psychologie” zu “Denkwerkzeuge”. Und seit Anfang Dezember auch “Work Hacks” mit Yours truly. Viel Spaß beim Anhören 🙂