The title of this blog post might seem a bit misleading at first but the crux of my argument centers around a huge problem in the development world: the proliferation and sheer abundance of too many languages, tools and frameworks. Part of my frustration as a developer is that the number of these tools (in generalizing the idea here) are too much for any single person to be able to reasonably keep up-to-date with. One can argue that the history of development is all about disruption and the evolution of tools. However, the counterargument of the current situation is that much of what’s gone on defies some basic principals of programming, which is what angers me the most.
I do not know the exact circumstances of why Aurelia came about but my gut feeling is that there more than likely was that heated argument on the direction of Angular, especially considering that the next major release will invalidate many existing code bases. One of the problems with AngularJS, as I’ve discussed in a previous post, is that at this stage, the developers have turned AngularJS into a ticking time bomb and businesses who already employ it must eventually make the decision whether to continue using it or change directions while new projects have to face similar choices.
However, one of the things I’ve noticed is that there are a high number of AngularJS jobs on the market. Certainly, Ember, React and Backbone are still candidates but the buzzword of the month is AngularJS. Yet if we accept Aurelia or React or any of these frameworks that more or less are similar in purpose in some way, then it feels as though the problem we are attempting to solve is pretty redundant and that all we’ve done is complicate matters due to lack of commitment and high adoption for bolster resumes for higher pay.
But have we really helped businesses perform better by creating this schizophrenic market place where owners place far too much trust in developers for lack of vision? Have we been ecologically sound in attempting to reuse code as opposed to reinventing the wheel numerous times over because the syntax for one framework might be too cumbersome or that another lacks one or two features? Does it make the situation easier for developers to hop on a project and focus on business problems as opposed to working with poorly documented, supposedly cutting edge technologies that end up in a trash barrel once the next sexy framework makes an appearance?
For myself, I’m tired of doing the Hello Worlds of every single framework just to get a handle on the basic methodologies. I’m tired of not progressing business problems and solving larger issues but getting mucked up in the details of a language, API or framework, thereby extending the length of a project by another 6 months while getting up to speed and figuring out the best architecture and practices. I’m simply tired of wasting time.
But that’s what many of these tools have done. Sure a few made significant impacts in the way we develop. But at this point, much of what has gone on is merely opinion and irrational, near religious fanaticism that hasn’t made our lives better. Instead, the plethora of frameworks and tools have converted our mindset into a paralyzed schism where we’re too worried about trying to figure out the next cutting edge thing because at the end of the day, most of us are too worried whether or not we’ll have a job that pays competitively.
The only way we can stop this is to stop being early adopters and start evaluating technology with keener eyes and a desire for long term commitment. I think part of this duty is to help improve the issues that these tools face. For instance, maybe rather than running away from AngularJS, we commit to it sustenance and force the people who are designing it to figure out a backwards compatibility strategy rather than forcing everyone to rewrite their code bases. Perhaps, we should have forced the Perl programmers to make their code more readable, or install some tool to unravel unreadable one liners and correct spacing. Perhaps, we should allow for variable interpolation to get scripting-like in a language like Java. Perhaps, a tool like Apache can offer friendlier install methods to strip out half the unnecessary libraries and train people better in optimizing what it can and cannot do.
I find it so funny when I hear people talk about how they flip flop constantly between going to some new thing then returning to their primary tool of choice once they learn that it never was that bad to start. A good example are relational databases vs NoSQL databases. People tried to force the square peg into the round hole without really attempting to understand what the underlying problem for their business was. If that’s the case, then as developers we aren’t providing the best service to customers, employers and each other. Instead, we’re simply making our lives a gigantic clusterfuck. And you know who wins in that? The recruiters. That’s the last group of people in all of this that should win.