Craft - Why I am here

4 views
Skip to first unread message

Matt Heusser

unread,
Dec 16, 2008, 9:06:19 AM12/16/08
to software_craftsmanship digest subscribers
Dave Hoover wrote:

> I started to wonder what purpose the label "craftsman" or
>"software craftsmanship" really provided outside of my own work.  I've
>found these ideas personally useful, but because craftsmanship is
>centered around delivering to customers

Well, I'd like to tell you why I am involved in this group.

I got involved because, obviously, I care about code. I'm sick of bad code.

Bad code isn't just ugly, it obscures the meaning of the functionality.  If the developer didn't care enough (or lacked the skills to) write the code well, he probably introduced errors into the algorithms.  But, because the code is so ugly (and it probably lacks automated tests), we can't see them.

That means that over time, the code becomes more expensive to maintain and your work like becomes no fun.

Now, the odd thing is that most corporate american roles tend to subtly encourage this behavior. After all, a quick hack now will guarentee me the boss's approval.  And, why, we might never have to touch the code again.  And if we do have to touch it, I might not be on this team.  And if I am on the team, we can probably give it to the new guy.

I'm interested in ways to change the system.  Last summer, I organized the tech debt workshop (sponsored by the Agile Alliance), we made less headway that I would have hoped.  One of the main conclusions that several people came to was that the "problem" with tech debt could be solved by better management.

While that is appealing, on some level I diagree:  Management doesn't actually write the code, test it, or change it.  When we lay the blame at the feet of management, we are missing the fact that it is the technical people who actually make the shortcuts.

I see a craft model doing two things: It provides training (to avoid the ignorance problem) through real tangible example, and it gives some sort of professional code of ethics ("I will not do crap work") which may, perhaps, maybe, over-ride the desire of some to pass responsibility off to the boss. ("The boss put me under incredible time pressure to take short-term optimizations!  It is his fault!")

So, in that way, I would like to extend the model to beyond the borders of my shop.  That is, I believe, a good part of the idealistic reason people give speeches and write books and such - to impact the industry.

That is why I would support a /good/, /optional/ program involving commitment to ethical behavior and formal training.

But I'm open to discussion either way.

regards,

--
Matthew Heusser,
Blog: http://xndev.blogspot.com
Twitter: http://www.twitter.com/mheusser
Skype: mattheusser

Markus Gaertner

unread,
Dec 16, 2008, 4:38:57 PM12/16/08
to software_cr...@googlegroups.com
> Now, the odd thing is that most corporate american roles tend to subtly
> encourage this behavior.

The same goes for at least one german company. Three years ago I started fresh
from university as a tester and dived into the topic. There are two re-occuring
patterns:
- the code gets tested afterwards, I don't need to bother (my favourite one - a
similar view is the confusion of try-out and testing, which I sense sometimes
during conversations)
- ugly code

While the first one is quite self-explanatory and almost every tester has had
an experience like this, the second one is harder to describe.

One or two weeks ago I was made aware of SqueakyCleanCode and
ScreechinglyObviousCode (http://c2.com/cgi/wiki?ScreechinglyObviousCode). When
I take a look into the source code branches, I rarely see
ScreechinglyObviousCode, I'm maybe able to see SqueakyCleanCode, but most of
the time I just see ugly code.

If I understood you right, I wouldn't dare to say that it's not just an
American problem you described.

Kind regards
Markus Gärtner

Nuno Marques

unread,
Dec 16, 2008, 7:26:17 PM12/16/08
to software_cr...@googlegroups.com
I would also want to add that it is very frustrating at times to work with some APIs.

Even when you care about your craft, it gets difficult to produce something you are really proud of because you have to use some broken 3rd party framework or component. Some of them make your code impossible to test.

It might be a good aim to leave the code better than it was when you found it but sometimes that is not enough.

Nuno

2008/12/16 Markus Gaertner <mgae...@googlemail.com>

Dave Hoover

unread,
Dec 17, 2008, 6:04:41 AM12/17/08
to software_cr...@googlegroups.com
On Tue, Dec 16, 2008 at 8:06 AM, Matt Heusser <matt.h...@gmail.com> wrote:
> Dave Hoover wrote:
>
>> I started to wonder what purpose the label "craftsman" or
>>"software craftsmanship" really provided outside of my own work. I've
>>found these ideas personally useful, but because craftsmanship is
>>centered around delivering to customers
>
> Well, I'd like to tell you why I am involved in this group.
>
> I got involved because, obviously, I care about code. I'm sick of bad code.

I think this sort of "why I am here" declaration is a good idea. And
Matt's email made me ask myself why I am involved in this group and
how I ended up here.

First, I would like to start out by recommending that anyone who is
serious about software craftsmanship go out and read Pete McBreen's
book "Software Craftsmanship". I think it's a critical starting place
for these discussions, and on a more personal note, the book had a
huge impact on me. Probably the biggest reason I am a part of this
group is that I have no where else to go. :) I was a later-in-life
self-taught programmer who had a wife and child(ren) to support from
the day I wrote my first for loop, so I have no formal scientific or
engineering education, and I don't have the option of taking time off
to obtain one. And yet I want to become great at what I do. In my
first two years as a programmer I started to despair about my lack of
relevant education. It seemed that without computer science or
software engineering credentials, I was going to have a hard time
making progress. But then I read "Software Craftsmanship" and I felt
like I could fit into the world that Pete was describing. I could see
myself in the story, and I recognized that I was an "apprentice".
This gave me the "career map" I needed which allowed me to take the
steps I needed to make progress. Neither computer science nor
software engineering provided this map for someone like me. So,
unlike some people (like Pete) who argue strongly against software
engineering, I am mostly ignorant of it and choose software
craftsmanship because I didn't have any other options.

