Saturday, July 30, 2011

InfoQ: Craft and Software Engineering

interesting presentation @ InfoQ
Craft and Software Engineering

The conclusion is that "classical" Software Engineering
is based on wrong understanding of other engineering disciplines,
and by trying to "imitate" techniques from other engineering fields
it is producing inadequate results.

The main technique of engineering in general is "optimizing"
in particular on more expensive processes.

In many cases, that is physical process of building:
design is relatively cheap compared to construction.
So, optimization is to reduce cost of expensive part.

In case of creating of software, "building" is cheap: that is process of compiling.
The software "design" is source code. Good engineering needs to
focus on relatively expensive part, and that is source.

So, when software engineering is done right,
it ends up being focused on test driven development and agile!

In addition, real engineering is a craft.
Real process of engineering creation is always based on creative problem solving,
and that is not a mechanical process, but a mix of skill and art.
Excessive documentation is necessity where building is expensive; not in software.

Thus, software craftsmanship is in fact ultimate software engineering,
and good software engineering is an agile craft!

The presentation has a long historical introduction
and good examples and references...

No comments: