A recent reflection in the software development community challenges the popular division between "serious" engineers focused on outcomes and "artisanal" programmers who prioritize the coding experience. The author argues that this binary oversimplifies the complex motivations and practices of many developers.
The writer emphasizes a commitment to reliability and precision in software, achieved through patience, careful design, and deep engagement with code. They reject the use of large language models (LLMs) for coding assistance, citing concerns that these tools distance developers from critical low-level details and cannot guarantee complete correctness.
This stance complicates the common industry narrative that equates "software engineer" with those who embrace AI-assisted coding, while labeling others as "artisanal" programmers. The author questions why the term "engineer," traditionally associated with care and precision, is increasingly reserved for those who often act more like managers or rely heavily on AI tools.
Historical perspectives reveal that the software community once valued addressing technical debt and reliability over rapid, error-prone development. However, current trends favor "vibecoding," a more casual, speed-focused approach often supported by AI, which some see as undermining engineering rigor.
Insights from Hillel Wayne’s 2021 crossover project highlight that professionals from traditional engineering fields recognize software engineering as a legitimate discipline. Yet, they also note that many who write code do not practice engineering in the strict sense. Wayne suggests terms like "software craftsman" to distinguish different roles, a naming convention that contrasts with today's usage where "artisanal" often denotes the meticulous coder.
The article warns that redefining these roles and privileging AI-assisted methods risks marginalizing developers who prioritize thoroughness and expertise. This shift reflects broader cultural trends, including anti-intellectualism within some software communities, where complex skills and education are undervalued in favor of quick, accessible solutions.
The author advocates for a balanced discourse that respects both AI-assisted and AI-free coding methods. They propose clearer terminology—such as "AI-assisted coding" and "AI-free software engineering"—to acknowledge the role of AI without diminishing the craftsmanship involved in traditional development.
Ultimately, the piece calls for renewed appreciation of the care, design, and human collaboration integral to software engineering. It encourages the community to communicate these values more effectively to the public, ensuring that the profession’s depth and dedication are recognized amid evolving technological practices.