Over the last several months, I’ve seen a lot of whining, complaining a fear regarding Angular 2 in particular and the JavaScript platform in general.
Terms like “JavaScript fatigue” are indicative of the attitude.
Another place I see this is with the recent announcement from the Angular team stating there will be another major point release every six months. Like this is a bad thing? Or the general attitude that particular (modern) design decisions that have been made in some of the more recent frameworks that have been released are bad for JavaScript.
And I look at that and honestly wonder why these people are programming in the first place. If change bothers you, you are really in the wrong industry.
I’m Moving To …
I seriously saw this comment on one of the articles announcing the major point release and jumping to version 4 instead of 3. The actual comment was, “I’m going to move to React.” Now, the reason he was going to move to React because he’s afraid that these major point releases are going to be drastically different from the previous version so that he’ll always need to be learning something new. I understand the fear. But, I think it is unfounded. Aside from the fact that the Angular team has assured us that there won’t be any breaking changes in the next version, what we have to take a look at is WHY there were so many breaking changes from version 1 to version 2.
Remember when…
Remember back to when AngularJS was first introduced? The best platform we had at the time was jQuery and KnockOut. Yes, there were others, but those were the most prominent. Especially jQuery. Since then, the browsers have stabilized and most of the reasons for using jQuery have vanished.
Another factor we need to consider is that the language has changed. Oh, yeah, you can still write code like you used to 10 years ago, if you want. But, the standards committee has finally committed to putting out new standards for the language every year. So now, we have improvements that handle scope closure issues and fat arrow functions and the promise of not having to use promises or callbacks to force JavaScript into a more synchronous flow by using async and await.
And then there is the history of various frameworks that have come out since. We’ve made a lot of mistakes in the past that have led to improved ways of working with JavaScript to achieve various goals. Function programming has crept into the mainstream. Reactive programming has become more popular.
For any framework to stay stagnant under these conditions would be foolish, if not suicidal.
And to that programmer who is leaving Angular for React? Good luck. You think Angular is bad. React makes all those changes you dread without changing the major number.
What would it be like if …
Just imagine with me what it would be like if nothing ever changed. How far back do you want to go? How about back to where I started programming. OK, that was 29 years ago. I started programming on DOS 3.1 using Clipper (that’s a dBase III compiler). We had 640K (that’s 640,000 bytes, not megs, not gigs) to program in. We used overlay tricks to cram programs that were three times that size into the computer. There was no GUI and what graphics we did have were incredibly grainy. You were lucky if you had color. There was no Internet, that was still the “property” of the colleges and the universities. No Google to find answers to your questions. No blogs.
No cell phones.
No social media.
And all of that was less than 30 years ago.
And yet, the way many people act, they would like things to stay the same. And I ask, “Why?” So that 30 years from today we are still struggling with the same issues we are today?
Maturity
Every new technology goes through essentially the same process.
At first, it is brand new. No one really knows the best way to use it. Some are better planned than others, others were accidents and were subject to more discovery than others. JavaScript was one of those that was more of an accident. So, we’ve spent a lot of time trying to figure out the best way to use it. Think about this, if we had known then what we know now, don’t you think JavaScript would have been designed differently from the beginning? At some point the new technology either dies, or matures enough that people start experimenting with how to use it best. This is the place where design patterns are developed and features are added to the language. This is the part of the cycle I love and is generally where I tend to jump into the technology.
Eventually the technology matures and gets boring. This is where I tend to jump off. Java and .NET are in this phase. The patterns for both are well established. What features are being added are at the “nice to have” level. But generally everything most people need to be able to do can already be done with what is available.
We are currently at the beginning of the experimental phase. Expect to see A LOT of change in the next several years. If you don’t like it, move to a more mature technology that won’t change so much on you.
Conclusion
The final factor that magnifies all of the problems with JavaScript I’ve mentioned is that for way too long, JavaScript has been the language of Script Kiddies. These are “programmers” who think that because they can achieve some sort of animation or validation on an HTML page by copy and pasting JavaScript they are real programmers. So when someone with much more experience comes along and shows them a better way to program, instead of trying to learn they assert that this new way is wrong, or ridiculous, or declare they are going to take their toys and go to some other castle.
The problem is, all the castles are now occupied by Kings and Queens instead of children who don’t know any better.