I Don't Like Magic
Jeremy Keith passionately argues against the pervasive "magic" in modern front-end development, from frameworks to AI-generated code. He contends that excessive abstraction erodes developer agency and creates significant, costly maintenance burdens for long-lived projects. This provocative stance, championing a return to fundamental web technologies, is sure to ignite debate among Hacker News's engineering-focused community.
The Lowdown
In a candid critique titled "I Don't Like Magic," Jeremy Keith articulates his deep distrust of hidden complexities and over-abstraction in software development, particularly within the front-end ecosystem. He defines "magic" as any technology marketed as simply "working" without requiring full understanding, arguing that this approach sacrifices developer agency and introduces long-term problems.
- Aversion to External Dependencies: Keith expresses discomfort with using code he hasn't written or doesn't fully understand, grudgingly accepting only two specific JavaScript libraries for The Session website.
- The npm "Heebie-Jeebies": He finds the intricate, multi-layered dependency chains common with npm installations deeply unsettling, viewing them as a "trust fall" for most front-end developers.
- Frameworks vs. Libraries: Keith sharply distinguishes between libraries (code called by his own) and frameworks (code that dictates and calls his own, like React), finding the latter to be a much deeper and more problematic form of dependency.
- Critique of React: He avoids client-side React due to its perceived negative impact on end-users (over-engineering, slow loading) and the substantial abstraction it places between the developer and the browser's native HTML, CSS, and JavaScript.
- Career Implications: Acknowledging his "control freakery" is unpragmatic, he's stepped back from client-side development roles that mandate React, focusing instead on personal projects where he can adhere to his principles.
- LLMs as "Turbo-charged npm": Keith views large language models generating code as an even more abstract and potentially dangerous evolution of npm's dependency issues, comparing them to "spells" whose effectiveness is hard to measure.
- Maintenance Over Production Speed: He posits that while abstractions can accelerate initial development, they inevitably lead to maintenance nightmares and increased long-term costs, especially for projects designed to last decades, like his own website.
- The Craft of Coding: Keith aligns with the sentiment that coding by hand, much like knitting, will become a craft pursued for satisfaction rather than efficiency, as more "magic" tools emerge.
Ultimately, Keith concludes that his profound skepticism towards technological "magic" stems from a commitment to understanding and maintainability, which he prioritizes over the immediate productivity gains offered by increasingly opaque development tools.