Why a manifesto? How... Help shape the InfoQ news item

186 views
Skip to first unread message

Mark Levison

unread,
Mar 10, 2009, 1:56:31 PM3/10/09
to software_craftsmanship
I'm writing a news item for InfoQ on the movement (which could then
also be referenced in Wikipedia - helping with that problem). As I
write the article I'm left with a few questions:

1) Why did the manifesto get written?
2) How will it help solve the problems of crap code?
3) What will motivate "Joe: A Feature a Day" to become a craftsman?

I ask these questions because I'm currently coaching at a Corporate
Development shop and can't see how the manifesto would help here. The
developers that are motivated to learn and produce the best quality
code are already trying to get better. The problem is that nothing
seems to motivate the others to get better - short of a fire being lit
underneath their feet.

So it would help do a better job of framing the item if I could answer
three questions.

BTW If you don't want me to quote any of reply - let me know.

Cheers
Mark Levison

Paul Pagel

unread,
Mar 10, 2009, 2:20:10 PM3/10/09
to software_cr...@googlegroups.com
Mark,

I am excited to read your article, it sounds interesting. Here is a
stab at answering some of your questions.

Paul

On Mar 10, 2009, at 12:56 PM, Mark Levison wrote:

>
> I'm writing a news item for InfoQ on the movement (which could then
> also be referenced in Wikipedia - helping with that problem). As I
> write the article I'm left with a few questions:
>
> 1) Why did the manifesto get written?

Last year in his Keynote at "Agile 2008", Uncle Bob proposed an
amendment to the Agile Manifesto of "Software Craftsmanship over
Crap." Now, the manifesto, to my knowledge, was never changed.
However, the software craftsmanship community started. The actual
manifesto started with a summit on Software Craftsmanship in Chicago,
on December 13, 2008. There we discussed what it means to be a
craftsman and an apprentice and so forth. On a whiteboard, we wrote
the first version of the manifesto and all the attendees signed it.
For a few months afterwards, we talked about it on the google group,
discussing the various ideas put forth at the summit. Then, in
February, Doug Bradbury wrote an email called "The new Left Side"
which started to get the values and wording which was refined into the
actual Software Craftsmanship Manifesto. That answered more of the
how than the why. The why for me is to be able to see the set of
values that can be pointed to as what we are capable of doing as
craftsmen.

>
> 2) How will it help solve the problems of crap code?

By raising the bar, we hope to set the standards for development
higher. Also, along with the principles, it will give something of a
roadmap for developers who want to follow the principles of software
craftsmanship.

>
> 3) What will motivate "Joe: A Feature a Day" to become a craftsman?

A pride in the work they do. The career/compensation gains they can
get by being more productive, by following Uncle Bob's statement, "The
only way to go fast is to go well." The fact that it is mostly
unsustainable for a business to write bad code and be successful.

Raoul Duke

unread,
Mar 10, 2009, 2:31:29 PM3/10/09
to software_cr...@googlegroups.com
>> 3) What will motivate "Joe: A Feature a Day" to become a craftsman?
>
> A pride in the work they do. The career/compensation gains they can
> get by being more productive, by following Uncle Bob's statement, "The
> only way to go fast is to go well." The fact that it is mostly
> unsustainable for a business to write bad code and be successful.

There are some things in life that are hard to appreciate until after
you have experienced them.

The advantages which come back, the return-on-investment from going
the Craftsman route, quickly reveal how emaciated and self-defeating
"crap" approaches are. Code becomes better for everyone concerned:
things get done faster, easier, with fewer bugs, and are more amenable
to change.

Rainbows and unicorns. :-)

sincerely.

Dave Rooney

unread,
Mar 10, 2009, 2:50:35 PM3/10/09
to software_cr...@googlegroups.com

