Craftsmanship and AI
As I grow older, I find myself reflecting on the technologies I've been forced to navigate—a sprawling landscape of tools, frameworks, and algorithms, many of which have arguably improved the world. Having lived through multiple AI winters and summers, I see software craftsmanship standing at a pivotal crossroad.
On one side, we have applications painstakingly built on a foundation of algorithms, data structures, verifiable software, frameworks, and operating systems—created line by line by humans. While tools like Copilot and ChatGPT assist us, for complex systems, human architects remain indispensable.
On the other side, we see the rise of pretrained large language models (LLMs), reinforcement learning from human feedback (RLHF), retrieval-augmented generation (RAG), and other generative AI technologies. These systems are built on staggering amounts of data from diverse sources—forums, books, audio, images—and promise to redefine intelligence. Many advocate scaling these systems further, believing that sheer volume of data and parameters will push us beyond the AGI threshold, where such systems could generate their own training material.
But what is intelligence, fundamentally? Is it merely the ability to generate coherent outputs based on preexisting human knowledge? The proponents of generative AI envision a future of intelligent agents orchestrating APIs and data in ways that render traditional coding redundant. They foresee a paradigm shift where these agents, rather than traditional software stacks, become the foundation for solving problems.
Yet, this vision introduces a critical challenge. The leap from traditional systems to AI-driven orchestration leaves us dependent on technologies so intricate that even experienced developers may struggle to debug or modify them. Unlike today, where skilled programmers can trace bugs through the stack, the AI-dominated future demands expertise in advanced mathematical disciplines:
- Linear Algebra: Core to tensors and neural networks.
- Calculus: Fundamental to optimization methods like gradient descent.
- Probability and Statistics: Necessary for probabilistic models and handling uncertainty.
- Optimization: Key to minimizing loss functions during model training.
- Discrete Mathematics: Logical reasoning and graph theory for AI architectures.
领英推荐
- Algorithms and Data Structures: For efficient AI system implementation.
- Machine Learning Theory: Covering generalization and learning bounds.
- Computational Complexity: Addressing scalability and feasibility of AI systems.
- Parallel and Distributed Computing: Essential for training large-scale models.
In 2023, of the estimated 27–30 million developers globally, only 1–5% might have expertise across these domains. This translates to 50,000–375,000 individuals—less than 0.2% of all programmers. Despite our growing understanding of neural networks, we often cannot explain why they succeed—or fail.
This reality underscores a crucial point: the future of AI systems depends on skilled software craftsmen who can bridge the gap between traditional software and generative AI. Blindly trusting in layers we do not fully understand is a recipe for trouble. At some point, we risk being at the mercy of opaque systems, unable to debug or adapt them to meet evolving needs.
The solution, in my view, lies in empowering experienced software architects to design AI systems that prioritize clarity, modularity, and accountability. Rather than abandoning algorithmic rigor for the allure of generative AI, we should view AI as a tool—a powerful assistant in the hands of skilled craftsmen—not a wholesale replacement for the practices that have served us well.
The path forward demands careful consideration. How will we debug AI systems when errors arise? Can tools evolve to meet this challenge, or will we depend on an elite class of mathematicians and statisticians? How do we ensure that the vast majority of developers are not left behind?
These questions need answers, and those answers will shape the future of our craft. I'd love to hear your thoughts: Should AI complement or replace traditional implementation? What role should skilled software architects play in navigating this new frontier?