Once again, very helpful, Sander. Thanks. As you can tell, I'm trying to have both good decisions and good responses to questions from professionals who already know how to develop solid, lasting software with other stacks. If those stacks do not get them handily to good UI in a cloud/web/mobile app, they are looking for other options.
I will continue to plan on moving to Angular 2.0 while retaining ES5, and I really hope that there will be plenty of resources for that approach. I noticed that the John Papa standards changed a bit in prep for 2.0 (with $inject, for example). It's hard to keep up, but I'll try to balance ignoring the not-ready-for-prime-time Angular 2.0 (the marketing is still very troubling and definitely keeping people from adopting Angular right now) and preparing for it.
Transpilers: I like transpilers a tad bit more than "code generators" where you do clicky-clicky things and then it generates code. However, I do not like the additional complexity of having a transpiler in the mix, and I would rather that we are debugging the JS we write rather than a generated version, unless there are some huge advantages. The html in the browser is already generated/rewritten by Angular (at this point we are using jade too). We are working with css, but as soon as there is a css-related designer on the team, they might want sass (or less or sylus or scss or whatever is on the horizon). It seems so unnecessary to add in another transpiler/code-generator into the mix -- although this is somewhat amusing -->
https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-JS. JS seems to be the new p-code. Of course, I'm suggesting to my friends that they write a transpiler for MV BASIC (Data/BASIC) too as there are only 3 flavors of BASIC in that list at this point.
OO: I love the gorilla/banana problem -- thanks for pointing me to that and some great quotations regarding OO. Both OOP and RDBMS's contributed in various ways to software being harder to write, more bloated, and less fun for individuals and teams to develop. There is still plenty of development done in COBOL, FORTRAN, and one of the 100+ flavors of BASIC (
https://en.wikipedia.org/wiki/Category:BASIC_programming_language_family), not to mention C. JavaScript is relatively easy to pick up by folks working with these languages, with additions like prototypal inheritance, objects, and closure as topics to cover when introducing JS.
There are definitely some things not to like about ES5, but I don't want to do the two-punch of a transpiler in the mix (debugging generated code and having another moving part on the server) and a flood of unnecessary classes in the source code. When I saw an example of ES6 code with class declarations, "let" statements, arrows, ellipses, and the like, I did not want to give it another thought (OK, that's not true, I gobbled it up, then spit it out and got back to work). smiles. --dawn