The Right Tool, The Right Idiom

As more and more traditionally-trained developers have migrated into the Javascript space, I've seen quite a few attempts to bring across idioms, patterns, and even and tools commonly found in large OO code bases. Some of those things have made their way into the core language itself and some have caused the creation of new languages. Nearly all of these examples illustrate the application one tool chain's idioms onto another - and in many of the above examples, the result is unintentional and unnecessary complexity.

Technology Divergence and Conway's Law

Conway's law is an observation that "Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure". As a developer, it's easy to believe that this dynamic is the result of management decisions - however, sometimes the reality is more nuanced.

Evaluating Software Design Choices

Why does it seem that some software projects are constantly running into barrier after barrier when it comes to adoption while others sail smoothly into acceptance? I've put together a framework to try and help answer this question as well as to guide future decision making.

The "Must Haves" for a Service-based Architecture

There are lots of options and even more opinions about how to properly build a service-based system. Here, we cut through the buzzword bingo and get back to the fundamentals.

Service Ownership and Linked Data

It's hard to tease apart services. It's easier to tease apart data.

There Is No Data Center


Untangling a Monolith

We all have see them; most of us have to deal with them; many of us contributed to writing at least one of them. Legacy code bases tend to evolve over decades and will with rare exception get messier and more entangled as a function of the number of people working on the project and the lines of code they produce (a phenomenon that seems pretty consistent with the rest of the known universe).