Jeremiah Flaga My thoughts and experiences on programming, life, atbp.

"Software development has not changed in the last 40 years"... and what to do about it.


In the last 40 years computer hardware technology has increased the computing power of our machines by well over twenty orders of magnitude. We now play Angry Birds on our phones, which have the computing power of the freon cooled supercomputer monsters of the 70s.

But in that same 40 years software technology has barely changed at all. After all, we still write the same if statements, while loops, and assignment statements we did back in the ’60s. If I took a programmer from 1960 and brought him forward through time to sit at my laptop and write code; he’d need 24 hours to recover from the shock; but then he’ll be able to write the code. The concepts haven’t changed that much.

But three things have changed about the act of writing software…

— Uncle Bob Martin (from “Three Paradigms”)

What’s new in software?

For the last thirty years: Nothing much.

— Uncle Bob Martin (from “Make the Magic go away.”)

“Are we forever cursed to do this constant tooling rodeo, where we try to hold on in the job market for dear life, learning new tools as the plop up all over the place?

“Instead of trying to predict the future, which we humans are really bad at — just look at sci-fi movies from the 60-ies — you should learn the stuff that doesn’t change around a lot.

Learn the fundamentals that we figured out in the 70s and that have been true since. Learn programming in general. Don’t be better Angular programmer, or even a better JavaScript programmer — just be a better programmer, period.”

— Mattias Petter Johansson (from “Staying relevant as a programmer”)

The key to growing in this occupation is to realize that neither the languages that you love or the frameworks that you’re familiar with are the keys to your success. Because the field is so new and because the core fundamentals of programming today are almost exactly what they were from the beginning (Sequence, Selection, and Iteration), your ability to advance is not hinged on language particulars or framework features.

“The key is to rapidly apply the things we have learned from our collective battles in the trenches where the software is built. You must accept and apply the disciplines that have emerged and have been passed down from the Gurus of our craft.

“…One of the most important things that you can learn from me or from anyone else regarding professional software creation, is that you must build your systems for easy maintainability…”

— Terence McGhee (from “This Is How We Do It”)

I recently found the free reading materials for the course from MIT OCW named “Software Construction”. It might be very helpful in learning about those things that do not change a lot in software development.


← Previous | Archive | Next →