<-- home


Edited: March 11, 2021 (v0.0.7)

Software systems come in all shapes and size. Some are stable and unchanging. Some are volatile and promise high return on investment. Others will crash and burn and cease to exist, taking those that coupled themselves with them.

When dealing with the challenging task of choosing your next system, consider treating the addition or subtraction of that system as an action against your (or your company’s) technology portfolio.

What’s probably most important when treating a software system like a position in your portfolio is simply having a portfolio. This simply means having a grasp of your high level architecture, defining contracts and intrefaces between layers in the system, and being diligent about good ol’ fashion software design. Proper modeling, a sound foundation, and conceptual integrity go a long way, too.

Of course this isn’t a new idea. Sullivan covers in [1], on the topic of software design, that taking the approach of an investor making capital investments provides many of the needed parts of good software design.

Once you have a diverse technology portfolio, you can also protect yourself and business from failure of one of the parts, and minimize impact of bad decisions over time. You can reduce the costs of build versus buy decisions, safely experiment with new technology, and much more.


  1. [1]K. J. Sullivan, “Software design: the options approach,” in Joint proceedings of the second international software architecture workshop (ISAW-2) and international workshop on multiple perspectives in software development (Viewpoints ’96) on SIGSOFT ’96 workshops, New York, NY, USA, 1996, pp. 15–18, doi: 10.1145/243327.243338 [Online]. Available at: https://doi.org/10.1145/243327.243338. [Accessed: 24-Feb-2021]