Open Thinkering

Menu

Tag: Minimum Viable Bureaucracy

Minimum Viable Bureaucracy: Why have managers?

This is my last post writing up Laura Thomson’s excellent talk on Minimum Viable Bureaucracy. I’ve added the audio from the Q&A session below, but this text is taken from the final section of the talk entitled ‘Why have managers?’  Laura is the one who should be credited with all of the ideas in this post, whereas you can blame me for any mis-intepretation and random sentences I’ve added in italics. Posts in the series:

  1. Introduction
  2. Scale, Chaordic Systems & Trust
  3. Practicalities
  4. Problem Solving and Decision Making
  5. Goals, scheduling, shipping
  6. Minimum Viable Bureaucracy: Why have managers?

I chopped up the audio from Laura’s talk and you should find the part relating to this post below. The slides are here and everything is backed up at the Internet Archive. [display_podcast]

“Enable your people to achieve mastery, have lots of autonomy, and work towards a purpose – and you will do well.”

(Laura Thomson)

No such thing as a structureless organisation

There’s a lot of stuff at the moment about ‘programmer anarchy’, ‘structureless organisations’ and companies who say that they don’t have any managers. Laura thinks that we should at least acknowledge that we do indeed have them. If you work at a place that doesn’t have ‘managers’ there will, nevertheless, be people who make decisions.

In other words, there are still people who lead – even if there’s a lot of them because you’ve got very small teams. Leaders emerge. Think of Open Source projects, there are people who make decisions and they elected themselves. There is a structure, there are people in charge. You can call these people whatever you want, but at the end of the day there are people who organise stuff. There’s a blog post by David Eaves where he refers back to a feminist paper from 1970 called The Tyranny of Structurelessness that discusses the feminist groups that wanted democractic, emergent organisations with no leaders. Guess what happened? Cliques emerge and there’s lots of politics;  you end up with people in charge and ways of doing things that “just kind of happened.”

There’s always an emergent structure and always someone with power in any group. One of the things to think about in any structureless organisation is: “do we want this to be unguidedly structureless or do we want to have some input into the direction in which it emerges?” In other words, let the organisation have an emergent structure, but intervene if we see that it’s emerging in an obstructive direction.

Some examples of where you might see this in action. If you’re on any mailing lists or newsgroups there are people who lead and people who follow them. People who decide what the social norms and morays are. It’s the same thing with Open Source projects and ‘structureless’ organisations. If you’re a structureless leader, here are your jobs:

  1. Recruitment – make sure you have enough of the right people working on your team.
  2. Transmit culture – once you have the right people you need to support and guide them in the culture of your organisation.
  3. Mentor people – make sure people understand the culture of the organisation “in their bones”. An example of this at Mozilla is being as open and transparent as possible: challenge people who make things private and ask them why it couldn’t be public.
  4. Big picture – it’s easy for people to have their heads down amongst the weeds and not see how everything fits together. You might know, for example, that another team is blocked because of something way down on someone’s priority list.
  5. Do things no-one else wants to do – go to meetings, do the paperwork, file bugs and close the bugs that no-one else want to touch.

Servant Leadership

The Servant Leadership Model (Greenleaf, 1970) says that you shouldn’t become a leader because you want to be in charge of things. You should become a manager because you like people and you like enabling people to be great. One of the things when you’re becoming a manager or a leader for the first time is giving up doing things yourself. For example, realising that it’s more important to unblock and enable others than it is to get your own work done. As a footnote, Laura says, you shouldn’t stop coding (she comes back to why). A lot of people think that introverts cannot be managers or leaders, but that’s a “really interesting mistake to make”. At Mozilla the place is full of really good introverted leaders. Introverts make great servant leaders. The 10 practices of servant leadership, as identified by Regent University (August 2005):

  1. Listening
  2. Empathy
  3. Healing
  4. Awareness
  5. Persuasion
  6. Conceptualisation
  7. Foresight
  8. Stewardship
  9. Grow people
  10. Build community

This doesn’t look like a list of qualities of a traditional manager, but it does look like the leader of an Open Source project, says Laura. For example: build community, grow people, steward the project. Have some foresight about where we’re going. Conceptualisation is about understanding the big picture. Be able to listen to people, have empathy for them, help them through the hard times (healing), know what’s going on (awareness), be able to persuade people. These things are very important – especially in a company like Mozilla.

Why you shouldn’t stop coding

