Fog Creek Software
g
Discussion Board




A Clay Pot

Crafting a piece of software is akin to creating a piece of pottery. 

You start with some inkling of the end result.  You have an idea in your mind.  You know the result will be a piece of pottery but your not sure how you will create it.  You know the only way to get there is to start shaping the clay, molding it to become reality.  It's neither here nor there.  Along the way it deforms but you continuously shape it and mold it with your hands.  At various points along the way you cannot distinguish it from the block you started with nor the vision in your mind.  But you know that you must proceed.  Shaping and molding.  Finally the wheel slows down and the pot glistens in the sun.  You have done it.  The vision has become a reality.  Not a perfect reality, but a reality nonetheless.

I'm not crazy, I'm just a little unwell
Tuesday, October 14, 2003

---"Crafting a piece of software is akin to creating a piece of pottery."-------


Yea! They both leak. 

Stephen Jones
Tuesday, October 14, 2003

Interesting, and a neat analogy.  Actually, the problem I have with software is that it's made out of a special clay that can be melted down and re-shaped at any time.  To quote:

"If I need a screwdriver and I select a hammer, I probably won't get anywhere and will eventually realize my error.  The problem with software is that we are able to turn a hammer into a screwdriver." -- Laurent Bossavit

The Pedant, Brent P. Newhall
Tuesday, October 14, 2003

Isn't everything made by humans like shaping and molding clay? How's software different?

char* full_name()
Tuesday, October 14, 2003

>> "How's software different?"

Who claimed that software was different?


Tuesday, October 14, 2003

More generally, software development is analogous to almost any construction or modeling project. More than engineering, this is just craftsmanship (pre-industrial) and attention to detail. There are no fixed rules.  You work in a separate piece with care, until satisfied, you do your research, annotate, code, then proceed to test (as you code, many times) and perfect. Then integrate, little by little. Then more tests. No matter if your project has 1 or 100 people, things don’t change; actually they get only worse.

Pablo
Tuesday, October 14, 2003

http://www.google.com/search?q=software+malleable&ie=ISO-8859-1&hl=en&meta= returns 31,500 hits.

Christopher Wells
Tuesday, October 14, 2003

You guys have strange ideas of what engineering is all about.

Do you know that on the Apollo moon project they did not sit around and design rockets in their head and then build them and go to the moon on the first go?

No, they refined their rocket and control system designs over years, doing countless test flights, many of which were disasterous.

Dennis Atkins
Tuesday, October 14, 2003

No, no, no, writing software is very like making love to a beautiful woman.

Mr Jack
Wednesday, October 15, 2003

Frustrating, you mean?


Wednesday, October 15, 2003

If you think that making software is like making love to a beautiful woman, you're either doing something wrong with the woman, or I want to get a copy of your compiler.

Clay Dowling
Wednesday, October 15, 2003

Dennis Atkins wrote that NASA refined their rocket and control system designs over years, doing countless test flights.

I don't see how that conflicts witth the analogy.  The pot doesn't jump into its final shape immediately.

The Pedant, Brent P. Newhall
Wednesday, October 15, 2003

I see the Apollo project as a perfect example of engineering and I see software design the same way. I don't see either as hobbies and crafts sorts of things. The refinement that goes into software design is sometimes given as evidence that software design is not engineering because engineering is all about creating a perfect system that works the first time without any trouble. I reject this model of engineering. When it gets to the point where you can specify something and build it and it works right the first time, you are talking about manufacturing and not design. Software design is still usually design/engineering and not manufacturing of a known entity.

Dennis Atkins
Wednesday, October 15, 2003

*  Recent Topics

*  Fog Creek Home