Wenn ich noch einen Tipp geben darf: versteiff' dich nicht zu sehr auf Sprachen wie Coffeescript oder Typescript... Klar, es hat was wenn man Typsicherheit, Klassen und wasauchimmer hat, aber dabei vergisst man schnell, dass Javascript genau das nicht hat und es aber auch in Javascript recht ansehnliche Design patterns gibt die eben durch das Funktionale und Prototyp'sche zustande kommen. Bei den Sprachen, die erst zu Javascript kompiliert werden, weiss man zudem nie wirklich was nach dem kompilieren hinten bei 'raus kommt - was es grad bei komplexen Zusammenhängen und/oder Browserseltsamheiten schwierig zu debuggen macht.
Zumindest IMHO... im Endeffekt gibt es auch genug große Projekte, die mit diesen Hilfssprachen und monolithischen Frameworks (AngularJS z.B.) zum Erfolg gebracht wurden - ich steh halt mehr auf den minimalistischen Ansatz nur wirklich die Funktionalität in seinem Projekt zu haben, die man auch wirklich braucht - man kann sich seine Funktionalität auch mit mini-Frameworks und etwas Handarbeit zusammensuchen, da weiss man wenigstens wer schuld ist wenn etwas nicht tut