Programming 2023
I finally found some time to make progress in my Programming AWS Lambda book. Lambda’s support for different languages sent me down a rabbit hole of popular languages, and I landed on the TIOBE Index (as of December 2023). I’m a bit surprised about the current popularity rankings. Along with the possibilities of Lambda, it has gotten me thinking about my own development skills.
Basically, five languages I need to learn better, and two or three new languages I want to learn.
For over fourteen years, I have held an operations role, and as a result, I have really neglected my professional development as a software developer. My ideal position would be as a manager of developers, or overall IT management, and therefore I should make some effort to sharpen my skills in these areas. Delving into cloud technology will be an important aspect of that, but a good foundation in important programming languages will also be necessary.
If I was going to choose one language to learn better in 2024, I guess it should be Python, for the sake of my career. A close second would be .NET, for the sake of my current job.
If I was going to choose one new language to learn in 2024, it would be Kotlin.
Python
When Python was fairly new, I bought a book on it and skimmed through the beginning. That was enough to quench my thirst. It was just another interpreted programming language. Soon after, I loaned the book to someone and never got it back.
In more recent years, many of my friends who aspire to learn programming have asked me about Python, and it’s mainly due to the language’s popularity, including its popularity on the Raspberry Pi. I bought an updated (5th edition) copy of Learning Python, and now and then I read a little more, or I toy with some little program.
I don’t really know it well enough to say I know it. Python is one of the languages supported natively by Lambda, so that may be one more reason to delve into it. Also, the fact that it is the top language in the TIOBE Index suggests that it is an important language.
C
I believe I was fourteen years old when I learned C, nearly four decades ago. It is the language I have the most experience with, and it is still my favorite programming language. I know it very well.
It’s not a new, sexy programming language. However, it is the language that operating systems and other programming languages are written in. It is not the easiest language to develop in, but it is still the fastest, most efficient high level programming language, and so much important code exists in this language.
C++
I struggled for years to understand object-oriented programming and C++. That was because, at the time, my thinking was so deeply ingrained in procedural programming. Learning other languages, including Visual Basic .NET, ultimately brought me to understand OOP. However, I never really made much of an attempt to go back and fully understand C++.
I would hesitate to tell a prospective employer that I “know” C++.
Java
I can almost say I know Java, in theory, but I have no practical experience with it. I learned Java when it was new, and then I never had an opportunity to do anything practical with it.
It’s not clear what the future of Java will be. Oracle announced recently that it wants to charge money for it, and that is likely to dissuade businesses from continuing to commit to it. Evidently, Android has switched from Java to Kotlin, and I assume that means many Android developers are using it instead. The TIOBE Index shows Java on a slow but steady downward trend since the index began keeping track in 2001, and it has been surpassed by other languages in recent years.
.NET
The TIOBE Index lists C# and Visual Basic .NET as two different languages, but really they are two different syntaxes for the same language. I did have some practical experience with .NET, and I still have one personal .NET application in use today. .NET is also adjacent to PowerShell, which I use professionally. The developers I interact with at my (non-development) job are mostly .NET developers.
I would probably embrace .NET more if it wasn’t a Microsoft proprietary technology.
That said, my employer is primarily a .NET and PL/SQL shop. They actively maintain one important C++ application, and they support but do not maintain several applications using old languages not on this list, but at least 95% of the development work is in .NET or PL/SQL. Additionally, my employer is actively shifting to Azure, where it will continue to be important.
JavaScript
You can’t do web development without knowing some JavaScript, and I probably know more than the average web developer. That said, the language has grown and evolved, and I haven’t kept up. JavaScript is also used in many contexts outside of web browsers, including Adobe Creative Cloud applications.
PHP
I’m not proud to say that PHP is the language I have the second-most experience with. I have done a ton of server-side web development in PHP. It was an awesome concept when it was new, but it is such a dirty language. The language keeps maturing, but it will always retain much of its anything-goes disposition.
I really have no interest in catching up with the newest changes to the language. That’s because I don’t have a strong desire to use it in the future. I certainly wouldn’t want a job coding in PHP. However, it won’t go away. I have too many personal web pages that use it, and I eventually want to embrace Laravel for future web site development.
Go
I don’t know Go. However, it is gaining popularity. It might be worth learning. Syntactically, it seems to be somewhere between Python and Ruby, but it is a compiled language.
Kotlin
I don’t know Kotlin. However, I want to learn it and use it for Android development.
Ruby
I started learning Ruby, and I know the basics. The monitoring systems where I work are implemented in Ruby, so it is the most expedient language for writing monitoring scripts. That said, those monitoring systems are on their way out. Still, I should make an effort to “finish” learning the language.
Lua
This is another language I would like to learn, but only for one purpose: this is the language embedded in Wireshark that can be used to write custom protocol dissectors.