Software Craftsmanship Ethics



Source: Doug Bradbury, Dave Hoover, Robert Martin, cast of dozens

This is the outgrowth of a conversation among Doug Bradbury and a number of Craftsman Manifesto signers. The goal of the collaboration was to come up with a statement of the Ethics of Software Craftmanship. In the course of the conversation, one of our participants suggested the pillars shown here (the brainchild of Jason Gorman). 

 The long form is quite beautiful, and presented here in entirety as an explanation of the four points above:
  • We consider it our responsibility to gain the trust of the businesses we serve; therefore, we take our customer's problems as seriously as they do and stake our reputation on the quality of the work we produc.
  • We consider it our responsibility to write code that is defect-free, proven, readable, understandable and malleable; therefore, we follow our chosen practices meticulously even under pressure and practice our techniques regularly.
  • We consider it our responsibility to hone our craft in pursuit of mastery; therefore, we continuously explore new technologies and read and study the work of other craftsmen.
  • We consider it our responsibility to perpetuate the craft of Software; therefore, we enlist apprentices to learn it and actively engage other craftsmen in dialogue and practice.

7 comments:

  1. Hi Tim--

    There is also the "Manifesto for Software Craftmanship"--maybe we could use a card for this. What is the relationship between these two things?

    Jeff

    ReplyDelete
  2. Well, the four-word bit fits on a card.... ;-)

    ReplyDelete
  3. The craftsmen who built the statement of ethics is currently talking about the relationship between these things. I personally think I like it better than the manifesto. But I think less is more.

    ReplyDelete
  4. Sorry to nitpick, Tim, but this slogan only has one original source, and it's not any of the people you've credited.

    "We care. We learn. We PRACTICE. We share."

    http://groups.google.com/group/software_craftsmanship/msg/196c35651b050f43?dmode=source

    I'm sure you'd want me to point it out if someone credited someone else for one of your ideas :-)

    The paragraphs that expand on each "pillar" represent the (mis)interpretations of people who obviously didn't get Jason's point when he posted them.

    He also proposed adopting a symbol instead of using words to describe software craftsmanship (like Prince - i.e., the movement formerly known as "software craftsmanship") - and coined the phrase:

    "The first rule of software craftsmanship is that you do not talk about software craftsmanship"

    ReplyDelete
  5. Well given, friend!

    My reference was the Software Craftsman's Ethics talk. When the Care/Practice/Learn/Share thing came up, it was on the insistence of Adewale Oshineye (and accepted, I think, unanimously). I don't think there was any attempt to cut Jason out, but rather excitement over the idea. In the email, we didn't talk attribution and so I assumed it had originated there.

    I see that Jason's email was much earlier than the craftsman's ethics discussion but was well past the point that I gave up on keeping up with the craftsmen email talk. I think that makes it my fault for not doing the research. Apologies to Jason Gorman, and this quotation from the email referenced above:


    * We care about the quality of the work we do. It should be as good as we're capable of making it.

    * We learn from our mistakes, we learn from the examples set by others. We learn from books and blogs and webinars, from magic beans and electric parsnips. When we're exposed to good examples, we learn better. So it's important to have good influences. If your guitar idol is Al Di Meola, you'll probably turn out to be a more capable player
    than if you followed Pete Doherty.

    * We share what we've learned. That's the other side of the learning coin. Who sets the examples? Who writes the blogs, and creates the screen captures and dos the voodoo on the magic beans? We do, right? We are all simultaneously masters and apprentices, teachers and
    students, mentors and mentored, coaches and coachees.

    * Most importantly - and this defines the whole movement as far as I'm concerned - we learn by doing. We PRACTICE. Continously. Like an
    athlete or a pianist or a circus clown or a lion tamer, we now that what we have to know and apply is far more than can be applied consciously. We must internalise our knowledge and build our "software development muscles" and the necessary reflexes and muscle memory
    needed to be a productive programmer. This is where I think we have been going wrong all these years; we've been treating software development as an entirely intellectual pursuit, one you can master
    (there's that word that's going to get us into trouble!) by reading books or watching other people do it. Which is hogwash. You can no more master a skill like refactoring by reading a book on it than you can master riding a bicycle by reading the manual. It takes practice: lots and lots of practice. Good practice. Focused practice. Measured
    practice.

    ReplyDelete
  6. I have absolutely no idea what you mean by "magic beans and electric parsnips". Would you please explain? Thanks.

    -- Günter.

    ReplyDelete
  7. "We learn from our mistakes, we learn from the examples set by others. We learn from books and blogs and webinars, from magic beans and electric parsnips."

    It means from any source at all, even those unlikely or absurd.

    ReplyDelete

Note: Only a member of this blog may post a comment.