I just did a Code Smells info session at a client (with Mark!). There
were people in the room genuinely engaged, asking the right questions in
the right way. There were also people in the room who felt they didn't
need to be there since they knew it all already. There were also people
who gave a bit of a crap, but were more of the mind that all this
refactoring stuff was just going to slow them down and they had real
work for real people to get done. I suspect that you could apply a
really nice bell curve to the group, with the "gave a bit of a crap"
people in the middle.

Those people in the middle of the curve are "Joe: A Feature a Day".
They bust their butts while their in the office but when the day is done
they're out of the software development world. They aren't reading
books, poring over 200+ messages a day from mailing lists, following
interesting software development people on Twitter, etc. They think
they're doing a decent job. They're almost always internal staff who
have a good-enough salary and benefits, and they keep getting modest
increases so they really must be doing a decent job.

So, what's compelling for them about buying into the Software
Craftsmanship movement? What's going to get them so stoked that they'll
spend more time outside work learning their craft? What will get then
past being told that most of what they've been producing for most of
their careers is crap?

Pride will get you the "genuinely interested" people. The "people who
felt they didn't need to be there" are likely lost causes and we'll have
to let nature take its course. To create a fundamental shift in this
industry we need to get people who "give a bit of a crap". Pride alone
isn't going to do that. I don't know yet what will.

--

Dave Rooney
Mayford Technologies
"Helping you become AGILE... to SURVIVE and THRIVE!"
http://www.mayford.ca
http://practicalagility.blogspot.com
Twitter: daverooneyca

Raoul Duke

unread,
Mar 10, 2009, 3:00:18 PM3/10/09
to software_cr...@googlegroups.com
> To create a fundamental shift in this
> industry we need to get people who "give a bit of a crap". Pride alone
> isn't going to do that. I don't know yet what will.

There are only 2 forms of motivation, as far as I know: internal and
external. If they do not have internal motivation (so that's of course
part of the question, to find arguments which spark their curiosity
and engage their internal motivation) then external will have to do;
managers will have to raise their standards.

sincerely.

Micah Martin

unread,
Mar 10, 2009, 3:18:55 PM3/10/09
to software_cr...@googlegroups.com

On Mar 10, 2009, at 12:56 PM, Mark Levison wrote:
>
> 1) Why did the manifesto get written?

I can speak for myself but I was only one small player in the effort.
I wanted to bring awareness and authority to principles of Software
Craftsmanship. Prior to the manifesto there was mounting buzz
regarding craftsmanship coming from all over the world. But there
were some discrepancies in what people meant when they used the term
Software Craftsman. So it seemed like a good idea to get the buzz
makers in the same room to consolidate ideas and agree on the meaning
of Software Craftsmanship.

> 2) How will it help solve the problems of crap code?

As of today, there are over 1500 signatures on the Manifesto. 1500
people are fighting against "crap code". Those who have been fighting
"crap code" now know that they are not alone in their fight. Those
who write "crap code" now know that there are 1500 people fighting
against them.

The Manifesto is a gentle push away from "crap code" and toward
craftsmanship.

> 3) What will motivate "Joe: A Feature a Day" to become a craftsman?

Yesterday it was experience and logic that made craftsmen. Today,
peer pressure makes craftsmen. Tomorrow, the need to keep one's job
will make craftsmen.

Micah

Markus Gaertner

unread,
Mar 10, 2009, 5:32:12 PM3/10/09
to software_cr...@googlegroups.com
Micah Martin wrote:
> As of today, there are over 1500 signatures on the Manifesto. 1500
> people are fighting against "crap code". Those who have been fighting
> "crap code" now know that they are not alone in their fight. Those
> who write "crap code" now know that there are 1500 people fighting
> against them.
>
> The Manifesto is a gentle push away from "crap code" and toward
> craftsmanship.

I would like to print this out and hang it out in public at work... Well said.

Kind regards
Markus Gärtner

Corey Haines

unread,
Mar 10, 2009, 5:33:45 PM3/10/09
to software_cr...@googlegroups.com
I've had quite a few discussions on these topics with people, and, while there are plenty of people in the community who disagree with me, these are the answers that I've come to for myself.