The reason you shouldn’t stop coding (or doing whatever it is the rest of your team does) is because of a point Dave Mandelin makes in a blog post called The Glue Person. Enabling is more important than coding, but if you never write any code then you will not be as good a manager of coders. You have to understand why things are hard. It will also make it  harder to find your next job if you do nothing but manage: they’ll put you through a whole bunch of technical interviews and you won’t know the answers. As a manager that codes, there’s stuff you shouldn’t do. You shouldn’t do anything on the critical path and you shouldn’t put yourself down to do things that block other people (because you might not have time). Think of yourself as the ‘glue person’. Write that script that needs writing; do a bit of innovative/experimental stuff. The classic example is the bug that’s gone unfixed for five years. Focus on things that aren’t really important to fix, but would be nice to have. As a manager you should have 1:1s with people on your team. Laura asks three questions:

  1. What are you working on?
  2. What’s blocking you?
  3. How can I help?

…and then shut up. It’s import not to turn this into a status report. And you can spend the whole time talking about your dogs if you want to, because that’s “putting money in the trust bank”.

Other roles you have as a manager

Yellow umbrella Another role that managers have is as a “shit umbrella”. If you work for a large or bureaucratic company there is a lot of ‘process’ and one thing engineers hate is process. They don’t want to go to meetings. They don’t care about filling out paperwork. They just don’t want to pay attention to that stuff. Your job as a manager is to keep this from raining down on your team. Even in a low-bureaucracy organisation there’s always something so anything you can do to shield your team from that will make them happier.

All managers have to be marketers. You raise the visibility of your team and the projects they’re working on. You want people outside the team to think: “that’s a cool team to join; I would love to work on that team”. If you’re trying to sell a consulting team you’re trying to get people to think how smart you are so they want you to work on their stuff. If you make products, it doesn’t hurt for people to think that your company is cool.

Think about the cool tech companies you know. If one of those companies came out with a new product then you’d look at it, right? You want to use the stuff that they make because the stuff that they make is cool. It’s really important to market your team in this way. If you do this well your team will have strong morale and a really strong tribal team identity. This makes people happier. Other things you have to do:

  • Challenge people enough but not too much
  • Delegate effectively
  • Help people figure out where they want to go
  • Help people when they stumble

Stretch people but don’t do it to the extent that they get demotivated and miserable because they don’t know what to do. It has to be hard enough. On the whole, though, managers tend to under-challenge people. At Mozilla, we give interns real things to do that are hard. And they end up doing an awesome job.

Never underestimate people. This last point on the list about helping people when they stumble is a really hard part of the job. In some management talks this might be called ‘discipline’ or ‘performance management’ but Laura insists on ‘stumbling’. One thing that goes unacknowledged is that we don’t have ‘good performers’ or ‘poor performers’, we just have people. “Even people who are really strong performers have times when they’re not very performant,” says Laura.

You might be the best engineer at Mozilla but if you come down with a health condition that makes you really miserable, or you have your first child, or some other kind of problem, then you’re probably not going to be as awesome as you were the month before. There are reasons that people perform at different levels at different times. Sometimes it’s because they’re bored, or burned out. Depression is a big one: if you plotted ‘bugs closed’ vs ‘seasons’ you’d notice that people write less code in the winter. Also, people have crises.

Laura says there’s a difficult group to manage she labels ‘cruisers’. People who were smart at school and knew how to do their homework because they knew that stuff already. They’ve cruised through college and got to their job without ever really having to work that hard (and she includes herself in this definition). Suddenly they get to the job where they do have to work hard and ‘knowing how to work hard is actually a skill that some people don’t have’. So enabling people to learn this is really important – especially ‘cruisers’ as they’re often really smart people. In talking to them you should tell them that you know they can excel, you just need to work with them to show it.

You can’t fix everything as a manager. You can’t fix depression for them, for example. But you can help them fix it. You can direct them to get help, to resources, or if they’re working on something that they hate you can find them something to work on that they like better. You can shuffle people around. If someone is really, really miserable, then Laura is a strong believer in asking whether they’d be happier working somewhere else. This isn’t sacking people, but bluntly having a conversation centred around the question: are you sure this is still for you?

The last thing is that Dan Pink wrote a book called Drive in which he said there are three things that make people happy at work:

  1. Mastery – people should be allowed to become masters of their domain. Let them get good at stuff and learn new things.
  2. Autonomy – people should have control over what they’re working on.
  3. Purpose – people are more motivated when they’re working on something they think is important.

Laura says if people take one thing away from the whole talk about how to lead, then enable your people to achieve mastery, have lots of autonomy, and work towards a purpose – and you will do well.

Image CC BY-SA Christoph Michels


You can follow Laura Thomson as @lxt on Twitter. A final thanks to her for the clarity of her ideas, and giving me enthusiastic feedback while writing up her talk!

Minimum Viable Bureaucracy: Problem Solving and Decision Making

This is my fourth post on Laura Thomson’s excellent talk Minimum Viable Bureaucracy. In this one I’m focusing on the section she entitled ‘Practicalities’. All of the ideas in this post should be ascribed to Laura, apart from my random musings which I’ve tried to make obvious.

