Destiny of Development - Beating the Treadmill of Tech Innovation

Sat Dec 19 20

Solomon the Wise, being far ahead of himself in years once said

"All things are wearisome, more than one can describe; the eye is not satisfied with seeing, nor the ear content with hearing. What has been is what will be, and what has been done will be done again; there is nothing new under the sun. Is there a case where one can say, “Look, this is new”? It has already existed in the ages before us. There is no remembrance of those who came before, and those to come will not be remembered by those who follow after" - Eccleciastes 1:8-12

He might as well have been talking about modern software development. For the more layers of the onion we unravel the more we see that the challenges we face are the same as the ones faced back in the 50's and 60's. Sure, we don't have to print our code on punch cards and take it over to the CPU for the nightly batch job any more, but is that so far removed from checking your Lambda or Function's execution log to see if the nightly batch job ran into any errors? Does it really feel that different when we're poking around some arcane XML inside eventvwr.exe only to find kernelbase.dll had an invalid dereference point? Sure, with Azure functions, Application Insights, Kusto logging queries, Kudu system access, IIS Advanced features Kestrel logs we might think we are looking at something new. But in the end it's all wrappers and UI layers around the same old nonsense. Never is this more apparent than when you're in your appservice's advanced tooling digging through the virtual kudu filesystem looking at the raw XML of the windows event logs to understand which windows module failed.

Allow me to describe every error you will ever have.

  • Error of Logic: You've switched the branch statement or expressed the wrong boolean/state check in your 'if' directive
  • Error of State: You didn't consider that someone might well have two heads, and a two headed monster came along and broke your code. More commonly the file you thought was there wasn't there.
  • Error of Environment: Network went down, solar flare flipped a bit, user just decided to cut power for fun, you ate up your memory or storage with a dumb infinite loop.
  • Lack of Permission: Even though you think it's you sitting at your desk logged into your account running the application you wrote, you still have to prove it to KeyVault.

Behold for I have diagnosed your every error that you will face as a software professional. No matter where you are in code, or in what context you are considering these are the only errors you can ever have. This is because your computer can only fundamentally do two things ever!

  1. Move bytes around
  2. Add positive numbers (in code club we don't talk about division)

And the only way for these two operations to fail is in the above list. Once you understand this you understand all of technology. You understand the benefits and efficiencies to be gained from "keeping up with the joneses" of the latest Javascript framework but you also look at it with a simple understanding of knowing exactly what's happening.