1) Why did the manifesto get written?

Back at the summit in December, we had a discussion about who we were targeting: clients or other developers. There was differing opinion, which was very cool, as we got to hear people's focus.

For me, there is one primary goal. This goal is to provide something that junior/entry-level developers can see and recognize. Over the past three months, as I've talked to more and more people, including newly-minted devs, I am amazed by the number of people who either a) don't believe that you can be successful doing the techniques that I espouse and b) don't realize that there are actually companies out there focusing on the craftsmanship principles. What scares me the most are the people in the second group.

By becoming more vocal, publishing a manifesto, beginning further work on establishing principles, as well as concrete schools of thought, we are creating a light that new devs can see. Those who are really interested can more easily find us, talk to us about apprenticeships, meet companies that actively engage in craftsmanship activities (apprenticeships, etc). In some cases, this will introduce them sooner to these ideas, hopefully saving some from the frustrations they can face in a different situation.

 
2) How will it help solve the problems of crap code?

I agree with the idea that raising the bar in our own community will force other shops to raise their own bar, or lose business to the craftsman shops.

Also, over time, as more and more younger developers join the ranks through established apprenticeship programs, they will write less and less of the crap code. From the start, they will learn techniques to help improve the code they write. With the day-to-day help and guidance of an experienced mentor, they will be saved the frustration of a lot of the 'crap code' mistakes that I, at least, had to make in order to learn the path that I'm on now to better my own skills.

 
3) What will motivate "Joe: A Feature a Day" to become a craftsman?

I'm answering this with the assumption that this refers to those people that write their code day-in, day-out, not really looking to improve, only interested in just getting it done for their corporate job. For them, software development is a job, not a life.

This is a big one for me with a simple answer: it won't. And, frankly, it shouldn't.

For this type of person, I believe that external motivation isn't going to work. They are already established in their methods, they aren't looking to try new things out that are going to be difficult and, while they are learning, have a negative effect on their job. We've all met them. I've met a few who are really good developers, too, just not craftsman. I'll be honest, I neither care that they become craftsmen, nor am I interested in having them latch on to our movement in order to look like they care. This may sound harsh, and it is, but I've watched a lot of people in other communities bang their head against the wall repeatedly with the whole 'why won't they listen to me' frustration.

For me, there are two people that I'm interested in helping in their journey: new developers who are interested in starting a true life-long career developing software as best they can; and, people who already are experienced and established in their ways, but, given an introduction, would jump at the chance to learn how to write better software. That's it.


-Corey

Mike Bria

unread,
Mar 10, 2009, 9:14:39 PM3/10/09
to software_craftsmanship
So, with respect to what might motivate "Joe", I think it's primarily
(initially) the "getting more with less" button. I know, icky, but it
is what it is.

Sure, I wish he had the more ethereal internal motivation that you and
I do to drive him to find his way to craftsmanship, but alas he
doesn't. Or, at least he doesn't any more. In other words, many
times, this person is the guy who has been beaten up by the man over
the last 15-20 years, has a couple kids to put through college, and a
family to get home to every night.

