For everyone who just read the Sad State of Web Development, I disagree.
2015 was a great year for web development. We can create bigger and better web applications than ever before, with better code quality and faster page load times. The world wants Single Page Apps (SPAs), meaning we have to move huge amounts of logic from the server to the browser. We’ve been doing this for years, but in 2015, we’ve found better ways to build these large sprawling front end apps.
As with years prior, almost everyone rewrote an app using the latest fad framework: React. Unlike the fads before it (Angular, Backbone.js, Ember.js, etc), React introduced three ideas which have changed web development radically. React may not last forever, but the ideas it brought us will stick around for a while.
React re-introduced an old idea from the PHP days: code and HTML templates together in the same file. This had gone out of style with MVC frameworks which espoused separating HTML templates and logic as far as possible. JSX may not survive more than a couple years, but the ideas will stick around. Coupling a component’s logic with its DOM allows developers to reuse and share DOM components. This idea even has its own W3C spec. Many developers scoff at this idea, but after using it realize its benefits for code reuse and refactor.
People got their hands on React and started writing apps in it the same way they had done it forever, with object-oriented-inspired local state flying around everywhere. So Facebook also released their philosophy of developing React, named the Flux Architecture. Rich Hickey has been talking about constraining state and instead focusing on data manipulation for years, but it wasn’t until Facebook started talking about it to get all the UI programmers on board. This is probably React’s greatest gift to the community, a true way to improve the efficiency of creating programs. The ideas from Out of the Tar Pit are clearly visible in Flux. Because its so popular, now almost any React shop is writing code better than they were last year, by using functional data-flow concepts and moving away from OO design.
Elm is another functional compile-to-JS language, but instead of a lisp-inspired approach, Elm is ML-inspired, especially from Haskell and OCaml. However, Elm takes the approach of making it easy to program in it, from top of the line error messages, to great tutorials, Elm and its maintainers are dedicated to a fantastic developer experience, as this talk shows.
Things are more complicated now than they have ever been. There are more plugins to download, more npm packages to comb over, more frameworks to consider, more languages to learn, more more more more more.
But complicated isn’t necessarily bad. With these new transpilers, packages, frameworks, and languages, we can build bigger faster, become more maintainable, raise our code quality, and just make programming easier. Simple things are easier to understand, but don’t provide the same power that a well-designed complex thing can.
Web development may be more complex now, but its greater than ever. I’d take that over any amount of excessive simplicity.