Programming to Interface Vs to Implementation
Explains the software design principle of programming to an interface vs. implementation, using a TypeScript list renderer example to show benefits for maintainable code.
Explains the software design principle of programming to an interface vs. implementation, using a TypeScript list renderer example to show benefits for maintainable code.
Explains the Dependency Inversion Principle (DIP) from SOLID, showing how to implement it in JavaScript/TypeScript to decouple high-level and low-level modules.
A developer argues for using 'protected' over 'private' visibility for class properties in PHP, discussing flexibility and use-case considerations.
A software engineer draws parallels between the perfect, durable design of an IKEA clock and the principles of good software design.
Explains how to use dependency injection with default parameters in JavaScript to create more flexible and robust functions.
A guide to writing unit tests for SwiftUI apps by decoupling layout from logic, enabling testable code without relying solely on UI previews.
Explores the benefits of an event-driven architecture over linear code when building a gamification system for a tech platform.
Argues that Java's pattern switches are a simpler, more modern alternative to the traditional Visitor design pattern for separating operations from object structures.
Argues for opinionated software design over excessive configurability, based on experience with an in-house framework.
Explains the concept of business logic in software development, using examples like a BMI calculator to distinguish it from other code.
Explores the complex decision-making process behind adding new features to the Java programming language, addressing common developer requests.
A fictional interview exploring an alternative universe where software creation is viewed as a design discipline, not engineering, and its cultural implications.
An analysis of the Go programming language's strengths, praising its simplicity, stability, and suitability for internet-scale software development.
Explains why boolean function parameters are often a code smell and suggests better design alternatives.
The article argues that successful tech alternatives succeed by simplifying and refining core ideas, not expanding on them, using examples like Alpine Linux, Go, and UTF-8.
Argues that encapsulation, not reusability, is the primary purpose of functions in programming, using a budget summary example.
First part of a guide on improving software design skills using .NET and C#, focusing on design principles over data structures.
Explores the historical origins of Object-Oriented Programming, tracing its roots from Sketchpad and Simula to Alan Kay's definition.
A developer's first week at Recurse Center, focusing on pair programming, analyzing PHPUnit's codebase, and planning a web-based command prompt project.
Argues that professional programming tools should prioritize utility and power over ease of use, accepting a steeper learning curve for long-term productivity.