This point matters for two reasons:
1 - don't assume they are incapable of desiring craftsmanship; they
may just have given up on it some point in the past and need some help
being reminded of their inner drives and some intellectual appeasement
that it "makes sense" (see #2)
2 - if Joe can be shown how craftsmanship can help him do his job
better, help him make his manager happier, make him more secure in his
job, and more effective in meeting his goals in less time .. well
then, you may have a shot at turning him

For example, you say to him, "look, you're going to write code for 30
hours this week. If I can show you how to get more of that 30 hours
meeting goals (as opposed to, for example, being stuck fixing last
week's bugs or re-learning last month's code), might you listen?"

In a nutshell, many people's top priority is "getting the job done",
and that's okay. Help them see how craftsmanship helps them do this
better, and you're getting somewhere.

Is this going to work with everyone? Nope. But it'll work with more
than you think. It takes skill and work on our part to coach this
person well, but its possible.

Don't get me wrong, I'm all for working with and fostering the
naturally motivated/skilled, and for creating more of these kind of
people, but we can't stop there. No matter what we do, these people
will be the relative minority of our industry for at least ...well, at
least a real long time.

Cheers
MB

ps// glad to join the group!

Heinrich Breedt

unread,
Mar 10, 2009, 10:03:18 PM3/10/09
to software_cr...@googlegroups.com
I think what motivates Joe is money, ie does not want to lose his job. If the environment where he works does not value software craftmanship, why would he care?

Michael Bria

unread,
Mar 10, 2009, 11:20:48 PM3/10/09
to software_cr...@googlegroups.com
Money, yes, fair enough.  Also, yes, the environment may not necessarily explicitly value craftsmanship.

But, if the environment does value *results* (and/or "productivity", "end-product quality", etc) and is sufficiently willing to leave the developers to provide this (these things) as they see fit [ie. they do not overly micro-manage or dictate practice], then can't he be convinced craftsmanship can better allow him to provide this...and, thus, get him more money?

Heinrich Breedt

unread,
Mar 10, 2009, 11:42:15 PM3/10/09
to software_cr...@googlegroups.com
On Wed, Mar 11, 2009 at 1:20 PM, Michael Bria <bri...@gmail.com> wrote:
then can't he be convinced craftsmanship can better allow him to provide this

I really struggle with this at the moment. The argument constantly seems to be: "Im getting my work done at the moment. You want to introduce new concepts etc that frankly seems to make the system more complex, you want me to write extra code(tests) etc, and I cant see why I should change my habits, if everybody seems happy with my work, and I have been doing it like this all along"

The problem seems to be that code quality is in the eye of the beholder. I know what *I* regard as quality code, but not everyone may agree. Just kinda hard to keep on rehashing the same arguments over and over.

Michael Bria

unread,
Mar 11, 2009, 8:48:08 AM3/11/09
to software_cr...@googlegroups.com
I'm with you Heinrich.  Don't get me wrong, I'm not offering a magic potion to inspire all ye Joe's.

I guess it comes down to whether Joe *really* does believe all the things you quote as example below.  Other words, does he really believe he has no room for improvement?  For example, is he (and/or his organization) satisfied with the level of quality that ends up in the end product?  If he finds, for himself, some reason to accept that maybe there is room for improvement (for whatever reason), then maybe there will be some in-roads.

Sometimes (most times?) it's just best to lead by example.  If Joe happens to come across a craftsman and/or a craftsman's work, or sees how a craftsman's code has less bugs, or how the craftsman's stories get done sooner, or their customers always seem to be happier, then maybe Joe might find it in himself to start asking questions.

Bottom line, you're absolutely right, you can't *make* someone care about this.  Best we can hope (and try to help with) is to appease to what Joe does to care about, and depend on Joe to find his own inspiration.  The old adage, of course, "You can lead a horse to water..."

Peter Gillard-Moss

unread,
Mar 11, 2009, 9:50:48 AM3/11/09
to software_craftsmanship
I don't believe it is money that motivates Joe to do a bad job. Money
is what makes him do whatever makes his boss late, which includes
staying that extra five minutes after his boss leaves.

I don't think environment is a sole cause either (though it is a big
one) as we are all talking about environments that "get it" which are
still full of Joes. So if money and environment are the big things
then why does Joe persist in these environments which say he's wrong?

Because Joe thinks he's right. Like the guy who reviews clean code
and says it's rubbish because small methods are stupid (http://
www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/product-reviews/0132350882/ref=cm_cr_dp_hist_1?ie=UTF8&showViewpoints=0&filterBy=addOneStar).
One thing I know is that the worst and most dangerous Joes I've met
would put their hands up if you asked "who here is a craftsmen?".
These guys genuinly believe that what they are doing is the right way
of writing software. They are as passionate and dedicated as many
members of this group and they are as determined as we are to go
around infecting every other Joe with what they believe is right.

