Are You a Hacker or a Designer?

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+ в час только за проверку программного обеспечения и диагностику. Просто как хорошие юристы или стоматологи.

Вот почему, разрабатывая новый программный продукт, те, кто за него платят, будут больше всего заботиться о его поддерживаемости. Спонсоры проекта поймут, что лучшее решение, которое они могут получить за свои деньги, это то, которое наиболее читаемо, поддерживаемо и автоматизировано.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-18 at 05:22

sixnines availability badge   GitHub stars