Python, typescript, java, kotlin, C#, .net…
Which is your technology of choice? Which one are you currently working in and which do you want to work in?
These have been questions I have faced in recent times.
After spending almost 20 years immersed in the java space, banging out umpteen lines of java, many feature requests and multiple successful software projects; late in 2019 I was lucky enough to land a job doing python. Even though I hadn’t ever written a line of code in python for real money. I counted myself lucky.
Then after a year and a half spent mastering python I got the same opportunity in the C#/dotnet space, and I found myself contributing to c# code bases, and then after a year in that it was the turn of typescript to take the fore.
Every time I come to a new technology I am excited by the prospect of potentially putting behind me all the challenges and headaches that I experienced in the previous language. Maybe this next one will be the platform that will streamline my coding and deliver business solutions without hiccup and roadblock.
Initially there is much excitement as I learn the new features and techniques of the new language. How it has creative solutions to some of the problems. How it takes a novel and clever approach to some of the other areas. But it doesn’t take long before I come back down to earth and realise anew that simply switching to a different language is not suddenly clear the runway for the delivery of software, on time, on budget and with all the features that were asked for - and without frustration and continue to do this as the project matures.
Let me cut to the chase…
Again and again I have learnt that the language is secondary.
When doing carpentry it is obvious that simply switching to a different tool is not going to suddenly make you into master craftsman. Yes, tools help, but they cannot replace effort, creativity, discipline and diligence and they cannot replace years of experience in the trenches.
And the same goes for software development.
Languages are not unimportant and do play a role in how productive we are as developers but they are not the primary driver of whether our software meets expectations, whether our environment is a rewarding one to work in and whether or not we deliver on the business case.
In modern software development, old familiar aspects like commitment to quality, testing regime, using SDLC best practices, using the best tools and the best processes and working with the best people are more important than whether you’re using typescript, java, kotlin, c# or python. Do you keep up to date, do you test? Do you use CI, do you commit regularly? Do you have up to date documentation, is your code “clean” and does it subscribe to best of breed architectural guidelines are far more important metrics of whether you are going to be successful or not.
Thus for my next opportunity, the language will be secondary.