The effects of good process

I define a process as any repeatable set of actions a team decides to perform on a regular basis to make sure something is done in a certain way. Processes go by many names: rules, guidelines, forms, procedures, or restrictions. (For example, how code gets checked in, tested, and built is a common example of an engineering process. Others include spec writing and reviews, tracking bugs, managing calendars and schedules, etc.) A good process improves the odds of the project being completed and has benefits that outweigh its costs. However, because time is rarely spent considering why certain processes exist, or what problems they (should) solve, many teams live with lots of processes, without the benefits they can provide.

Sometimes, the problem is who's in power. Any idiot with enough authority can come up with the most mind-numbingly idiotic system for doing something and try to force the team to follow it. Then, when the team manages not only to survive that process but actually ship something, the person in power may even point to the process as a contributor to the success (blind to the fact that the team was successful in spite of the stupid process). If they have enough power, they can quell any mutinies or pleas for sanity and continue torturing the team by adding even more procedures.

Other times, the problem is the philosophy: "X worked before, so let's do X." In this situation, a team leader who has done something a certain way in the past insists on inflicting that method or process on every new team he leads (this bad management habit is mentioned in Chapter 8). This is bad because prior success with X is relevant only if the current situation is similar to past situations. The real acceptance test for a process should emphasize the needs of the present over observations about the past.

But most of the time, the problem is the complexities of creating processes. A process tries to organize how people work and how they interact, two critically important but very organic things. People work differently. They have different preferences and tolerances for formal controls. If the person creating the process isn't careful, the process can easily become a bottleneck, slowing people down and constricting their (sense of) freedom and empowerment.

The trick in creating good processes is to understand two things in combination: what makes projects and teams successful in general, and what makes the current project and team different from others (see Figure 10-1). It's not enough to know how test passes should be done in general; you have to account for the culture, personality, and habits of the current test team you're working with. Sometimes, the culture or the project demands a different approach (e.g., test processes for antilock-brake-embedded systems versus test processes for Steve's punk rock band's web site). Instead of regulating from above, it's often best to let the team self-regulate. Instead of reusing the standard template, let them modify and create their own. Much like any kind of negotiation (see Chapter 11), when it comes to process, you have to be clear on the interests you care about and not the specific positions.

Figure 10-1. Good process requires having a sense for projects in general, as well as the unique attributes of the current project.

&eeaC pro ret ses •fovnct. heft

Figure 10-1. Good process requires having a sense for projects in general, as well as the unique attributes of the current project.

To help you both find and recognize good processes, here is a list of attributes and the effects they'll have on the project. This can be used as a checklist when sitting down to create or refine a process.

• They accelerate progress. As counterintuitive as this seems, good procedures make people more efficient, not less efficient. For example, the white lane separators on American highways restrict where you can go in your car while driving. But because they provide the same restriction for everyone, they provide a core set of rules that allow individual drivers to go very fast (and to get around those who drive very slow). People can trust that other drivers will follow those rules. Good process provides a system that people can depend and base decisions on. In some cases, the process defines roles that people will play, which makes it easy for Steve to get what he needs from Molly (e.g., finding someone to do a code review). A canonical example is automated build tools and processes that allow people to build projects with a few keystrokes, provided they follow the necessary coding conventions defined by the build system.

• They prevent problems. The most common motivation for putting a process in place is to prevent some kind of stupidity from happening (again). The challenge is to do this without simultaneously making progress more difficult, or encouraging new kinds of stupidity. This requires understanding the causes of the problem and what factors are most important to progress. Simply asking the question "What is the least intrusive, least annoying, and least expensive way to make sure that X, Y, and Z never happen again?" helps significantly. Or, going the other way, when looking at any existing process, ask "What problem does this prevent from happening? How serious or likely is that problem?" If a process doesn't prevent problems or accelerate progress, consider getting rid of it (see the next section "A formula for good processes").

• They make important actions visible and measurable. Processes for opening bugs or publishing specs make it easy to track how often those things are done. You can also easily track their status, what the results were, and what the team-wide trends are. For important things like bugs, specs, and tests, a good process will make it easy to find out what the state of the project is, and compare the current state of the world against where the project was and needs to be. This is important for mid-game and end-game strategies (see Chapters 14 and 15).

• They include a process for changing or eliminating the process. Because projects and teams are changing all the time, a process that is useful or necessary one month may not be useful or necessary the next month. The process itself must have a built-in mechanism for deciding when it's no longer useful or when it needs to be updated to make it useful again. Never assume that a process will go on forever, and avoid defining jobs around processes for this reason. Someone who identifies his job as "The guy who runs test pass 5" will tend to defend test pass 5 with his life and fear any changes to it. This is bad. Instead, make people responsible for the effects and results the processes have on the project.

• People impacted by them are in favor of them. People like helpful processes. A good process will be seen as desirable to those who need it. If you are proposing a new process that impacts testers or programmers, and your process is valuable to the project, it shouldn't be too hard to get them to try it out. Or, more to the point, people should be directly involved in coming up with the new process in the first place. Sure, some convincing may be required (change rarely happens without persuasion). But if the problem you're trying to solve is real, and the productivity gains are real, the team should have every reason to be positively motivated. Alternatively, if the people who the proposed process will impact can enumerate dozens of reasons why the process is a bad idea, they're probably right. (But if the problem is real, don't give up. Ask them for a counterproposal.)

Was this article helpful?

0 0
Understanding SEO Help People Find Your Business

Understanding SEO Help People Find Your Business

So what does SEO stand for and what does it do for your offline business? Search Engine Optimization is the official title and you can see why it is commonly abbreviated. If you are wondering about SEO then you either have a new website or are considering setting one up. SEO comes in to play once your site is live on the web. After all you now have to get visitors to actually see your site. In SEO terms attracting visitors is known as generating traffic and this can be achieved by using search engine optimization tactics.

Get My Free Ebook


Post a comment