После работы с Java, при использовании Angular поражает большое количество мелких багов в тьюториалах и сборке примеров. Вот и сейчас делаю я Getting started для ngx-bootstrap

npm i -g @angular/cli
ng new my-app
cd my-app
ng serve

И при ng serve вылетает:

module.js:538
    throw err;
    ^

Error: Cannot find module '@angular-devkit/core'
    at Function.Module._resolveFilename (module.js:536:15)
    at Function.Module._load (module.js:466:25)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/yakov.makarov/Projects/web-examples/angular-ts/node_modules/@angular-devkit/schematics/src/tree/virtual.js:10:16)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)

Спасибо https://github.com/angular/devkit/issues/256 это удалось побороть с помощью:

npm install  @angular-devkit/core --save-dev

Но в целом эти вещи жутко магические. Я работаю на тем, чтобы больше разбираться, но это тяжело. Не знаю в чем причина, но проще разыскивать ответ в гугл, чем разбираться самому. И в этом есть неприятный момент. Приятно решить задачу самому, не очень приятно просто скопировать ответ. При этом приятно получать зарплату и по началу, когда копируешь ответ получаешь большую производительность. Последствия такого поведения, становятся видимыми довольно не скоро. Но окружая себя магией, ты перестаешь управлять миром.

Чтобы бороться с магией нужно специализироваться. Это позволяет досконально знать работу системы. Возможно ли достаточная специализация для fullstack разработчика остается под вопросом.