
Donald Knuth's famous book is titled "The Art of Computer Programming". Take it from one of the "gods" of our profession - software development is "The Art"! More precisely though, it is an act of creation. Nothing surprising about it if you take a closer look: suffice it to say that no two computer programs should be the same. If you find yourself coding the some thing twice, you are doing something very wrong. Also, computer programs do not really have any material form to speak of, other than a bunch of electrons stuck in a chip of silicon - they are quite literally - pure manifestation of someone's ideas.
Let me put this in an eye-catching one-liner to focus everyones attention: software is not manufactured in a scientifically controlled way - it is created
This simple (and pretty obvious) observation does not imply that programming is a more "noble" activity then, say, sweeping floors, bookkeeping or assembling cars in the factory - the value of ones work should be judged solely by the results and not by the nature of the task. It does however have quite a few interesting and very often neglected consequences - and any software project manager (agile or otherwise) would be better off rememebering them.
First of all - a team of software developers must not be managed like a personnel manning a factory line. They should not be forced, encouraged or even allowed to repeat themselves and get used to repeatable habits of mindless kinds (time tracking and reporting comes to mind) - after all, they are asked to produce something unique, and not replicate the same thing over and over again. Routine should be fought with, and any rules that are necessary (and some are) should be simple, intuitive and make obvious sense
Second - proficiency in the "craft" obviously does matter. However, it is creativity and not craftsmaship that is the most important and desireable attribute of a good developer. A developer that has just enough skills to get going without embarrasing himself, but is creative is much more valuable than an "expert" with no "soul". Let me make a comparison to guitar playing: take Steve Vai - absolute virtuoso when it comes to technical flawlessness. Awe inspiring, breathtaking, un-human. Yet - I will choose Angus Young or Keith Richards over Vai every time, even though they have no technique to speak of. Vai's music is, frankly, quite bland and forgettable, AC/DC and Rolling Stones move your soul (there, I have alienated half of my audience :)).
Third - rules are meant to be broken. All of them. And really - it is usually after you break them, when you start achieving results that are breathtaking. The best way to break rules though is to do it only after you learn them. This may mean that the manager of a development team may at times feel uneasy, as the team will try to wreak havoc in the status quo. But a good manager will acknowledge that this is the right thing to be happening to the team and allow, more - encourage and promote - improvisation, "on the edge" risk taking, sudden strikes of "divine inspiration" and all sorts of weird behavior.
Lastly - it is quite impossible to get any sort of results from a team that is not inspired and does not believe in a value of the project they are working on. Sense of value of the work is something that is of critical importance for the success of the project
The list above is by no means complete and comprehensive. It is there to just whet your appetite. I will be writing more on this subject in my subsequent installments.
| Attachment | Size |
|---|---|
| 03600022.jpg | 41.07 KB |
Comments
Creativity vs. Craftsmanship
February 3, 2009 by Wojtek (not verified), 1 year 6 days ago
Comment id: 2210
Nice post.
I was sure you were going to mention that creation of the art is not really predictable and controllable (vs. manufacturing). Thus this is also one of the reasons why many traditional methodologies applied to software development fail. And why there is no golden bullet methodology which solves all your problems. Art does not like rules.
Still, I would rather have 5 great craftsmen + 1 or 2 software artists (or like Matt Quail nicely puts it "software poets") on my developer team than just 7 pure artists without any solid craftsmanship foundations.
I agree that great software requires creativity. This creativity however must be supported by very strong craftsmanship (read: very profound knowledge of computer science + years of experience in writing software).
Ideal developer demonstrates both these assets.
Cheers,
Wojtek
Good post but...
February 3, 2009 by Terry (not verified), 1 year 5 days ago
Comment id: 2212
It's important to realize that software development is really a craft and an art not just an art.
Thus this is also one of the
February 17, 2009 by Johnny (not verified), 51 weeks 4 hours ago
Comment id: 2240
Thus this is also one of the reasons why many traditional methodologies applied to software development fail. cobro
Nice to see the idea of 'Art
April 9, 2009 by marekj (not verified), 43 weeks 4 days ago
Comment id: 2451
Nice to see the idea of 'Art And Skill' expressed. There seems to be a lot of discussion about ART as if you don't have to have Skills and you can forget all the Rules. However I think you are right, if you want to break the rules you have to know the rules, no nie?
I remind myself of an artist I met once at his studio who did large size Abstract paintings and my first thought of 'how horrible' while looking at them; but then I saw his 'Still Life' sketches and Human Body studies, he was a master with the pencil sketch. The dude had a lot of Skill and here he was trying go express something new with Abstract art for himself.
Thanks
"A Jednak Sie Kreci"
Post new comment