HN
Today

My Software North Star

Loris Cro, VP of Community for the Zig Software Foundation, lays out his "North Star" for software development, prioritizing user utility, correctness, and maintainability. This foundational philosophy sparks intense debate on Hacker News, particularly around the role of memory safety in languages like Rust versus Zig, and the looming influence of AI on coding paradigms. The discussion quickly evolves from abstract principles to concrete language choices and the future of software craftsmanship.

80
Score
36
Comments
#5
Highest Rank
12h
on Front Page
First Seen
Jun 7, 6:00 AM
Last Seen
Jun 7, 5:00 PM
Rank Over Time
1265967879101314

The Lowdown

Loris Cro, VP of Community for the Zig Software Foundation, shares his "North Star" philosophy for building software, presenting a hierarchical list of priorities aimed at maximizing end-user utility. He argues that many common software development concerns, while important, are secondary to this ultimate goal.

  • User Utility First: The paramount goal is for software to be genuinely useful to the end-user, striving to create "software you can love." Without utility, other qualities are moot.
  • Correctness Overrides Defects: Software must be correct; malfunctioning code undermines its usefulness. The author emphasizes that a process for fixing bugs is crucial, not just the absence of them, and links to articles on designing for correctness.
  • Maintainability and Efficiency for Longevity: To ensure long-term utility, software should be maintainable and efficient, preventing waste of human and computational resources when evolving or extending it.
  • Avoiding "Lesser Stars": Cro cautions against mistaking secondary concerns—like memory safety alone, elegant abstractions, or even developer experience for its own sake—for the true North Star. These are valuable only insofar as they contribute to the primary goal of delivering useful, correct, and maintainable software.

Ultimately, Cro's "North Star" asserts that every aspect of software development should serve the singular purpose of maximizing utility for the end-user, guiding decisions and priorities in an ever-evolving technological landscape.

The Gossip

The Utility of Vague Utility

Commenters debated the practical application of "useful" as a North Star, arguing its subjectivity makes it a vague guiding principle. Some found the article's core tenets to be generic and self-evident, questioning its novelty or why it warranted front-page attention. The author, however, countered that many developers surprisingly lack such a clear and prioritized list of principles, indicating a need for articulating these foundational ethics.

Zig vs. Rust: A Safety Squabble

A significant portion of the discussion revolved around the author's stance on memory safety and its implications for languages like Rust and Zig. Some interpreted the author's dismissal of memory safety as an ultimate goal as a subtle jab at Rust, given his role as VP of Community for the Zig Software Foundation. Others clarified that the article wasn't against memory safety but rather positioning it as a component of overall correctness, arguing that a memory-safe language doesn't inherently guarantee a bug-free or useful product if design and process are flawed. The context of Bun's migration from Zig to Rust further fueled this linguistic rivalry.

Algorithmic Architects and Artisanal Code

The advent of AI coding became a major point of contention, with discussions on its potential impact on languages like Zig. One perspective suggested that AI might erode the justification for choosing Zig due to its more "artisanal" approach, particularly if AI-generated code is inherently "sloppy" and less prone to memory issues in other languages. This led to a debate on whether "worse is better" will prevail with AI-generated code, and the future relevance of developer experience. Counterarguments asserted that AI can already write good Zig and that Zig's unique advantages, such as cross-compilation, will remain valuable regardless of AI's progression.