Processes are so people who don’t know how to do anything can get something done and they usually still screw it up.
UPDATE 4/25/05: There is a post over at Asterisk that follows this one rather nicely.
So why do we bother with processes? It’s something we talk about at Infinite Web Design, we analyze and improve business processes. This is generally a good thing. Refining how things are done can lead to increased productivity, less frustrated workers, and fewer errors and problems at the end of the day. However, the differences between an effective workflow and a mindless algorithm are often overlooked. This leads to frustration with large bureaucracies and stifling restrictions placed on competent workers.
Workflow vs. Algorithm
An effective workflow is one that contains just the documents information, and actions required to effectively complete a task and nothing more. It has been refined so that an individual has all of the information and tools needed to do their job and they can quickly and effectively complete their job. However, a workflow does not guarantee a successful outcome. That is still reliant on the competence of the worker who is carrying out the tasks.
Algorithms are essentially step by step instructions so simple and granular that a monkey can follow them to a successful completion. Computers understand algorithms, they cannot follow a workflow (you can argue the semantics of ‘workflow’ if you like but you’re better off trying to understand the larger point here). When your average manager at a large corporation talks about ‘processes’ they are referring to algorithms rather than workflows.
How to choose which one you need
Algorithms are useful in mostly mindless repetitive tasks. Which means they can be very effective if used in factories and on assembly lines. Any step by step task that can be completed with minimal judgment (involving nothing more than Yes or No decisions at any point in the process) is a candidate for being done using an algorithm. Now, just because a task is mindless or repetitive does not mean it is a waste of time. There are many very important jobs in this world that fall into this category and frankly I appreciate the people who do them. They are often poorly compensated for unrewarding work. Giving them a good algorithm to follow at least means they will succeed most of the time in their job.
Creative or analytical work generally does not yield good results to an algorithmic approach. Painters may have a workflow that they use but not an algorithm. They may start with sketch, paint a first coat, and then follow that up with finishing touches. However, even if they follow the same workflow each time they are not guaranteed to come up with the Mona Lisa every time, you are often just as likely to get a really boring landscape.
Computer programming is ironic in that while programmers spend their time creating algorithms their job requires good workflows and does not yield well to algorithmic processes. Misguided managers often try to impose a strict algorithmic process on programming projects instead of focusing on refining the workflow. The result is usually a large binder full of unused documents created as part of the process and thousands of dollars of additional costs to produce that binder.
Adding layers of bureaucracy to programming or design projects tends only to frustrate those involved. The goal of a manager overseeing programmers or designers should be to require a reasonable level of documentation in code or a style guide and to get out of the way while the people they hired do their work.
A lack of faith
One of the reasons that large organizations require so much documentation and try to turn everything into an algorithmic process is that they do not trust their employees. The base assumption is that that the employees are lazy, inept, and untrustworthy. If this turns out to be true the solution is not to impose a large bureaucracy on them, it is to fire them and get better employees. Hire a team of people that you believe in and to trust them to do their work.
In jobs where workflow is required instead of algorithms a few great employees are worth far more than many average ones. Fred Brooks explored this phenomenon in The Mythical Man–Month. For anyone overseeing a programming or design project Brooks’ classic work offers insights into how to avoid common management pitfalls. I strongly recommend reading this classic.