Discover why programmers struggle with the concept of value in software development. Learn why technical debt only matters when it has real costs, why refactoring should focus on delivering customer value, and why our subjective preferences often cloud judgment. Find practical advice for evaluating technical work based on customer needs rather than personal bias, and strategies for balancing technical improvement with business impact.
Explore why we should honor rather than criticize legacy code in software engineering. Discover how working systems deliver business value even when using outdated technologies, and why a shift in perspective from selfish criticism to appreciative stewardship benefits both developers and organizations. Through real-world examples, learn to value the efforts of previous developers and focus on thoughtful evolution rather than wholesale replacement of functioning legacy systems.
Discover why code without automated tests should be considered inherently defective. Learn the crucial distinction between "what code does" versus "how it does it," and why tests should focus on behavior rather than implementation details. Explore how well-designed tests provide both confidence in system behavior and clear documentation for other developers. This practical guide covers strategies for adding tests to legacy systems, proper use of code coverage metrics, and creating tests that enhance rather than hinder future development work.
Explore how effective software testing builds the confidence needed to navigate complex codebases with certainty. Learn practical approaches to testing microservices, managing dependencies, and ensuring reliable inter-service communication. Discover why code without tests should be considered defective and how proper testing enables fearless refactoring and evolution. This practical guide offers strategies for gaining the confidence needed to maintain high-quality software across distributed systems.
Understand the hidden costs and organizational challenges of microservices architecture before adoption. This article examines why boundary definition is critical, how operational complexity increases exponentially, and why technological diversity can become overwhelming without proper governance. Learn practical approaches for determining if microservices are right for your team, including domain mapping techniques and considerations for team structure based on Conway's Law.