DEV Community

Cover image for Delving into Architectural Drift

Delving into Architectural Drift

Vladi Stevanovic on March 13, 2024

When building a software system, engineers recognize three fundamental truths: All software has an architecture, whether it is designed and imple...
Collapse
 
efpage profile image
Eckehard

System architecture is the result of bad experience. With every project your experience grows, so it is no wonder architecture is evolving.

For a young developer with very little experience, the shifts will probably be larger than for an experienced one. But some day you may find, that times have changed and your "do it again, Sam"-experience is not useful anymore. Then it is time to go shifting...

Collapse
 
vladi-stevanovic profile image
Vladi Stevanovic

Good point. The experience of the engineering team building the system is a factor (among the others) that affects the degree to which they will experience drift.

But I also think that it's very difficult to account for every future requirement, technology shift, etc. and so system evolution is inevitable regardless of experience. 😊

Collapse
 
uniquereplica profile image
Steven Read

Completely agree - sometimes this can even be architectural infeasibility, when skillsets or culture are not up to the planned solution design, and something needs to give.

One technique that can help is to use architecture decision records. You can even start using them to record previous decisions - @tekiegirl wrote about that recently. User stories and other written up collaborative techniques can help too, but tend to focus on the user-visible aspects, as opposed to why and and what for from the system's perspective. They can improve the decision due to consultation and discussion but are a poor place to store your architectural designs!

Collapse
 
vladi-stevanovic profile image
Vladi Stevanovic

That's a great comment - I'm a huge fan of ADRs! Recording why you took a specific system decision and what trade offs you considered (and accepted) is critical when looking to evolve the system.

However, I think ADRs are affected by similar issues that Docs suffer from: they are not always systematically created during the development process, they are mostly manually, potentially fragmented across multiple sources and require lots of maintenance. That's all to say, that alone they don't solve the underlying problem 😊

Collapse
 
mortylen profile image
mortylen

Good article, thank you.

Collapse
 
vladi-stevanovic profile image
Vladi Stevanovic

Thank you for checking it out!