It is common knowledge among many seasoned web developers that building a website from scratch 15 years ago was a rather simple task. To begin with, we didn't have to deal with the insane amount of screen resolutions brought by big-size monitors, ultra-high resolutions, and mobile devices; we could avoid the urge of learning a lot of (back then) "experimental" stuff such as AJAX, JSON, and XMLHttpRequest, as the established DHTML-based techniques we already knew were more than enough to get the job done; our simple, quick 'n' dirty JavaScript hacks could easily shine among friends and colleagues without being embarrassed by cross-platform JS libraries such as jQuery (2006); we didn’t have to implement time-consuming and/or knowledge-demanding features such as login with Facebook, Sharing buttons, SEO meta tags, Twitter Cards and RSS feeds because they were either not there yet or not so important. On top of all that, there still weren’t that many fully-featured, great-looking, award-winning CMS solutions such as Drupal (2001), WordPress (2003), and Joomla (2005) to compare our results with.
Sounds pretty reasonable, right? Except it’s not. The Web is always changing, just like the rest of the world: the complexity level of the average website is constantly increasing because the usage is more diversified, widespread and intense, however, such growing excitement was also a great thing for those who wanted to make a living out on building web applications, assuming they had the guts to keep studying, communicating, and living the blowing storm of new technologies behind these winds of change. As seasoned developers, we should be able to cope with such simple, yet inevitable truth, adapting ourselves before and better than our customers instead of being trampled by their increasing demands.
Even nowadays is easily demonstrable (I already wrote a couple books about that) that is still entirely possible to develop great web applications from scratch, providing that we use the proper tools and have the patience to understand how we can blend them together to achieve what we want. Luckily enough, the insane amount of additional work required nowadays can be mitigated by a lot of powerful frameworks that make their way through the development scene: we’re talking of server-side runtime environments like ASP.NET and Node.js and also of many client-side frameworks that quickly made their way, such as AngularJS, React, VueJS and the new Angular reboot, which started with version 2 and is now experiencing its fifth successful installment. For my projects, I ended up chosing the two of them that better fit with my way of thinking: ASP.NET Core to cover the server-side aspects, and the new Angular to deal with the client-side. Not only for their fancy features and elegant design, but also because they happen to have something revolutionary in common: they are both a complete rewrite of their massively-popular previous installments, who played a leading role in their respective field.
Why a development team should do that? What’s the purpose of reinvent their own widely-acknowledged wheel despite it still rocks? The answer most likely lies in what we said earlier: in an ever-changing world such as the one we’re living in we need to be humble and wise enough to keep moving forward, embracing – sometimes even enforcing – the iterative processes required to forge better tools for building a more complex, yet also more enticing World Wide Web.
The guys behind ASP.NET and Angular were brave enough to accept the challenge: after a few months of unstable releases and breaking interface changes, three major releases and more than 80.000 StackOverflow questions asked in less than 18 months, it definitely seems that their choice was worth the effort: that framework is meant to stay, at least for the time being.
What about us? What about you?
This article is an updated rewriting of the preface that I originally wrote for the ASP.NET Core and Angular 2 book.