Lattix Architecture Blog

In 2012, the UK was increasingly worried about low pension savings rates among private sector workers. So the government forced employers to establish “automatic enrollment” for their pension plans.
Employees were automatically entered into their firm’s pension plan, and contributions were taken out of their paycheck each pay period, unless they formally asked to be removed.
The idea was that most people wanted to save for retirement but put off doing so by the fear it would be hard or... + continue reading

In Design Rules, The Power of Modularity, Carliss Y. Baldwin and Kim B. Clark argue the computer hardware industry has grown so quickly because of modularity, the building of complex products by breaking the functionality into smaller subsystems that are designed to work independently yet can be used as building blocks to create a whole product. The key to this modularity is the use of design rules that must be followed and that allow designers (and software developers) to creatively solve... + continue reading

“Any customer can have a car painted any color that he wants so long as it is black.”
- Henry Ford
Modularity in design is an approach that divides a system into smaller parts called modules that can be worked on independently and then reused in other systems. A modular system is characterized by breaking a large system into discrete, scalable, reusable modules and using well-defined (or industry standard) interfaces. An automotive example is Volkswagen’s MBQ, which is a modular product... + continue reading

Introduction
We write software to make our lives easier; to reduce the complexity and chaos. The need to reduce complexity is at the very center of software development. Unfortunately, we tend to mirror the complexity of the real world in our software and this leads to many problems. As Bruce Schneier in his essay A Plea for Simplicity: You can’t secure what you don’t understand said, “the worst enemy of software security is complexity.” In this blog post, we will talk about the importance... + continue reading

How do you achieve high velocity in software development? The main challenge to high velocity is tight coupling. Coupling is the degree of interdependence between software modules, or a measure of how closely connected two routines or modules are, or the strength of the relationships between modules. Let’s break down exactly what coupling is, the problems with tightly coupled software, and how to reduce coupling.
What is Tight Coupling
According to John Lakos in Large Scale C++ Software... + continue reading