Two cheers for ugly code
Argues that ugly, legacy code can hold valuable domain knowledge and be more practical to refactor than to rewrite from scratch.
Argues that ugly, legacy code can hold valuable domain knowledge and be more practical to refactor than to rewrite from scratch.
Discusses the unsustainable expectation of long-term support for open source software and the necessity of regular updates.
A developer's 2025 retrospective covering career moves, open-source project stewardship (HTML Minifier), and the impact of AI on engineering productivity.
A developer discusses the dangers of assuming code won't change or be misunderstood, advocating for defensive programming practices.
A developer's six-week retrospective on using Claude Code for software engineering tasks, highlighting transformative productivity gains and new workflows.
A developer draws parallels between physical clutter and technical debt, advocating for regular 'code cleaning' sessions to improve team happiness and productivity.
A developer recounts the decision to revert a major refactoring of the EqualsVerifier library after encountering persistent edge cases and bugs.
A podcast discussing why all code becomes legacy and how to write modular, maintainable code to reduce future technical debt.
Discusses the challenges of keeping software dependencies updated and compares manual vs. automated strategies for managing updates effectively.
A practical guide for developers on how to approach, understand, and incrementally improve a newly inherited legacy C++ codebase.
A developer compares coding in volunteer, agency, and product roles, using gardening as a metaphor for managing legacy code and continuous improvement.
An article comparing software engineering to gardening, emphasizing ongoing maintenance, adaptation, and thoughtful care over rigid planning.
Explores key characteristics of well-maintained software, focusing on code understandability, clear steps, and comprehensive testing for easier changes.
Explains why open source maintainers require minimal reproductions for bug reports and how to create them effectively.
Explains the critical role of good documentation in software development, highlighting its benefits for maintenance, onboarding, and knowledge transfer.
Argues that software projects can and should aim for completion, focusing on stability over constant new features, using examples like Sway and scdoc.
Explores the causes of legacy software and offers developer strategies to prevent codebases from becoming hard-to-maintain systems.
An open source developer explains why he deprecated his popular project in favor of a better alternative, advocating for progress over personal pride.
Analyzes how major software changes like Python 3 and asyncio can be 'traumatic' for developer communities, causing wasted effort and code rot.
Discusses the challenges of computational reproducibility in science, highlighting the Ten Years Reproducibility Challenge and using Go's stability as a model.