HN
Today

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.

4
Score
0
Comments
#3
Highest Rank
3h
on Front Page
First Seen
Feb 21, 8:00 PM
Last Seen
Feb 21, 10:00 PM
Rank Over Time
2343

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.