Я работаю программистом 12 лет. Последние 2 года в мобильной разработке, а до этого php со всей своей экосистемой, фронт-энд - по мере необходимости.
И проблема конфликта между красотой кода и быстротой реализации новых фич давно меня занимала. Раньше были разговоры и даже холивары на эту тему. Однако сегодня поднимать этот вопрос уже моветон.
И вот конкретный пример.
Для мобильной разработки пользуюсь таким замечательным продуктом как Android Studio. И решил давеча отключить ненужные плагины в настройках. Снял галочки напротив плагинов которые для меня не нужны, IDE не предупредила ни о каких возможных проблемах.
Перезапустил IDE, и вуаля, среда сломалась:
"Missing essential plugins... Please reinstall from scratch."
Думаю, "весело". Лезу в гугл, Stackoverflow уже всё знает ;-) и "советует" удалить файлик disabled_plugins.txt из папки конфигурации.
Но я же думаю как программист, зачем, мол, удалять, верну плагины которые требуются, остальные оставлю отключенными.
Тоже фигушки. Та же ошибка. Я уже весь файл оставил пустым - действительно, "зачем удалять сам конфиг файл?" - подумал я как программист, если он пуст..
Ошибка не пропала. Только полное удаление файла решило проблему.
К чему я это всё?
А к тому, что Android Studio не курсовая работа студента. Это IDE для разработчиков от уважаемой компании.
Как? Скажите мне, как можно было допустить такой код в продакшн?
Плохая квалификация разработчика должна перекрываться хорошей квалификацией кодревьюера.
Плохая квалификация разработчика и кодревьюера должна перекрываться хорошей квалификацией тестировщиков.
Код прошел все эти стадии и такой, простите, детский косяк, попал в такой серьезный продукт.
Выводы.
Большие деньги в сфере IT порождают большую конкуренцию между продуктами и это ставит развитие продукта в больший приоритет чем качество самого продукта.
При чем определяющими для окупаемости и даже выживания программного продукта являются такие вещи как внедрение новых фич, обновление дизайна, реализация поддержки новых технологий, а не наличие багов или проблемы с производительностью. Если провести аналогию со строительством домов, то мы живем в век, когда для возведения дома, стены формируют не укладкой кирпичиков слой за слоем, а просто насыпая кирпичи друг на друга по контурам. А внешний вид выравнивают тоннами шпаклевки.
В добавок HR менеджеры так же стремятся завербовать новых, именно новых, потому что от старых они не получают дивидендов разработчиков, которые, вследствие массовости, существенно потеряли в качестве.
В итоге неквалифицированные разработчики быстро создают и быстро развивают программные продукты.
Эти программные продукты “сжирают” продукты, которые не могут развиваться так быстро из-за того что их разработчики тратят больше времени следя за их качеством.
А дальше включилась эволюция. Т.е. более былокодерские проекты становятся более успешными и более богатыми, чтобы с ними конкурировать нужны еще более быстро развивающиеся и следовательно еще более быдлокодерские продукты.
А баги - что баги? - ну есть стековерфлоу. Я же за 5 минут нашел как пофиксить ошибку.
Производительность, скажите вы, - кто о ней думает в эпоху 32ГБ ОЗУ и процессоров 12 поколения?
Словом, качество кода ушло на последнее место когда программирование стало на 120% коммерческим делом на котором делаются главные состояния.
И вопрос, как быть эстетам, которые хотят получать еще и эстетическое удовольствие от программирования?
Автор:
Antifreez