So why do they think they're right? Because nothing has proved them
wrong. And I bet a large number of people in this group, if they
looked back far enough in their careers, was mentored by a Joe, and if
it wasn't for some small chance discovery of a different idea they
would have followed in his footsteps? For me, if it wasn't for a
chance discovery of Martin Fowler when buying a UML book because I
wanted to learn to be an "Architect" then would I have been derailed?
If I hadn't discovered Agile and Kent Beck and ThoughtWorks and the
whole community around the ideals they represent then I would have
kept on trawling MSDN and hacking away with MS Application Blocks
thinking "yeah that's programming baby". Would I have ever known that
some people program in pairs? Would I have ever realised that you
could write tests using NUnit and there were things called build
servers? Would I have ever come across the word Refactoring and
geniunly knew what it meant?

IMHO that's what I think is the difference between Joe and craftsmen.
That chance encounter with a different idea which caused a little
nagging feeling that you might just be wrong. The second difference
is that you were prepared to take the risk on that "someone elses
idea".

Unfortunetly, as a meme Joe's way has replicated far more succesfully.

On Mar 11, 3:42 am, Heinrich Breedt <heinrichbre...@gmail.com> wrote:

Rik Dryfoos

unread,
Mar 11, 2009, 4:02:44 PM3/11/09
to software_craftsmanship
> Mark Levison wrote:
.
.
.
> 1) Why did the manifesto get written?

Others have already covered this quite nicely.

> 2) How will it help solve the problems of crap code?

As an Engineering Manager, I like that the manifesto puts a name on
the broader "Craftsmanship Values" - values (and practices) that we
actively encourage and foster in our company. It also serves as a way
to clarify our expectations for potential apprentices or more
experienced developers interested in joining the team. It helps with
the mutual selection process aka hiring. The Craftsmanship Manifesto
creates a dialog which we were previously struggling to have.

Speaking more generally on the Craftsmanship Movement and how the
manifesto relates - it is obviously written as an extension of the
Agile Manifesto. I think it works this way too.

The Agile Manifesto states a short set of values. From those values,
we can decide to use tools such as two-week iterations, continuous
integration, short feedback cycles, Pairing and TDD. With the
exception of TDD, these tools focus on the environment within which a
developer operates and do not really address "how" a developer writes
her code.

Enter the Craftsmanship Manifesto. Now we have a short set of values
from which we may decide to employ tools [1] such as; Uncle Bob’s
SOLID principals [2], DRY, YAGNI, KISS, Knowing how to recognize and
refactor code smells, Good Naming and Self-Documenting Code.

> 3) What will motivate "Joe: A Feature a Day" to become a craftsman?

If Joe worked for me, *I* would be trying to motivate him. If Joe was
applying for a job with me, I would not hire him. A minimum
requirement to succeed on my team is a high level of interest in
learning code craft.

The Agile Manifesto served as a focal point for defining the core of
what became the Agile movement. I hope that the Craftsmanship
Manifesto will serve a similar function. It has the potential to spark
discussion, crystallize thoughts and spread awareness. Just as with
Agile Manifesto, the Craftsmanship Manifesto promises to lead to more
profitable businesses and more enjoyable work for everyone on a
software development team.

Sincerely,

Rik Dryfoos
Engineering Manager, Development

Didit
55 Maple Avenue, Suite 106
Rockville Centre, NY 11570
P: 516-255-0500/1-800-932-7761
E: rik.d...@didit.com
www.didit.com

Didit is...
Ranked #137 in the Inc 500 for 2007
Ranked on Deloitte Technology Fast 500 for 2007 & 2008



FOOTNOTES

[1] The list has had some discussion of exactly what the "tools" are
that a Craftsman uses. I am using "tools" as I understand them and
others may very well see this differently.

[2] http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod



Reply all
Reply to author
Forward
0 new messages