Latest Articles


This is the first of the 5 Laws of Software Estimates. It's all about context. In the context of software development, of delivering business value in the form of working software, estimates provide no value. In the context of choosing what software to build, there may certainly be value in estimates, but even there it's an ROI calculation, with the hope being that the estimates will provide more…

Keep Reading →


Postel's Law, also known as the robustness principle, states: Be conservative in what you do, be liberal in what you accept from others. Jon Postel wrote this in an early version of the TCP specification in 1980, and it has since been referred to as Postel's Law. Origin The main goal of this principle is to maximize the tolerance individual components of a system have for small incompatibilities…

Keep Reading →


Conway's Law states that "any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure." This has significant impacts on how software is built, especially if microservices and/or Domain-Driven Design are adopted. Mel Conway observed that separate organizational units or teams within a larger organization, when working together…

Keep Reading →


User stories are a useful tool for describing requirements of software applications. User stories have been a part of agile methodologies like XP and Scrum for over twenty years. You can use the proven mnemonic INVEST to remember important principles of good stories. What is a User Story A user story is "a placeholder for a conversation." It's meant to describe high level requirements from an end…

Keep Reading →


What are some guiding principles that can be applied to data access in software applications and architecture? In preparing a workshop on evolving data access patterns, I've been considering the principles that are most important when it comes to data access in software applications. I collected the start of this list of data access principles in a twitter thread in which I asked for additional…

Keep Reading →


I'm streaming about open source software development most Fridays on Twitch - follow me to get notified when I go online. Recently I was working on building a new API for the [eShopOnWeb reference application and one of the commenters wanted to see how to add validation. Not just simple model validation, but something requiring server-side work: verifying that a product name was unique in the…

Keep Reading →


Domain events are one of my favorite patterns and one Julie Lerman and I cover in our DDD Fundamentals course, on Pluralsight. I differentiate between two kinds of domain events: pre-persistence and post-persistence. You'll find a good implementation of post-persistence domain events (using MediatR) in my Clean Architecture solution template. However, until recently, I hadn't built an immediate…

Keep Reading →


I'm a big fan of Markdown. It provides a simple way to richly format text without the complexity or security issues that would come from using HTML. Support for Markdown is ubiquitous within the software development industry, with native support everywhere from GitHub to StackOverflow. I've written everything from short documentation articles to several entire ebooks for Microsoft using Markdown…

Keep Reading →


I'm a big fan of Plex and have a lifetime subscription. If you're not familiar with it, it basically lets you have your own Netflix hosted on a computer in your house that you can watch from anywhere. If you've ever wanted to watch a movie or show that you already own, without having to deal with the discs, and it's not on one of your various streaming services, you understand the value. Also, if…

Keep Reading →


The Singleton Design Pattern is a fairly simple creational pattern used to ensure that there is only ever a single instance of a class in an object-oriented language. It's useful for ensuring expensive class instances are only created once and to eliminate the need to try and orchestrate between multiple class instances that are each trying to access a single shared resource, such as a file or…

Keep Reading →


Ardalis

Copyright © 2020