Sunday, September 18, 2022

Collage of Thoughts - VII


In my first decade at work, I used to joke about Java being my mother-tongue. Then Scala and Big Data happened, and I looked at programming and patterns with fresh eyes. Clojure remained a distant dream. In 2018-end, I was rather abruptly pulled out of an IC role, wherein I put my head down and coded my entire day away - the IDE is such an introvert's delight! Enough of coding, I was told - as I got moved into "higher-impact" roles for good. Which meant alternating between architecture solutioning for proposals, consulting engagements, and delivery; with literally no sane moment left to code.

Each time I get back to coding, I realize there's so much of unfinished coding still left in me. I have no claim to greatness at this craft. Rather it's the very lack of it that makes it so ever- aspirational and awesome!

#coding #delight
There is a reason why language paradigms have evolved from procedural to OO to functional – each is about an evolved way of “thinking and approaching” a problem. Within each paradigm, there is, in turn, an expert catalog of documented patterns of reusable solutions to recurring problems.

Out of all these, syntax is the most superficial and “visible” part of a language. Any seasoned programmer knows that a language is way beyond just syntax - it has a "philosophy". And while mastering the syntax is relatively easy and mechanical, it takes relentless years of practice to master the paradigm – to “acquire the mindset”. Without an appreciation of the paradigm; you may still be thinking in C, but coding in Java - or worse in Scala! Your code would still compile, your Sonar dashboard would still go green – but nobody in native Scalaland would ever call it Scala!

P.S.: On modern language paradigms, I would recommend talks/books by Neal Ford, and Rich Hickey (Hickey's talks shine with directness and practical wisdom!).

#paradigmshift
In a highly engaging talk (The Scribe’s Oath) that dates back to 2015, Robert Martin makes a prophecy about the future of our industry being a highly regulated one. He warns that an impending catastrophe would be the turning point - a bug that would cause a massive loss of lives or fortunes! It’s a talk about the need for a professional code of ethics and a tighter internal culture of rigour; similar to any other critical profession.

Uncle Bob takes you through the journey of the software engineer through time – from being a not-so well-understood figure, to becoming a hero, and then down to a scapegoat! From drawing a parallel with the scribes in ancient civilisation who had a "special literacy" that the society critically depended on; to calling out the Volkswagen story of the CEO testifying before the Congress by putting the blame of cheating emission tests on a “few rogue software engineers” (the emissions scandal); to talking about confronting situations head-on where your morals feel compromised; to doing the math for arriving at an (astounding) estimate of the doubling-time of programmers (what he calls “an industry in a perpetual state of inexperience”); to explaining why the software discipline should internally police itself before the legislators do; to finally proposing his own version of the “Hippocratic Oath” – each piece of the narrative is a gem of an insight by an industry stalwart and a master storyteller who has seen it all!

And while he rightly alludes to a future where software engineers can land up in jail for not practising TDD properly; here is the oath from his toolkit that saves you from seeing that day! 😊

“#3 I will produce, with each release, a quick, sure, and repeatable proof that every element of the code works as it should.”

Do watch it!

#robertmartin #softwareengineering #ethics
[Re-posted from my recently authored posts on LinkedIn]

No comments: