Fog Creek Software
Discussion Board




Engineers vs. craftsmen/women

http://www.fawcette.com/vsm/2003_06/magazine/departments/softwarearchitect/default.asp

Interesting article by Alan Cooper, makes distinctions between engineering and craft work:

"Commercial programming is clearly a craft. Unfortunately, the failure of our profession to recognize this has allowed two profound problems to grow. First, programmers almost never work to a plan.  ... Second, programmers are almost never supervised."

Comments?

Biotech coder
Wednesday, September 03, 2003

> Second, programmers are almost never supervised

How about Pointy Haired Bosses?

Matthew Lock
Wednesday, September 03, 2003

I'm curious, however, who the architect would be in the software world. Especially in the XP world, though there is precedent in design/build/fasttrack type projects.


====

>> Second, programmers are almost never supervised
>How about Pointy Haired Bosses?

Please read the article before commenting.

mb
Thursday, September 04, 2003

I guess this old horse still isn't dead.

> Engineers don't build software; programmers do.

No, my compiler builds the actual computer instructions, I (as an engineer and programmer) write the software that tells the compiler what to do.

I guess this is just another Leaky Analogy gone awry.

Just out of curiosity, why was this article written?

Spam
Thursday, September 04, 2003

Spam: agreed, in spades.

Article was written because he admires his dad.

Fiddling with Nero
Thursday, September 04, 2003

Spam,

>> No, my compiler builds the actual computer instructions, I (as an engineer and programmer) write the software that tells the compiler what to do. <<

No, you write the software that is the input for the compiler. It's the build script that tells the compiler what to do.

Now I can pat myself on the back for being as stupidly pedantic as you!

Mark
----
Author of "Comprehensive VB .NET Debugging"
http://www.apress.com/book/bookDisplay.html?bID=128

Mark Pearce
Thursday, September 04, 2003

mb,

>> I'm curious, however, who the architect would be in the software world. Especially in the XP world, though there is precedent in design/build/fasttrack type projects. <<

My understanding is that Cooper's "architect" is the interaction designer, the person who figures out exactly who the end-users are, what goals they have and what tasks they want to perform, and how the software should interact with them to achieve the tasks and reach the goals.

Bear in mind that Cooper runs an interaction design company, and so has an ulterior motive for pushing the architect role.

But I happen to agree that developers should construct software and "architects" should design the interaction of that software with the end-users. Asking developers to perform both roles is just too much in most situations.

Mark

Mark Pearce
Thursday, September 04, 2003

When a craftsman builds a cabinet, she doesn't make the wood. The tree does that.

Likewise, she doesn't do it with her bare hands, but using tools.

When I code, I use tools such as compilers to impose structure on a bunch of 1 and 0s that wasn't there before I started. The end result is hopefully useful. This is craft.

Scientists and artists are both interested in going where no-one has gone before. Craftspeople are pragmatists. They only want to try something new if it seems likely to work.

Someone who talks to users about what they want the end result to be like, and renegotiates the things that turn out to be problematic, is akin to an architect. Architects are the buffer between the client and the engineers.

Someone who comes up with the overall design for an application, (often called an architect) is closer to an engineer. "This building will fall down if you take out that pillar" and "This solution will generate too much server traffic" seem analogous to me.

Nonetheless, even the best engineer needs good craftpeople. A well-designed building built by an amateur bricklayer is not going to last long. Similarly, good design does not guarantee a working application. Someone has to craft it.

I think a lot of programmers are unhappy with being classed as electronic brickies - it feels like a loss of status. But if the project is large, you can't work on all levels at once. Someone has to hold the big picture, someone else has to focus on the details. Few people can do both at once well.

In short, I think Cooper is pretty much on the money.

Dave Hallett
Thursday, September 04, 2003

Don't we have such engineers now?  Only we call them domain experts.

Reminds me of Weizenbaum's criticism of the MIT ai lab hackers though:
"He [the hacker] has nothing he can analyze or synthesize; in short, he has nothing to form theories about. His skill is therefore aimless, even disembodied. It is simply not connected with anything other than the instrument on which it may be exercised. His skill is that of a monastic copyist who, though illiterate, is a first rate calligrapher."

Eric Sink has his own Ideas too...  http://software.ericsink.com/Are_Programmers_Engineers.html

sammy
Thursday, September 04, 2003

In the same vein, what would maintenence programmers be called?
Software Janitor? Software Sanitation Engineer?

Cletus
Thursday, September 04, 2003

*  Recent Topics

*  Fog Creek Home