Posts in the series:

  1. Introduction
  2. Scale, Chaordic Systems & Trust
  3. Practicalities
  4. Problem Solving and Decision Making
  5. Goals, scheduling, shipping
  6. Minimum Viable Bureaucracy: Why have managers?

I chopped up the audio from Laura’s talk; you should find the part relating to this post below. Slides are here and it’s all backed up at the Internet Archive.

[display_podcast]

Self-organising does not equal democracy. Just because no-one is in charge doesn’t mean everyone has an equal vote.

(Laura Thomson)

Decision Making

How do we solve problems in a chaordic environment? People coming from a traditional company might wonder how decisions can be made. The short answer is that subject matter experts emerge. People gravitate towards projects they’re passionate about and become experts in that subject.

The second part of this is that there shouldn’t be a single person who knows or can do everything – there should be a ‘failover’. You should actively fight against there only being one person who knows or does everything. After all, if that person gets headhunted by Facebook or hit by a truck then suddenly you’re left with something that nobody understands. Leaving it at this isn’t enough, however, as there are some things that nobody wants to do – e.g. running weekly team meeting. These things should be rotated so it’s not too much of a burden on any one person.

What do an OSS decision-making processes look like? Well, says Laura, they all tend to converge on a model that looks a lot like this:

This is a reasonable structure for decision-making in any context: have one person who knows everything with (more) other people knowing almost as much. Things get done this way.

Laura adds a note in parentheses to this: ‘self-organising’ does not equal democracy. Just because no-one is in charge doesn’t mean everyone has an equal vote. But then, on the other hand, nor does self-organising equal anarchy. Self-organising systems emerge and converge on a structure, but they are not structureless.

Problem solving

“You should never have all of your time filled with things that other people have made for you to do.”

(Laura Thomson)

Bike Shed

Many architectural problems are like bikesheds, says Laura: they’re the thing you talk about over beers with the team or every workweek – but you never get around to doing. People have many different, possibly divergent ideas and think it’s too hard to get to a solution. As a leader, therefore,  you should pick someone and give them a week to go away and have a go at it. Get them to see how far they get with making a prototype. The important thing to remember is not to leave them too long in isolation as they can go down “a hell of a rabbit hole”. It’s good to have a time box for this kind of thing.

Laura’s advice is that you that you should ‘come with code’ for bikeshedding problems. This means you can point to something and say “hey, I built this”. People who don’t like it will no doubt say that they would have done it differently but when it exists, it’s much easier to just agree with something. The problem then kind of goes away. Many of the hardest problems get to 80% by one person over a two-day marathon giving the project a proof-of-concept and some momentum. In turn, this gives other people motivation and clears the path.

The moral? Give people room to do this and be innovative.

Moving on, Laura says she sees some things that are “really toxic”. Things like having an innovation department  where all the ‘innovative’ work is done. This is “silly”. Another management anti-pattern is giving engineers a number of tickets without giving the engineer space to think about the product. It’s true they may not understand the users, but they understand the product pretty well.

Depending on the company, a portion of time has to be spent by the engineer doing the thing that they think is most important. It might be 100% of the time, or 60%, 40%, one day per week – but it should never be zero. “You should never have all of your time filled with things that other people have made for you to do,” says Laura. There are so many reasons for this. One of them is you miss out on some of the most innovative ways of doing things. The second is that it’s toxic for engineering morale. It will make people leave. It’s a ‘super-critical item’.

This is true not only for engineers but for anyone in an pretty much any kind of organisation. Spending all day just implementing other people’s ideas doesn’t lead to a sense of agency or happiness.

In summary, there are three things to remember about problem solving in a chaordic environment:

  1. Push responsibility to the edges
  2. Adopt open source models
  3. Give people freedom to innovate.

For the things that aren’t ‘bikesheds’ figure out where the interfaces are. Interface design is more critical than component design. For example, your API is more important than the implementation, every single time. This makes everything more modular, allowing you to drop innovative things in more easily.

In non-technical language, this is about looking at how ideas and projects connect. This is important as it helps the organisation communication well internally and externally, helping things move forward smoothly.

Laura’s architectural goals:

  • Decouple replaceable components
  • Have clear interfaces and APIs
  • Make sure you have good tests for each component

For operational problems within an open source environment, the same principles apply, with two additions:

  1. Evidence > guts
  2. Immerse yourself in problems

In other words, use evidence to make your decisions rather than gut feelings. And when you’ve got a problem, set aside time for you (or someone on your team) to be fully immersed in it and understand it.


You can follow Laura Thomson as @lxt on Twitter.

Images CC BY-SA Pierre-Yves Beaudouin & John Myers

