Engineering Principles

An overview of some of the software architecture principles that guide my work


Separation of Concerns

Last Responsible Moment


Separation of Concerns

Behind intuitive and simple user interfaces often lies a complex and intertwined codebase with many moving parts. In software design, I believe it's vitally important to make sure code is modular and the codebase can be roughly broken down into individual pieces each responsible for a single functionality. This ensures changes can be made to the code without extensive and hard to track side effects

Last Responsible Moment

In software development, move fast and break things is usually the way to go. However, making rash choices which backfire and extend development timelines is a very real risk. One way to mitigate this risk is to extend decisions which represent one-way doors (not easily reversible) until the cost of delaying the decision outweighs the benefit of waiting. This is where proof of concepts and MVPs can be especially helpful.

Don't Repeat Yourself (DRY)

Programs can often be divided into smaller constituent parts, many of which can be useful in more than one place. Keeping an eye towards making code reusable allows one to simplify and speed up development timelines (as well as improve readability) and avoid unnecessary code.

Cameron Amini

Copyright © 2021 Cameron Amini. All rights reserved.