Thursday, October 27, 2011

I will not write crap

I've gone from Dan North's post, to Gil Zilberfeld's to Michael Feather's to Jason Gorman's. It would appear that we, in the software craftsmanship movement have not been clear. I hope this blog clears a few things up.

Why is there a software craftsmanship movement? What motivated it? What drives it now? One thing; and one thing only.

We are tired of writing crap.

That's it. The fat lady sang. Good nite Gracy. Over and out.

We're tired of writing crap. We are tired of embarrassing ourselves and our employers by delivering lousy software. We have had enough of telling our customers to reboot at midnight. We don't want bug lists that are a thousand pages long. We don't want code that grows more tangled and corrupt with every passing day. We're tired of doing a bad job. We want to start doing a good job.

That's ... what ... this ... is ... about. Nothing else.

What we are not doing:

  • We are not putting code at the center of everything.
  • We are not turning inward and ignoring the business and the customer.
  • We are not inspecting our navels.
  • We are not offering cheap certifications.
  • We are not forgetting that our job is to delight our customers.

What we will not do anymore:

  • We will not make messes in order to meet a schedule.
  • We will not accept the stupid old lie about cleaning things up later.
  • We will not believe the claim that quick means dirty.
  • We will not accept the option to do it wrong.
  • We will not allow anyone to force us to behave unprofessionally.

What we will do from now on:

  • We will meet our schedules by knowing that the only way to go fast is to go well.
  • We will delight our customers by writing the best code we can.
  • We will honor our employers by creating the best designs we can.
  • We will honor our team by testing everything that can be tested.
  • We will be humble enough to write those tests first.
  • We will practice so that we become better at our craft.

We will remember what our grandmothers and grandfathers told us:

  • Anything worth doing is worth doing well.
  • Slow and steady wins the race.
  • Measure twice cut once.
  • Practice, Practice, Practice.

I suppose that some people might look askance at our code katas and our code retreats, and our practice sessions. They might think that we're turning inwards and abandoning our customers. They might think that we've given up on the real world and have yielded to the temptation to entertain ourselves. I can see how someone might come to that conclusion.

But they are as wrong as the day is long. We are doing this because we care about the customer. We are dedicating time and effort to being the best that we can be so that our employers will get the best possible value out of us.

Do you think the only time musicians play their instruments is when they are on stage? Do you think the only time that batters hit balls is during games? Do you think the only time lawyers give a closing is at trial? Of course not. These people are professionals; and professionals practice! Professionals study the minutia of their disciplines. Professionals know all the little tricks and quirks. They know the history, the theories, the anecdotes. They know techniques and methods. They know good options and bad options and how to tell them apart. And they know all this stuff because they practice, practice practice.

So when you see someone wearing a green wrist-band that says "Clean Code" or "Test First" or "Test Obsessed", it's not because they've joined a movement, or signed a manifesto, or that they somehow feel superior to everyone else. They aren't participants in a holy war. They aren't trying to join a tribe and huddle around a campfire. The green band is a personal thing. It's a promise made to one's self: "I will do a good job. I will not rush. I will write tests. I will go fast by going well. I will not write crap. And I will practice, practice practice so that I can be a professional."

Wednesday, October 26, 2011

Bad Code

"Nothing has a more profound and long-term degrading effect upon a development project than bad code. Bad schedules can be redone, bad requirements can be redefined. Bad team dynamics can be repaired. But bad code rots and ferments, becoming an inexorable weight that drags the team down"

~ Uncle Bob

Tuesday, October 25, 2011

Reuse in the small

"Understanding how to achieve reuse in the small is essential to achieving reuse in the large"

~ Uncle Bob

Thursday, October 20, 2011

Adaptation to the world

The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man.
George Bernard Shaw
Man and Superman (1903) "Maxims for Revolutionists"
Irish dramatist & socialist (1856 - 1950)

Sunday, October 16, 2011

What the system wants from you

Emerging is when you use a platform to come into your own. Merging is when you sacrifice who you are to become part of something else.
Merging is what the system wants from you. To give up your dreams and your identity to further the goals of the system. Managers push for employees to merge into the organization.
Emerging is what a platform and support and leadership allow you to do. Emerging is what we need from you.
 -- Seth Godin

Thursday, October 13, 2011

Be undeniably good

When people ask me how do you make it in show business or whatever, what I always tell them — And nobody ever takes note of it ‘cuz it’s not the answer they wanted to hear. What they want to hear is here’s how you get an agent, here’s how you write a script, here’s how you do this — But I always say, “Be so good they can’t ignore you.” If somebody’s thinking, “How can I be really good?”, people are going to come to you. It’s much easier doing it that way than going to cocktail parties.
-- Steve Martin on Charlie Rose

Thursday, October 6, 2011

Eye, sir!

“It’s more fun to be a pirate than to join the navy.”

-- Jobs quoted in Odyssey: Pepsi to Apple, 1987

Wednesday, October 5, 2011

The fear of making the wrong choices

We think we want a lot of choices, but really we want freedom. There’s a difference, and the overwhelming number of choices in our lives these days leads to confusion, paralysis, and unhappiness. 
Scarcity choices can be seen as a bad thing, but I see it as liberating. I’m not saying we should have no choices, but fewer is better. 
Try narrowing down your choices, in as many ways as you dare. Watch fewer TV shows by picking just three you watch every week. Pick just one book and read that until you’re done. Have a to-do list that’s only three items long each day. Make a weekly menu that only has two or three meals you cook in big batches, and eat those all week. You might worry that you’re making the wrong choices — you’re not.
There are no wrong choices, there’s only the fear of making the wrong choices. 
I find limiting my choices to be an opportunity to let go of the worries about making the wrong choices, and to focus on enjoying the choices I do make. 
Leo Babauta @

Sunday, October 2, 2011

Some of them are really smart

“I’m an optimist in the sense that I believe humans are noble and honorable, and some of them are really smart. I have a very optimistic view of individuals. As individuals, people are inherently good. I have a somewhat more pessimistic view of people in groups.”

-- Jobs @ Wired, February 1996