Don't call yourself an artisanal programmer
Source Entity
Hacker News

A developer critiques the 'artisanal' versus 'serious' programmer dichotomy in the AI era. The article argues that care and patience are essential for reliability, regardless of the tools used.
The False Dichotomy of Modern Software Development
In the rapidly evolving landscape of software engineering, a growing narrative seeks to categorize developers into two distinct camps: the "serious" engineer, who prioritizes the final output above all else, and the "artisanal" coder, who purportedly values the aesthetic or experiential process of writing code. This discourse, heavily influenced by the integration of AI tools, suggests that the former is a pragmatic realist while the latter is an indulgent romantic. However, as recent reflections suggest, this binary classification is not only reductive but fundamentally misrepresents the motivations of high-quality software craftsmanship.
Defining Reliability Through Intentionality
The core of the issue lies in the definition of what makes a program "reliable." Proponents of the "serious" label often equate speed and automation with efficacy. Conversely, those labeled "artisanal" are often dismissed as being overly concerned with the craft for its own sake. Yet, true reliability is rarely the byproduct of speed alone; it is the child of patience, care, and meticulous design. When a developer builds from the ground up, they develop an intimate understanding of the system's architecture, which is an essential prerequisite for long-term stability.
The Role of Tooling in the Craft
The inclusion of LLMs and automated testing into the development workflow has sparked intense debate regarding the "artisanal" label. The fear expressed by many practitioners is that these tools may be used as a veneer for haste, potentially replacing the thoughtful, iterative process that leads to robust code. If a developer relies solely on AI to generate output without a deep, foundational understanding of the codebase, they risk losing the ability to audit their own work, effectively prioritizing the appearance of productivity over the reality of correctness.
Beyond the Artisanal Label
It is time to move past the term "artisanal" as a pejorative. The desire to take one's time in development is not a sign of vanity; it is a commitment to quality control. When a coder takes the time to design systems carefully, the resulting programs possess a level of integrity that is difficult to replicate through rapid, AI-assisted iteration alone. Any minor errors in such a process are typically limited to simple syntax typos, rather than fundamental logic flaws that often plague rushed, poorly understood implementations.
Reclaiming the Definition of Engineering
Ultimately, the distinction between being a "serious" engineer and an "artisanal" coder is a false one. The most effective developers are those who utilize modern tools—like LLMs and unit testing frameworks—not as a replacement for intellectual rigor, but as a supplement to it. By balancing the efficiency of automation with the careful, deliberate practice of building systems from scratch, developers can ensure their products are both high-performing and inherently correct, effectively rendering the "artisanal" debate obsolete.