W21 - Engineering and Craft

I recently came across an interesting point in The Pragmatic Programmer. Some people argue there's no room for individuality on large teams or complex projects: "Software is an engineering discipline; if team members act on their own, the software will collapse." The author firmly rejects this view and explains the difference by contrasting engineering with craft.

There is always room for individuality and craft within the overall structure of a project. Given the current state of software engineering, this is especially true. Modern civil engineers would find it hard to accept the construction techniques used by medieval cathedral builders—our engineering will look just as dated a century from now, while the craft will still be respected.

The engineering-versus-craft distinction here can be seen as technology versus technique, or process versus experiential wisdom. The former depends on platforms and is constrained by the technological level of the time. The latter depends on each worker’s cognition and practice: methods and experience gained through thoughtful practice, which in theory are not limited by technological progress. The fact that Eastern and Western philosophies took shape over two thousand years ago supports this. For example, contemporaneous Egyptians used the lost-wax method to create life-size bronze statues; today we might use CNC machines to stamp a mold for mass production. Regardless of the platform, sophisticated, insightful crafts like the lost-wax method still inspire admiration and provide inspiration.

In today’s engineering environment, new tech stacks and tools emerge constantly; watching blogs and forums daily can indeed create a sense of anxiety. What proliferates are solutions; the core and essence may never have changed. People often complain that the infrastructure is so poor it can’t be called engineering, yet high-level craft can actually better reveal the wisdom of problem solving in such an environment.

Last updated