Minimum Viable Bureaucracy: Practicalities

This is my third post on Laura Thomson’s marvellous talk Minimum Viable Bureaucracy. In this one I’m focusing on the section she entitled ‘Practicalities’. All of the ideas in this post should be ascribed to Laura, apart from the fanciful interpretation of them (which is all mine – I’ve tried to make this obvious).

Posts in the series:

  1. Introduction
  2. Scale, Chaordic Systems & Trust
  3. Practicalities
  4. Problem Solving and Decision Making
  5. Goals, scheduling, shipping
  6. Minimum Viable Bureaucracy: Why have managers?

I chopped up the audio from her talk; you should find the two parts relating to this post below. Slides are here and it’s all backed up at the Internet Archive.

[display_podcast]

Communication practices are called practices for a reason.

(Laura Thomson)

In the previous section of her talk, Laura talked about the importance of scale, chaordic systems and trust. In this section she’s focusing on implementing these ideas in practice. She starts by talking about the importance of over-communicate everything, especially if working remotely. Tell people what you’re going to do, what you’re doing, and then when you’ve done it (and, importantly, how it went). A good tip: if you have face-to-face or IRC conversation and others aren’t present, then you should document it for the benefit of the rest of the team. This is important in non-technical environments too. Keep people in the loop.

Encouraging a culture of collaborative note-taking allows for what Laura calls ‘asynchony’ – in other words “I shouldn’t have to be physically present in time and space to know what happened.” She points to a presentation by John O’Duinn that you can access here (PDF) Interestingly, John’s presentation focuses on the importance of having ‘groups’ of remoties and makes a case for ‘aqui-hires’.

If you’re working in an office and some members of your team don’t work from the same physical location then it can seem like a hassle to document everything, remember to invite them to meetings, etc. The important thing to remember is that remote teams allow organisations to hire the best people, regardless of where they happen to live. It might be a annoying for those that are physically co-located, but there’s a good reason for it (more talent in the organisation). Remote working is effective when there are good communication practices and there are high levels of trust. In the long run it’s best to get used to ‘remote’ ways of working as the chances are any organisation will end up having more than one office.

Moving onto effective communication practices, Laura suggests the following:

  • Shared communication spaces
  • Every project should have a URL
  • Some kind of chat system that has logging (IRC/Campfire, etc.)
  • Etherpads and wikis for collaborative document editing
  • Bug tracking
  • Email (secondary – after the fact documenting)
  • Record as many meetings as possible through video, audio or shared notes
  • Record decisions made

‘Bug tracking’ might seem like a specific issue for software development, but there’s many way bug trackers can be used for other things. As an example, check out this recent bug (#914343) for transferring the Web Literacy Standard from the Mozilla wiki to Webmaker.org.

It’s a well-known fact that many meetings kind of suck. Laura believes that, paradoxically, team meetings can actually reduce communication. They can be a bit like an annual performance review where someone says, “Hey Fred, you did a terrible job this year, in March you did this thing that sucked”. But then you wait until December to tell him about it. If something is important, don’t wait for a weekly team meeting to raise it. It’s not the frequency of meetings, it’s the culture: the ad-hoc, asynchronous nature of the interactions/communications.

If you turn up to a meeting and never say anything you probably shouldn’t go to it. Try replacing the idea of meetings with conversations about the following:

  • Collaborative problem-solving
  • Maintenance windows
  • Triaging bugs
  • 1:1s
  • Show and Tell (people really enjoy doing these)
  • Post-mortems

If you have to have an actual meeting, make sure you have an agenda, a list of stuff you’re going to talk about (even if it’s just five bullet points). Limit the number of people at the meeting as “nothing good ever happened at a meeting with 20 people in it. Ever.” Limit the length. Try 30 minutes and if it takes longer than that, schedule another 30 minutes. And try to cluster meetings together – either all on the same day or same morning.* Record and take notes for asynchrony.

*This, of course, depends on shared calendars, which is a great habit to get into. You can share on a free/busy basis with most platforms.

When it comes to Minimum Viable (Project) Documentation, Laura’s advice is to aim for:

  • How to install code
  • How to make a change / submit code
  • What’s the roadmap (even a rough one for next week)
  • Changelog (version control systems often do this)
  • Glossary (helpful for new employees, interns, external contributors)
  • Where to get help (the most important)

Although this seems extremely software-specific, if you think about what these things would look like in your environment, it doesn’t take too much of a leap. Instead of ‘submitting code’ you could talk about ‘adding ideas’.

Finally for this section, Laura reminds us that it becomes more annoying to explain something for the tenth time to the tenth different person that it is to write it down. Documentation is important and saves everyone time.


You can follow Laura Thomson as @lxt on Twitter.

css.php