Это называется "разделение труда". Про ИТ не знаю, но в промышленности так все устроено повсеместно. Не может фрезеровщик Вася одновременно и лить деталь, и точить на станке и фрезеровать и красить в малярном цехе. Да есть крутые специалисты которые и отольют и выточат и отфрезеруют и покрасят. Но они хороши при мелкосерийном производстве, а вот когда начинаются большие объемы, тут крутой многофункциональный спец Вася может и дупу надорвать. Так что да, это все "не раньше было лучше а сейчас сплошь бараны", а просто индустрия взрослеет. А то что нормально рабочий процесс организовать не могут, так это проблема менеджмента, до конца не понимающего или не понимающего вообще что надо делать и как организовывать. Так что да, очищающий кризис, нахлебников с макбуками за порог и все будет норм.
Про ИТ я могу сказать следующее. Ты не можешь писать хороший бэкэнд, если ты не понимаешь, как хранятся данные в базе и как будут строиться запросы. Ты не можешь сделать хороший бэкэнд, если не понимаешь, как будет расширяться система с точки зрения архитектуры. Ты не сделаешь нормальный бэкэнд, если ты не понимаешь, как у тебя реализованы контракты с другими системами, и прочее.
В том то и дело, раньше программирование было больше похоже на фрезировщиков ибо программировать на C было похоже на перебирание жигулей после 100 тыс. пробега. Сейчас 90% работы по фрезеровке деталей делается автоматически, твоя задача - продумать как узел будет выглядеть в целом и очертить рабочую схему.
Были придуманы ORM фреймворки -чтобы не плодить индусский SQL код, были придуманы всякие RabbitMQ, чтобы ты мог использовать очереди легко и просто, были придуманы всякие Redis, чтобы ты мог кэшировать из коробки, только иди и пиши высокоуровневый качественный код на современных технологиях. Но нет, мы возьмем Java 6, возьмем устаревший лет на 10 Spring MVC, и посадим индусов писать что-то типа
//JDBC TEMPLATE INSERT EXAMPLE
public boolean insertLog(DBLog log) {
System.out.println("JDBCExample: log(final String log) is called");
final String INSERT_SQL = "INSERT INTO LOG (LOGSTRING) VALUES (?)";
jdbcTemplate.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement preparedStatement = connection.prepareStatement(INSERT_SQL);
preparedStatement.setString(1, log.getLOGSTRING());
return preparedStatement;
}
});
return true;
}
//JDBC TEMPLATE SELECT EXAMPLE
public List<DBLog> queryAllLogs() {
System.out.println("JDBCExample: queryAllLogs() is called");
final String QUERY_SQL = "SELECT * FROM LOG ORDER BY IDLOG";
List<DBLog> dbLogList = this.jdbcTemplate.query(QUERY_SQL, new RowMapper<DBLog>() {
public DBLog mapRow(ResultSet resulSet, int rowNum) throws SQLException {
System.out.println("Getting log: "+ rowNum + " content: " + resulSet.getString("LOGSTRING"));
DBLog dbLog = new DBLog();
dbLog.setIDLOG(resulSet.getInt("IDLOG"));
dbLog.setLOGSTRING(resulSet.getString("LOGSTRING"));
return dbLog;
}
});
return dbLogList;
}
А то, что в 2017 это все делается легко на уровне ORM и инжекнутых сервисов - ну а что, у нас говнокод бэквард компабилити, энтерпрайз, мы наймем индусов за 5 баксов плодить никому не нужный в 2017 говнокод.
В 50к проектах именно командам плохих индусов удержаться гораздо проще, чем в небольшой конторе. Там их факапы размазываются по нормальной работе и в среднем ок, при больших числах )
Понятно, что если людей на проекте десяток, то бездельника никто терпеть не будет. Но к сожалению, в какой нибудь Abbyy, которая отлично писалась в десяток человек, работает теперь 1200 человек, и качество софта лучше не особо-то стало, у меня сестра в банке до сих пор пытается внедрить потоковое распознавание - и никак.
2. Это в какой такой стране, где проживают пони и единороги не увольняют классных специалистов? Особенно в IT?
Страна тут не причем, но в компаниях, где всего человек 50, не уволят специалиста, ибо его импакт виден всем, включая гендира. В компаниях на несколько тысяч человек все заслуги размываются, и там уволят кого угодно и как угодно.