Software Architecture

Microservices are popular with many teams. But, software development patterns are still in flux around this architectural pattern. In the last several years the space has matured a lot. Still, too many teams produce poor implementations. Microservices are often placed in contrast to Monolithic applications. That comparison is instructive, but it is also naive. Microservices…

Read More Microservices Will Mess Your Team Up

Several months ago I wrote about my personal principles of software engineering. That post was informed by a talk a watched by Peter Campbell. Since then, I have been reflecting how to align various ideas I have been addressing independently up to this point. To help bring these various ideas together I want to start…

Read More Defining Principles for Software Engineering

In a microservices system data tends to get spread out. Without a consistent mechanism for handling identifiers it can become increasingly difficult to follow how data flows through the system. And, it can become problematic to even know what data is being dealt with. In many monolithic applications a database tends to act as the…

Read More Identifiers in Microservices Systems

This is the second installment in a short series on my experiences applying Clean Architecture to Ruby on Rails. The first part provides some helpful context for this installment. Working on Green Field projects is often very enjoyable. Such projects come with few encumbrances, and lots of room to explore. They can be really good…

Read More Applying Clean Architecture to Ruby on Rails: Green Fields

On the team I work with at Nav we’ve got three different projects running that have all been experimenting with Clean Architecture. My project in particular is a green field effort where Ruby on Rails was chosen as the starting point and applying Clean Architecture in this context has been really instructive. Many of the…

Read More Applying Clean Architecture to Ruby on Rails: First Impressions

I recently watched a presentation by Peter Campbell from 2016’s O’Reilly Software Architecture Conference in London. The presentation was titled “Architecture as Belief.” The talk’s emphasis was on identifying and discussing the fundamental principles that underly decision-making as software architects. Peter did a very good job identifying that software architecture is not primarily about making…

Read More Principles of Software Engineering

Software Architecture is a term that is often used, and abused. Frequently it is used as shorthand for all the technical decisions that go into a software project. Other times it is used to refer to diagrams and documentation so disconnected from implementation that its usefulness is completely suspect. But, the reality is that every…

Read More What is Accidental Software Architecture?

Code smells tend to attract developer attention. We have automated tooling for many languages that can spot the most obvious ones. But, code smells are low-level problems and have corresponding low-level solutions. But, what about when your application has a clear mismatch between the way it is built and the problem it is trying to…

Read More Domain Smells: Domain-Data Overcoupling