Pardon me today as I go on a rant that can probably best be categorized as “get off my lawn.”
I remember when I first learned to program. I used ASP Classic to build sites for the university I was working at. It was fun for me for almost a decade until ASP.NET licensing made keeping those sites running too difficult on our limited budget.
Next I learned PHP and quickly fell in love with it as well. In fact, for the most part I found PHP even more enjoyable to work in than ASP Classic as the requirements to get started with it were even easier to get running on any machine I had available.
The key here is “the requirements to get started.” This has largely been a theme with the programming I’ve enjoyed ever since. I don’t mind complicated algorithms or other techniques but I cannot stand working with ridiculously complicated toolchains.
Today neither PHP nor JavaScript is any fun for me to work with. PHP, since version 8.0, has become fragmented enough that just getting basic debugging and testing tools to work can feel like an exercise in futility. What once just required a simple installation now requires matching versions and more to begin to get anywhere and changing projects can often mean starting the configuration all over again. It’s just a pain.
I have the same issues with JavaScript. As a language intended to manipulate the DOM in browsers it has been a great tool for me for a long time. As it’s grown to try to do everything, however, using it has become something I dread rather than look forward to.
From dependency chains to the “library of the week” to testing tools to runtimes and browsers JavaScript development has always reminded me more of a game of minesweeper than a productive language as any project in it seems to be attempting to avoid conflicts and tech debt before actually building any solutions.
So what do I like working in today? Go and Rust come to mind (though I confess I haven’t had a reason yet to write any Rust for an employer). They’re simple to get started, work on pretty much anything and are in a state where toolchains, dependency chains and libraries are much less troublesome than anything else I’ve used in the past.
Maybe some of my frustration is the result of the maturity of the techs I’ve used. In the case of PHP I think that’s the case. With JavaScript I don’t know if that’s all of it. The JavaScript ecosystem seems more designed to invite added tooling complexity at every step of the development process than any tech I’ve come across.
What will I write in tomorrow? I don’t know. For now, though, I think my personal code projects are better aligned with working away from PHP and JavaScript and working more in Rust and Go where I actually still enjoy what I’m doing.