Member-only story
Modern Software Engineering — Part 1: System Design
“Make it simple, but significant.” – Don Draper, Mad Men

Growing up in the late ’80s and early ’90s, my exposure to computers was limited to almost exclusively gaming consoles (I considered the Atari 800 and Commodore 64 gaming computers because I only ever saw games being run on them) or the early x86 systems. It wasn’t until I got to university in the 2000s that I got a hold of a Sun Microsystems SPARC workstation, UNIX, and Slackware Linux that I could install on my Intel 486 machine at home.
Back then, software development was mostly about software that ran locally on your machine or, if you had access to it, a shared time computer with significantly more processing power available to you to… do business-relevant things. At university, I remember hearing about a program used by computer scientists that needed a multicore processor to generate thousands of students' schedules; it took weeks to generate and print the schedules. Up to this day, I’m still not sure which took longer — the running of the program or the printing to paper.
Today, the majority of software being developed either runs on the cloud, runs on a device that requires access to the cloud, or powers other software that also runs on the cloud. It’s very rare to be working on a software system that…