Инструменты для разработки ПО (и программирования, и тестирования) — они существуют для упрощения работы специалиста. Они должны быть максимально просты (буквально до тупости), охватывать по-максимуму сложные и зависящие от окружения ситуации, и у них должен быть как можно более низкий порог вхождения.
Если для использования инструмента его необходимо особо как-то изучать, то, пожалуй, есть резон сменить его на другой.
Я имел дело с ужасными, чудовищно перегруженными сложностями и «так делать нельзя» библиотеками и фреймворками, а также бился с редакторами и IDE, которые как будто специально делали для замедления работы специалиста; они либо буквально мешали освоению себя, либо требовали знаний из сильно иной сферы ниши.
Зачем делать Javascript-фреймворк, который невозможно понять без глубинного знания C# и его подходов? Непонятно. JS — технология для написания фронтенда, а не контроллеров для работы с базами данных, контролем памяти и тому подобное. JS должен постигаться просто, и уж тем более — не иметь дополнительных усложнений и нужды лезть в сферы, которые фронтенд-разработчик и знать-то не хочет, ему и «войны браузеров» с головой хватит.
Инструменты разработки должны придерживаться того же подхода, что и простейшие инструменты для строительства и ремонта.
Вот, например.
Если мне нужно забить гвоздь, я использую молоток. Я беру эту штуку и тупо забиваю гвоздь. Мне не нужно изучать какую-то особую гимнастику, не нужно постигать химию и биологию, чтобы шарить в свойствах металла молотка и том, как растёт дерево, из которого сделана рукоять. Я беру молоток — и забиваю гвоздь.
Тем не менее, в среде разработчиков ПО порой становятся популярными и чертовски востребованными ужасающие, чудовищно сложные монстры, никаким образом не совместимые ни с какими нормальными инструментами.
Да-с, это как реквием по сфере, но что поделать, она так и живёт — вмёртвую.