Skip to main content
← All Tags

Software design

16 articles in this category

PythonSoftware designBackend development

Python Dataclasses vs Pydantic: The Complete Production Guide

A comprehensive technical reference covering ALL features of Python dataclasses and Pydantic v2+. Learn when to use each, performance trade-offs, validation patterns, serialization mechanics, and production patterns for senior engineers.

Read more
Software designCode qualityBook reviews

Clean Code: The Cult of Dogma and Why Your Abstractions Are Probably Wrong

Robert C. Martin's Clean Code shaped a generation of developers, but its dogmatic rules about tiny functions, obsessive DRY, and terrible example code have caused more harm than good. Here's what the book got right, what it got catastrophically wrong, and what to read instead.

Read more
Software architectureSoftware designSystem design

Massively scaling a web application

A complete guide to scaling web applications from a single server to multi-region deployments. Covers vertical and horizontal scaling, load balancing, database sharding, caching, CDNs and more.

Read more
Software architectureSoftware designSOLID

SOLID

Complete guide to SOLID principles in object-oriented programming. Learn Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion with practical examples.

Read more
Software architectureSoftware designSOLID

D (Dependency Inversion) from SOLID

Understand the Dependency Inversion Principle from SOLID. Learn why high-level modules should depend on abstractions, not concrete implementations, and how DIP enables testable, flexible architecture.

Read more
Software architectureSoftware designSOLID

I (Interface Segregation) from SOLID

Learn the Interface Segregation Principle from SOLID. Discover why fat interfaces force unnecessary dependencies and how to design focused, client-specific interfaces.

Read more
Software architectureSoftware designSOLID

L (Liskov Substitution) from SOLID

Understand the Liskov Substitution Principle from SOLID. Learn why subclasses must be substitutable for their parent classes and how violations lead to subtle bugs in inheritance hierarchies.

Read more
Software architectureSoftware designSOLID

O (Open/Closed) from SOLID

Master the Open/Closed Principle from SOLID. Learn how to design software that is open for extension but closed for modification, so new features don't break existing code.

Read more
Software architectureSoftware designSOLID

S (Single Responsibility) from SOLID

Understand the Single Responsibility Principle from SOLID. Learn why a class should have only one reason to change and how SRP leads to more maintainable, testable code.

Read more
Software design

Technical debt

Understanding technical debt in software development. Learn how to identify, manage, and pay down technical debt while maintaining agile development velocity.

Read more
Software designSoftware architecture

Microservices vs Monoliths

Comprehensive comparison of microservices and monolithic architectures. Learn when to use each approach, their benefits, trade-offs, and best practices for modern software development.

Read more
Software architectureSoftware designThoughts

Best Of: The Early History Of Smalltalk

Key quotes and insights from Alan Kay's paper on the early history of Smalltalk. Explores object-oriented programming origins, message passing, and the philosophy behind Smalltalk's design.

Read more
Software architectureSoftware designDomain-Driven Design

Hexagonal Architecture: Why Your Domain Logic Shouldn't Know About Your Database

Stop letting frameworks dictate your architecture. Learn how Hexagonal Architecture (Ports & Adapters) isolates business logic from infrastructure, makes testing trivial, and lets you swap databases without rewriting code.

Read more
Software architectureSoftware designDomain driven design

Anemic vs Rich Domain Models

Understand the difference between Anemic and Rich Domain Models in Domain-Driven Design. Learn which approach to choose for better code organization and where to put business logic.

Read more
Software designDomain driven design

Domain Driven Design Core Concepts

Master the core concepts of Domain Driven Design (DDD). Learn about entities, value objects, aggregates, repositories, and how to apply DDD in complex business domains.

Read more
Software design

Tell, Don't Ask: Getters Are Evil

Why getters leak abstraction and scatter business logic. Learn the Tell Don't Ask principle to encapsulate behavior inside domain objects and avoid duplicated logic.

Read more