New Book Review: "JS.Next: A Manager's Guide (Second Edition)"
New book review for JS.Next: A Manager's Guide (Second Edition), by Aaron Frost, O'Reilly, 2015:
Great report on JS.Next in a small, 34-page package provided free by O'Reilly. The author, a Google Developer Expert nominated by Google for his work on AngularJS and its community, apparently has a book coming out on this same subject in about a year (September 2016), but by that time everyone will be talking about ES7. As Frost explains, JS.Next refers to the next version of the JavaScript API, currently ES6 (renamed to ES2015). Once the ES6 release is live, JS.Next will then refer to the ES7 (ES2016) release. Quite simply, JS.Next always refers to the next update to the JavaScript language.
The initial vision for this book was twofold. The first was to help everyone understand the importance of adopting the new ECMAScript 6 syntax into current projects, rather than waiting (in some cases years) for certain parts of the web to catch up. The second was to provide an explanation of ECMAScript 6 to non-developers, although as the author implies in Chapter 1, he wrote the content from the perspective that developers will find their way to this book as well.
Apart from these two explicitly shared visions, I personally found the discussion on "innovation debt" particularly well done. While many technical individuals understand this concept, the term comes from Peter Bell, who among other things is co-founder of "CTO School", a NYC meetup for CTOs, VPs of Engineering, and Technical Leads who are interested in improving their skills and learning from each other. In a nutshell, "innovation debt is the cost that companies incur when they don't invest in their developers".
In addition to tying the concept of preventing (or making up for) innovation debt by offering tips on how a development team can catch up on ES6 (by no means a minor upgrade to the JavaScript language) by dropping it into current projects, the author first discussions the direction of the industry, how one company took a strong stance on stale browsers, and discusses well the topic of "chronological snobbery", the opposite of Drucker's "myth of management".
As Frost explains, chronological snobbery is "constantly discrediting past ideas due to having been thought up before we had our present knowledge", which "robs yourself of the stability that comes with making a decision once and then sticking with it for a while". So "if decisions like which technology to use are being re-decided every few months, you may find that you have a chronological snob among you".
The second chapter presents the goals of ES6 and discusses the history of ES6 along the way, and the third chapter explains the features of ES6: arrow functions, let, const, and block functions, destructuring, default values, modules, classes, rest (not "REST") parameters, spreading, proper tail calls, sets, maps, weak maps, generators, iterators, direct proxies (and supporting features), string literals, binary data, minor API improvements (with regard to global objects Number, Regex, String, and Math), and UTF-16 support.
The author then follows up by offering suggestions on how to start integrating ES6 into projects. Suggestions include tackling incidental functionality first, following the philosophy of "graceful degradation" rather than "progressive enhancement", committing to developer training, using a transpiler (such as Babel, Traceur-Compiler, or TypeScript), and considering use of Microsoft IE's enterprise mode to prevent getting stuck using an old version of IE when a few organizational web applications might not run well in a modern browser.
The last (fifth) chapter is all about watching for ES7, the content of which is all based on speculation at this point, because none of the proposed features that Frost discusses have yet been officially accepted into the final ES7 release: Object.observe, multithreading, traits, and additional potential proposals such as precise math, improved garbage collection, cross-site security enhancements, typed, low-level JavaScript, and internationalization support. Great report easily digestible in a couple hours.