The steps I took after reading Pete's book obviously shaped the way I
look at software development. And because these 6 years since I read
Pete's book have been largely positive for me, I would like to
encourage other people to walk a similar path, to help them make
similar progress. That is one of the reasons I wrote "Apprenticeship
Patterns". I would also like to improve the apprenticeship experience
and raise the bar for what we expect from someone with 4, 5, or 6
years of experience in our industry. That is one of the reasons I
started Obtiva's apprenticeship program. I want to instill a desire
in people to become master craftsmen, which is a very
counter-cultural, yet increasingly important role to play (see
http://search.safaribooksonline.com/0201733862/ch11lev1sec1).

So, I wonder what we as a community can do to improve these things
even more. I wonder how we can make it easier for companies and
individuals to take on apprentices. I wonder how we can make it
easier for companies and individuals to host and send journeymen to
spread great ideas between development shops. And most critically, I
wonder how we can ensure that our master craftsmen stick with the
fundamental activity of actively developing software for long-term
customers (see http://search.safaribooksonline.com/0201733862/ch08lev1sec7).

I'm honestly not interested in any criteria that would allow us to
distinguish an apprentice from a journeyman or a craftsman from a
non-craftsman. When it comes to a set of principles that a software
craftsman should adhere to, I think Pete's book serves as a good
enough starting point. I realize now that I'm here because I hope
that we can organize a network of people to encourage the 3 activities
that I've seen make the biggest impact on people becoming software
craftsmen. I'm here because I'd like to see us:

1) Facilitate the introduction of apprenticeships, similar to 8th
Light's and Obtiva's
2) Create a structure that encourages journeymen to journey between
development shops, similar to Corey Haines' tour
3) Seek out master craftsmen and identify their masterpieces and
contributions to the craft, to provide the rest of us with something
to aspire to

Best,

Dave Hoover
//obtiva: Agility applied. Software delivered.

Renzo Borgatti

unread,
Dec 17, 2008, 9:50:15 AM12/17/08
to software_cr...@googlegroups.com
Thank you Dave, I appreciate your pragmatism. I think that searching
for software craftsmanship values and meaning and hopefully create
some sort of manifesto is important. But I think the time we dedicated
at the summit for this was enough. I was hoping to converge at the end
of the day on a definition of craftsmanship. But we started to
converge around 4pm and hence the discussion that is going on here.

I have the impression that trying to find those values in their best
possible form now is like a big design upfront. Let's publish what we
found until now as "manifesto beta" and refine the rest over time.

The reason why I'm replying to Dave is because I see at the end of his
reply a list of practical steps. I'm the guy that at the end of the
summit wrote on the board a small box with some practical steps for
aspiring craftsmen. Those are just ideas, but the principle is how an
aspiring craftsman can improve their skills, identify a master
craftsman and when to set the transition from apprentice to craftsman.

I'm thinking about a [cross-company] network and a way to identify our
master craftsman. Here's some other interesting ideas:

- Coding dojos: monthly coding dojo and some way to track who is
attending. Maybe we should consider a minimum of 10 dojos to attend
for an apprentice to become a craftsman. The dojo can be pairing with
a master craftsman. Or what we did with Uncle Bob recently at 8thlight.
- Masterpieces: as Dave said we should know masterpieces. Both books
and software I think. Reading groups? Source code retrospective groups?
- Exams? How to set the transition to a next level? I should be able
to demonstrate my skills executing katas or maybe solving a small
algorithm in front of a master craftsman jury.
- Portfolio. Bring together the relevant part of your work to
demonstrate what you are capable of. The apprentice should be helped
out identifying and collect those pieces maybe in a common place for
everyone to see.

Well, hope I gave you the idea of the direction I'd like to give to
the discussion.

Renzo

Nigel RM

unread,
Dec 18, 2008, 10:06:13 AM12/18/08
to software_craftsmanship
On Dec 17, 2:50 pm, Renzo Borgatti <renzo.borga...@gmail.com> wrote:
> I have the impression that trying to find those values in their best  
> possible form now is like a big design upfront. Let's publish what we  
> found until now as "manifesto beta" and refine the rest over time.

That sounds like an encouragingly Agile approach!

> - Portfolio. Bring together the relevant part of your work to  
> demonstrate what you are capable of. The apprentice should be helped  
> out identifying and collect those pieces maybe in a common place for  
> everyone to see.

I don't know about you, but restrictive NDAs and company IT security
policies effectively prevent me from talking about, let alone showing
people my work :(

Ben Rady

unread,
Dec 18, 2008, 4:42:52 PM12/18/08
to software_cr...@googlegroups.com
On Thu, Dec 18, 2008 at 9:06 AM, Nigel RM <slee...@gmail.com> wrote:


I don't know about you, but restrictive NDAs and company IT security
policies effectively prevent me from talking about, let alone showing
people my work :(

I have that too, but I also have projects that I contribute to on my own time. In many cases, this is a better demonstration of my abilities because it's completely under my control.

Ben
Reply all
Reply to author
Forward
0 new messages