educate and support a new generation
of practitioners. Because craftsmanship is really all about the practitioner,
and the whole point of an engineering
theory is to support practitioners, this
is essentially what was missing from
previous incarnations of software engineering.
How does the software community
go about this task of “refounding”
The SEMAT (Software Engineering Method and Theory) initiative is
an international effort dedicated to
answering this question (http://www.
semat.org). As the name indicates, SEMAT is focusing both on supporting
the craft (methods) and building foundational understanding (theory).
This is still a work in progress, but
the essence of a new software engineering is becoming clear. The remainder of this article explores what
this essence is and what its implications are for the future of the discipline.
Engineering Is Craft
Supported by Theory
A method (equivalently, methodology
or process) is a description of a way of
working to carry out an endeavor, such
as developing software. Ultimately, all
methods are derived from experience
with what does and does not work in
carrying out the subject endeavor.
This experience is distilled, first into
rules of thumb and then into guidelines and, when there is consensus,
eventually into standards.
In a craft discipline, masters, who
have the long experience necessary,
largely develop methods. In older
times, the methods of a master were
closely guarded and passed down
only to trusted apprentices. In today’s
world, however, various approaches
based on the work of master craftsmen are often widely published and
As a craft develops into an engineering discipline, it is important to
recognize commonality between the
methods of various masters, based on
the underlying shared experience of
the endeavor being carried out. This
common understanding is then captured in a theory that can be used as a
basis for all the different methods to
be applied to the endeavor.
tion, many of the technical practices
of agile development have made it
possible to create high-quality software systems of significant size using
a craft approach—negating a major
impetus for all the up-front activities
of software engineering in the first
In the end, however, a craft discipline can take you only so far. From ancient times through the Middle Ages,
skilled artisans and craftsmen created
many marvelous structures, from the
pyramids to gothic cathedrals. Unfortunately, these structures were incredibly expensive and time consuming to
build—and they sometimes collapsed
in disastrous ways for reasons that
were often not well understood.
Modern structures such as skyscrapers became possible only with
the development of a true engineering
approach. Modern construction engineering has a firm foundation in material science and the theory of structures, and construction engineers use
this theoretical foundation as the basis of a careful, disciplined approach
to designing the structures they are to
Of course, such structures still
sometimes fail. When they do, however, a thorough analysis is again done
to determine whether the failure was
caused by malfeasance or a shortcoming in the underlying theory used in
the original design. Then, in the latter
case, new understanding can be incorporated into the foundational practice
and future theory.
Construction engineering serves as
an example of how a true engineering
discipline combines craftsmanship
with an applied theoretical foundation. The understanding captured in
such an accepted foundation is used
to educate entrants into the discipline. It then provides them with a basis for methodically analyzing and addressing engineering problems, even
when those problems are outside the
experience of the engineers.
From this point of view, today’s
software engineering is not really an
engineering discipline at all.
What is needed instead is a new
software engineering built on the
experience of software craftsmen,
capturing their understanding in a
foundation that can then be used to
a direct reaction
to the engineering
the craft of software
whether it even
makes sense to
Is this the more