Don’t cross your wires.
Writing “orthogonal” code was something I hadn’t heard of until today’s reading. In the past, I was taught to write modular code: small, self-contained and does the one thing it says it should.
However, a different way of looking at this concept was introduced. Just as orthogonal lines go in one direction without affecting the other, components of a system should function without affecting each other.
Coming back to engineering:
“Let’s consider a complex system for monitoring and controlling a heating plant. The original requirement called for a graphical user interface, but the requirements were changed to add a mobile interface that lets engineers monitor key values. In an orthogonally designed system, you would need to change only those modules associated with the user interface to handle this: the underlying logic of controlling the plant would remain unchanged. In fact, if you structure your system carefully, you should be able to support both interfaces with the same underlying code base.”
This also ties in with resuability. If I’m spending hours to design and implement complex systems now, why not spend that extra effort to make them orthogonal enough to be recycled in the future?
That concludes day 9. See you Monday!