Posts With Tag: development

Book Announcement

A portion of the cover art of Michael's upcoming book, Mastering Software Architecture

Welp, the final draft of my book, Mastering Software Architecture has been turned into the publisher. It is the culmination of nearly two years of active writing (~800 hours), countless hours of research, 156 citations, and 25+ years in industry.

Rather than write yet-another distillation of the current state of practice, I have tried to dramatically improve it. The model introduced in this work unifies our fragmented models in a way that solves real problems once thought by many to be intractable.

I’m proud of the result.

Continue reading...

Third-Way Web Development Part II - Hypermedia 2.0

a timeline of the simplicity of web development in 2014, the complexity in 2019, and HTMX introducing a new simplicity in 2021

This post picks up from part I which broadly tells the story of where we are currently and how we got here; ultimately introducing HTMX as the “third way.” It serves as the background and context for this post. If you haven’t already read it, go ahead… I’ll wait.

Now that the background is out of the way, let’s look in depth at HTMX. Rather than the usual quickstart or toy examples, we’ll be looking at this in the context of a real production application already in the wild. We’ll modernize a legacy MVC application, examining the UX without and then with HTMX.

Continue reading...

Third-Way Web Development Part I - History

a timeline of the simplicity of web development in 2014, the complexity in 2019, and HTMX introducing a new simplicity in 2021

When I look back on my career in technology, I’ve been seduced, over and over again, by this idea that best practices exist and that I can consider my work “good” so long as I follow those best practices. In some ways it would be wonderful to work in a field where there are absolute “right” and “wrong” answers but I no longer believe software engineering is one of those fields. Every single decision we make has consequences and whether these consequences are positive, negative, or mixed will depend on the context. It’s all just a set of trade-offs, and the key to making good decisions lies in understanding what matters most and evaluating the trade-offs in this context.

There are no best practices, only trade-offs.

-First law of Software Architecture

We’ve somehow gotten into this weird place in web development where the consensus seems to be that an absolute set of best practices exist; where the only meaningful decisions surround which framework to use and how to find the optimal implementation details within that chosen framework. Unfortunately the web development space has become so myopically focused on frameworks, tooling, and Single-Page Applications (SPAs) as the de-facto “best practices” that the trade-offs of these approaches are rarely discussed–or even well-understood up front–and, in many cases, the result is an ocean of bloat and accidental complexity that often could have been avoided entirely.

Continue reading...