Tuesday, June 22, 2010

Do You Want Us To Think Or Not?

To make software, you need people who are skilled, creative, quick-learning, thoughtful, and engaged. You might be able to skimp on 'skilled' if the rest of your team provides a social learning system (via pair programming, test-driven development, book and link sharing, impromptu teaching, design talks, etc). You cannot really skimp on the characteristics of being creative, thoughtful, and engaged.

If you tell someone that you don't care how they feel, they will work in an unfeeling way. If you tell them that you don't care what they think, they will work unthinkingly. If you tell them not to participate, they will disengage. This (IMHO) is why use of corporate software is so often without soul and without joy. If one self-important side tells the other to shut up, or to stop asking questions, or to leave the decision-making process, then he has switched off an important piece of capital equipment.

If you treat a knowledge worker as a drudge, she will turn off her brain and trudge. Unsurprisingly, she will lose energy, become uncaring toward the product, and start phoning in her minimal-thought hacks while polishing off her resume. It is hard to keep good people in a system that doesn't really value them.

In an Agile company, we expect customers (or a reliable surrogate) to team up with developers. We expect to have a two-way flow of communication. Each side asks questions, provides answers, researches, considers. Each side teaches and learns. In time the whole team (customers+developers) will take on creative problem-solving, will improve the user experience, will make the product data-center-friendly and user-friendly, and will produce truly valuable work.

All of the software development roles are creative. All of them have issues and difficulties that the other roles may not understand initially. But if we're going to do good work, we have to learn to listen to each other. All it takes to destroy the magic is for one to devalue the contributions of the other.

A few resources:
From Agile Software Development, an article on respect.
Esther Derby's Stop Demotivating Me from CIO magazine.
Daniel Pink's talk via my blog.


  1. If you treat a knowledge worker as a drudge, she will turn off her brain and trudge.

    Deliberate rhyme?

    You've been on a roll lately - I love your take on things - more of a slow burn than Ron Jeffries' recent outburst - which I think took even him by surprise.

    Having just come off a contract in a pseudo-Agile environment, I've experienced first hand the hell you guys have limned....

  2. Deliberate, yes. I'm really not an angry person, but I have had a fair amount of past frustration. When I hear of such things happening to people, I have a visceral reaction.

    I also write this blog partly to remind myself not to be stupid. I'm realizing now how important it is to engage those around me and never turn off the machine.

    I'm actually in a pretty good place right now, with work and people and prospects for the future. I just don't want to forget to make things better.