One of the important parts of the essence of software architecture is that it is an abstraction of the actual code of the software system. What’s interesting about that is that it means software architecture is an abstraction of an abstraction, since the code we write using modern programming languages is just an abstraction on top of machine code. Just how many layers of abstraction have we accrued over the years that Software Engineering has been growing up?
Off the top of my head, here’s a possible trail from top to bottom:
It reminds me of this video I saw in High School:
We can consider each power of 10 in this video to be the same as a level of abstraction in software engineering. This produces an interesting view because, in the video, human beings do not live at either end of the spectrum. This holds true to a degree as well in software engineering. The difference is that people in different roles live at different levels of abstraction. For example, someone designing processor chips lives at one of the lowest levels of abstraction. A system designer, on the other hand, lives farther up the line. Finally, the average user is probably about as far removed in terms of abstraction as you can get.
The interesting question raised by this analogy is what level of abstraction is most appropriate for each task involved in software engineering. As the discipline becomes more mature, I’m sure we will hone in on the answer.
Adam Platt is a technologist with more than a decade of experience across the full stack. His passion for technology and penchant for rendering complex technical ideas into simple terms have made him an in-demand speaker. His resume includes BriForum, the PowerShell Summit, teaching engagements and more.
He is one of the 10 types of people who understand binary and he can solve a Rubik’s Cube.
Adam Platt is a technologist with more than a decade of experience across the full stack. His passion for technology and penchant for rendering complex technical ideas into simple terms have made him an in-demand speaker. His resume includes BriForum, the PowerShell Summit, teaching engagements and more.
He is one of the 10 types of people who understand binary and he can solve a Rubik’s Cube.