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 independently, the software will fall apart.” The author firmly rejects this view and explains the difference between engineering and craftsmanship.
There is always room for individuality and craftsmanship within a project’s overall structure. Given the current state of software engineering, this is especially true. Modern civil engineers would have difficulty accepting the techniques used by medieval cathedral builders — centuries from now our engineering may look outdated, yet our craftsmanship will still be respected.
The engineering versus craftsmanship distinction here can be seen as analogous to 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 practitioner’s cognition and practice — methods and experience gained through thoughtful practice that are not, in principle, limited by the state of technology. The fact that Eastern and Western philosophies had taken shape over two thousand years ago supports this. For example, contemporaneous Egyptians created life-sized bronze statues using lost-wax casting; today, one could mass-produce a mold with CNC machines. Regardless of the platform, techniques like lost-wax casting — somewhat complex yet full of ingenuity — still astonish and inspire later generations.
In today’s engineering landscape, new tech stacks and tools emerge constantly, and watching every blog and forum can indeed cause fresh anxiety. What proliferates are solutions; the core and essence often remain unchanged. People often complain that poor infrastructure undermines engineering, but high-level craftsmanship can actually better reveal the wisdom of problem-solving in such an environment.
Last updated