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

Вторая тенденция демонстрирует, эскалацию зарплат разработчиков программного обеспечения за тот же период. Они утроились. Я не нашел официального отчета об этом, но я уверен, что ни для кого не секрет, что заработная плата программистов продолжает расти - $ 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 долл. США в час только за проверку программного обеспечения и постановку диагноза. Так же, как хорошие юристы или дантисты.
Вот почему, разрабатывая новый программный продукт, те, кто платит за него, будут заботиться в основном о его поддерживаемости. Спонсоры проекта поймут, что лучшее решение, которое они могут получить за свои деньги, это то, которое является наиболее читаемым, поддерживаемым и автоматизированным. Не самым быстрым.
Комментариев нет:
Отправить комментарий