Commit to becoming a Hardware Craftsperson

It’s my opinion that are are some very basic techniques that create great value, and should be re-stated and reinforced as good practices from time to time. I also contend that they are strongly related to agile methodologies that we’re promoting here at AgileSoc.

One of these is to follow a disciplined process. I think we’ve all been guilty at one time or another during our careers of using a ‘short-cut’, or skipping certain steps in development because what you’re working on is sosimple. And if you’re lucky this does not come back to bite you later in the project i.e., through some silly error. But IF it does, you usually are kicking yourself for doing the short-cut in the first place. The short-cut probably saved you a day or two, but your debug effort might have taken days to resolve. Been there, done that. Not pretty!

Or the short-cut is something that you’re not terribly proud of because, while functional and it works properly, it just not your best. Been there, too. While it is a pragmatic approach at the time, I think these kinds of decisions inevitably come back to haunt you as these decisions tend to accumulate and likely decrease the maintainability of your code (or put another way increase the software’s entropy). Inevitably these decision require you to rewrite or refactor your code to ‘clean it up’.

In my recent reading, I came across the concept of ‘software craftsmanship’ a few months ago (seehttp://en.wikipedia.org/wiki/Software_craftsmanship) . This is a commitment to yourself where you take the extra effort to ensure that what you produce is something that you can be proud of; something you’re willing to show off in fact. Similar to a carpenter or other master craftsperson where you create something that is not only functional and has value to your customer, but is also aesthetically pleasing in some way. There’s more to the concept than just that, and I encourage you to investigate it further.

The software folks have even created a ‘Software Craftsmanship’ web site (http://manifesto.softwarecraftsmanship.org) with a manifesto (who the heck doesn’t have a manifestothese days), where you can sign up and indicate that you’re committed to this ideal. You can hunt for my name there!

The manifesto is copied below. For those familiar with the Agile Manifesto, this manifesto builds on those concepts.

Manifesto for Software Craftmanship

Not only working software,
but also well-crafted software
Not only responding to change,
but also steadily adding value
Not only individuals and interactions,
but also a community of professionals
Not only customer collaboration,
but also productive partnerships

(c) 2009, the undersigned. This statement may be freely copied in any form, but only in its entirety through this notice.

Manifesto for Hardwware Craftmanship

Not to be left out, I think with one simple change to the first item on the list we can have our own Hardware Crafsmanship Manifesto.

Not only working first pass silicon,
but also well-crafted silicon
Not only responding to change,
but also steadily adding value
Not only individuals and interactions,
but also a community of professionals
Not only customer collaboration,
but also productive partnerships

And voila, we have our own manifesto for Hardware Craftsmanship!

I think this ideal of a craftsperson dove-tails quite nicely with the agile philosophy we’re trying to promote at AgileSoC. Where the agile methodologies are to a great extent focusing on the team and project dynamics; the craftsmanship ideal is focused on what the individual can do to support those team dynamics.

What does Hardware Craftmanship mean to me? Mostly, I want to create something that I can point to and say to myself “that’s really nice work”. Have pride in what I do for a living. I get bonus points if others point out that my stuff is aesthetically pleasing to them.

As well, regardless of how mundane the task may seem there is always an opportunity to add a little more extra effort to make it special.

For me, it includes (but is not limited) to the following actions and best practices that I think help me achieve the level of “craftsperson”:

  • take responsibility for code I create
  • create clear and complete documentation
  • always be concerned with the clarity as well as functionality of anything I create
  • leave code I touch in better shape than I received it
  • willingly accept (nay, embrace and appreciate) constructive criticism
  • freely share my knowledge, and admit ignorance when required
  • be honest with my dealings with my team mates

I’d like to think that I’ve doing most of this for some time now. But the honest reality is that I haven’t. So one of the professional commitments I made to myself for 2013 is try and live up this ideal this year and become a true Hardware Craftsperson.

What do you think it means to be a Hardware Craftsperson?


One thought on “Commit to becoming a Hardware Craftsperson

  1. I’m undecided on the utility of the Software Craftsmanship Manifesto in general, but porting it to the ASIC world presents its own unique problems:

    1. There is no market for it. No one is remotely interested in anything that resembles a schedule slip today for benefit tomorrow – our horizons are too short, and future value is heavily discounted. Our industry refuses to acknowledge that the true benefits of “re-use” only come with investing time, thought, effort and money to make them worthwhile.

    2. To be an artisan generally requires high-quality, professional-grade tools. In our industry, there is no such thing. They simply don’t exist. Our tools have blunt blades and sharp handles. Our lingua franca is clumsy, vulgar and uncouth;devoid of lyricism and meter, it leaves us stammering and stuttering to even express our intent.

    http://www.codinghorror.com/blog/2012/06/the-php-singularity.html

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.