The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
Двадцать лет назад лучшим программистом считался тот, кто мог уместить всё приложение в файл .COM
размером 64 Кб. Те, кто мог получить максимум от того скромного Intel 80386, становились иконами программирования.
Это связано с тем, что двадцать лет назад компьютеры были дорогими, а программисты - недорогими. То было время “хакерского менталитета”. Это время прошло. Такой менталитет больше не ценится, потому что рыночная ситуация полностью противоположна.
Сегодня компьютеры дешевы, а программисты дороги. Это эпоха “менталитета дизайнера”, когда читабельность нашего кода намного важнее его производительности.
Посмотрите на этот график. Он показывает сравнение двух тенденций за последние двадцать лет (1994-2014). Первая тенденция показывает, насколько дешевле стало компьютерное память и хранение на жестком диске за последние двадцать лет.
Вторая тенденция демонстрирует, насколько повысились зарплаты разработчиков программного обеспечения за тот же период. Более точно, они выросли втрое. Я не нашел официального отчета об этом, но уверен, что это не секрет для всех, что зарплаты программистов продолжают расти - 200 000 долларов в год для старшего разработчика уже не мечта… тогда как двадцать лет назад лучшее предложение составляло 60 тысяч. Я нашел эту статью очень интересной по этой самой теме.
В основном, это означает, что для создания веб-сайта на PHP в 1994 году нам приходилось тратить в 1000 раз больше на оборудование и втрое меньше на программистов, чем сейчас, в 2014 году. И мы говорим об одном и том же стеке технологий. Тот же Linux-сервер с Apache HTTP Server внутри.
Разница заключается в том, что в 1994 году, если у нашего приложения были проблемы с производительностью из-за ограничений оборудования, мы платили 35 000 долларов за каждый дополнительный гигабайт оперативной памяти, тогда как в 2014 году мы платим 10 долларов.
В 1994 году было гораздо эффективнее нанимать больше программистов и просить их оптимизировать код или даже переписывать его, вместо покупки нового оборудования. В 2014 году ситуация совершенно обратная. Теперь намного дешевле увеличить размер сервера вдвое (особенно если сервер - виртуальный облачный), чем платить зарплаты за оптимизацию программного обеспечения.
В 1994 году лучшие инженеры имели эту “хакерскую ментальность”, в то время как в 2014 году “мыслительный образ дизайнера” гораздо более ценится.
Кто-то с хакерским мышлением назвал бы этот метод на языке Java Фибоначчи “элегантным кодом” (и вы?):
Я бы выделил следующие качества хорошего хакера:
отличает других как хакеров и новичков и пишет код для хакеров
скучает и раздражается от правил и стандартов
не пишет модульные тесты — джуниоры напишут их позже
наслаждается тушением пожаров - вот как проявляется его талант
предпочитает разговоры, чем документацию, поскольку они намного интереснее
ненавидит видеть, как его код изменяется кем-то другим
любит посвящать себя одному проекту за раз
Хакер - это талантливый человек. Он хочет выразить свой талант в программном обеспечении, которое он создает. Ему нравится писать код и делает это в основном для удовольствия. Можно сказать, что он женат на своем коде и не может представить его счастливую жизнь после возможного развода. Владение кодом - вот что значит для хакера - он считает себя “владельцем” кода.
Когда я спрашиваю у одного из своих хакерских друзей: “Как кто-то поймет, что делает этот код?”, я почти всегда слышу один и тот же ответ: “Они спросят меня!” (обычно с гордостью и искренней улыбкой).
Кто-то, обладающий мышлением дизайнера, провел бы рефакторинг указанного кода, чтобы он стал более читабельным. Он назвал бы эту функцию на Java “изящным кодом” (как насчет вас?).
Я считаю, что следующие качества могут быть присущи хорошему дизайнеру:
предполагает, что каждый является новичком и пишет соответственно
любит устанавливать правила и следовать им
предпочитает документацию перед разговорами и автоматизацию перед документацией
проводит большую часть своего времени, занимаясь написанием модульных тестов
ненавидит тушение пожаров и работу сверхурочно
любит видеть, как его код изменяется и рефакторится
работает с несколькими проектами одновременно
Дизайнер - талантливый игрок команды. Он вносит свой вклад в процессы, стандарты, правила, образование и дисциплину команды так же, как и в исходный код. Он всегда удостоверяется в том, что после его ухода с проекта его код и его идеи остаются и продолжают работать.
Наивысшее удовлетворение для хорошего дизайнера - видеть, как его код живет своей собственной жизнью - модифицируется, улучшается, рефакторится и в конечном итоге уходит на покой. Дизайнер видит себя родителем кода - как только он достаточно взрослый, чтобы ходить и говорить, ему предстоит жить своей собственной жизнью.
Если вы считаете себя хакером, я считаю, что настало время измениться. Время хакеров истекает.
В ближайшем будущем мы, вероятно, даже перестанем думать в терминах “аппаратного обеспечения” и будем запускать наши приложения на эластичных вычислительных платформах с неограниченным количеством памяти, мощности ЦП и места для хранения. Мы просто будем платить за использование ресурсов, и любая проблема с производительностью просто добавит несколько дополнительных долларов к нашим ежемесячным счетам. Нам будет все равно на оптимизацию.
В то же время, хорошие программные инженеры станут все более дорогими и будут брать $500+ в час только за проверку программного обеспечения и диагностику. Просто как хорошие юристы или стоматологи.
Вот почему, разрабатывая новый программный продукт, те, кто за него платят, будут больше всего заботиться о его поддерживаемости. Спонсоры проекта поймут, что лучшее решение, которое они могут получить за свои деньги, это то, которое наиболее читаемо, поддерживаемо и автоматизировано.
Great programmers write code, which is ...
— Yegor Bugayenko (@yegor256) May 17, 2020
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-18 at 05:22