вторник, 16 мая 2017 г.

Вы хакер или дизайнер?

Двадцать лет назад лучшим программистом был тот, который мог подогнать все приложение в файл 64 КБ .COM. Те, кто смог извлечь максимальную производительность из бедного Intel 80386. Они были звездами программирования.

Это потому, что двадцать лет назад компьютеры были дорогими, а программисты - дешевыми. Это было время «хакерской ментальности». Это время закончилось. Этот менталитет уже не ценится, потому что рыночная ситуация полностью противоположна.

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




Цены против Зарплаты

Посмотрите на этот график. Это сравнение двух тенденций за последние двадцать лет (1994-2014 годы). Первый тренд спадает и показывает, насколько дешевле компьютерная память и накопитель на жестких дисках стали за последние двадцать лет.

Вторая тенденция демонстрирует, эскалацию зарплат разработчиков программного обеспечения за тот же период. Они утроились. Я не нашел официального отчета об этом, но я уверен, что ни для кого не секрет, что заработная плата программистов продолжает расти - $ 200,000 в год для старшего разработчика больше не мечта ... в то время как двадцать лет назад $ 60 K был лучшим предложением.

В принципе, это означает, что для создания PHP-сайта в 1994 году нам приходилось тратить в 1000 раз больше аппаратных затрат и в три раза меньше на программистов, чем сейчас, в 2014 году. И мы говорим об одном и том же стеке технологий. Тот же самый ящик Linux с HTTP-сервером Apache.

Разница в том, что в 1994 году, если у нашего приложения были проблемы с производительностью из-за аппаратных ограничений, мы платили 35 000 долларов за каждый дополнительный гигабайт оперативной памяти, а в 2014 году мы платим 10 долларов.

В 1994 году было гораздо эффективнее нанять больше программистов и попросить их оптимизировать код или даже переписать его вместо покупки нового оборудования. В 2014 году ситуация прямо противоположная. Теперь намного дешевле удвоить размер сервера (особенно, если сервер является виртуальным облачным) вместо того, чтобы платить зарплату за оптимизацию программного обеспечения.

В 1994 году лучшие инженеры имели этот «хакерский менталитет», в то время как в 2014 году «дизайнерский менталитет» гораздо более ценится.


Менталитет хакера

Кто-то с хакерским менталитетом назвал бы этот метод Fibonacci Java:

Public int f (int n) {return n> 2? F (n-1) + f (n-2): n;}

качества хорошего хакера:
  • Использует все известные (и неизвестные) функции языка программирования;
  • Дискриминирует других как ламеров по отношению к его хакерскому коду;
  • Скучает и расстраивается правилами и стандартами;
  • Не пишет юнит-тесты, младшие сотрудники пишут их позже;
  • Наслаждается проявлением его таланта;
  • Ненавидит когда его код изменяется кем-то другим;
  • Любит посвящать себя одному проекту за раз

В 1994 году было гораздо эффективнее нанимать больше программистов и предлагать им оптимизировать код или даже переписать его вместо покупки нового оборудования

Хакер - талантливый человек. Он хочет выразить свой талант в программном обеспечении, которое он пишет. Он любит кодировать и делает это в основном для удовольствия. Я бы сказал, что он женат на своем кодексе и не может представить свою счастливую жизнь после возможного развода. Владение кодом - это то, о чем говорит хакер: он понимает себя как «владелец» кода.

Когда я спрашиваю одного из моих друзей-хакеров: «Как кто-то поймет, что делает этот код?» Я почти всегда слышу один и тот же ответ: «Меня спросят!» (Обычно очень гордо, с искренней улыбкой).


Менталитет дизайнера

Кто-то с менталитетом дизайнера реорганизовал бы код выше, чтобы было легче читать. Он назвал бы эту функцию Java «элегантным кодом» (как насчет вас?):

Public int fibo (final int pos) {
  Final int num;
  Если (pos> 2) {
    Num = fibo (pos - 1) + fibo (pos - 2);
  } Else {
    Num = pos;
  }
  Return num;
}

Качества хорошего дизайнера:
  • Имеет тенденцию использовать традиционные методы программирования;
  • Предполагается, что все являются новичками;
  • Любит устанавливать правила и следовать им;
  • Предпочитает документы за разговоры и автоматизацию по документам;
  • Большую часть своего времени кодирования проводит на модульных тестах;
  • Ненавидит пожаротушение и работает в постоянном течении времени;
  • Любит видеть, что его код изменяется и реорганизуется;
  • Работает с несколькими проектами одновременно;

Дизайнер - талантливый командный игрок. Он вносит вклад в командные процессы, стандарты, правила, образование и дисциплину, точно так же как он вносит свой вклад в исходный код. Он всегда следит за тем, чтобы после выхода проекта его код и его идеи оставались и работали.

Наивысшее удовлетворение для хорошего дизайнера - видеть, как его код живет своей собственной жизнью, модифицируется, улучшается, реорганизуется и, в конечном счете, удаляется. Дизайнер видит себя родителем программы - и когда она становится достаточно взрослой, он позволяет ей жить своей собственной жизнью.


Будущее

Если вы считаете себя хакером, я считаю, что пришло время измениться. Время хакеров угасает.

В ближайшем будущем мы, вероятно, даже перестанем думать о «железе» и будем запускать наши приложения на гибких вычислительных платформах с неограниченным объемом памяти, мощностью процессора и объемом памяти. Мы просто будем платить за использование ресурсов, и почти любая проблема с производительностью просто добавит несколько лишних долларов к нашим ежемесячным счетам. Мы больше не будем заботиться об оптимизации.

Лучшее решение, которое вы можете получить, является наиболее читаемым, удобным и автоматизированным; Не самым быстрым.

В то же время хорошие разработчики программного обеспечения будут становиться все более дорогими и будут взимать 500 долл. США в час только за проверку программного обеспечения и постановку диагноза. Так же, как хорошие юристы или дантисты.

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

Комментариев нет:

Отправить комментарий