Я прошел свой первый курс компьютерного программирования в 1966 году, работая над ультрасовременным суперкомпьютером, занимающим комнату размером с гостиничный номер с собственной системой охлаждения, хотя и обладающим лишь частью вычислительной мощности Fitbit. С этого момента я постоянно получал работу — как постоянную, так и подработку — где программирование было абсолютно необходимо, хотя ни одна из них никогда не определялась строго как «компьютерное программирование». Я никогда не писал лихорадочно код на стене в условиях обезвоживания после 36-часового запоя, вызванного кофеином и/или аддераллом, и никогда не проходил собеседование, когда меня просили написать код в стиле 1980-х, который любой профессионал скопировал бы из Интернета. после пятисекундного поиска, а также не взломал секретные сети, контролирующие ядерное оружие моей или любой другой страны. Но за более чем полвека мне в совокупности заплатили как минимум пару миллионов долларов от различных клиентов, как государственных, так и частных, за проекты, которые я не смог бы реализовать без программирования. Скорректируйте это значение для временного промежутка, и оно будет менее впечатляющим; с поправкой на инфляцию, тем более. Таким образом, я думаю, что заслужил право считать себя профессиональным программистом.

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

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

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

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

Только представьте себе мир, в котором 80% коммерческих разработок и подразделений остались незавершенными или снесены через пару лет. Такое иногда случается: «города-призраки» Китая — очевидно, они в конце концов были заполнены — или особняки и офисные здания, оставшиеся незавершенными во время финансового кризиса 2008 года — у нас есть пресловутый восьмиэтажный пример, медленно разрушающийся посреди нашего центра города. — или «городское обновление» государственного жилья середины 20-го века, превращенного в руины в начале 21-го века. Но это исключения, и о них пишут длинные расследования, о допущенных ошибках, о выявленных глупостях.

Тем не менее, в разработке программного обеспечения этот уровень отказов является обычным явлением. Цифра в 80%, конечно, всего лишь приблизительная цифра, но она полностью соответствует моему пятидесятилетнему опыту работы в академическом, государственном или частном секторах. Имейте в виду, наверное, 80% работы в любой крупной организации тратится впустую. «Сколько людей работает в вашем офисе?» — О, может быть, половина из них. — но это расплывчато: это крупные, спланированные, отдельные проекты, иногда финансируемые на миллиарды долларов и интенсивно управляемые. Все напрасно, когда мир катается по оставшейся тонкой облицовке нескольких успешных проектов, и еще меньше тех, которые сохраняются, порой не меняясь десятилетиями.

Быть «программистом» когда-то было просто «вещью», но теперь превратилось в множество подспециализаций. За исключением того, где его нет: есть понятие «разработчик полного стека» — проводящий много времени в IHOP и Waffle House, программисты? — кто может номинально, а во многих случаях действительно сделать все необходимое для ведения проекта от начала до конца. Это почти то же самое, что мы видим с физическими строительными проектами, верно?: наймите генерального подрядчика, и они разделят задачи на части и выполнят работу десятками специалистов. Но есть люди, которые строят полные дома — ладно, чаще домики для отдыха — с помощью нескольких друзей для тяжелой работы и доступа к большому количеству видео на YouTube.

Кроме того, за последние три десятилетия персональные компьютеры и программное обеспечение с открытым исходным кодом изменили среду программирования, в которой занятость была ограничена хорошо обеспеченными ресурсами организациями — корпорациями, правительствами и университетами, — которые могли предоставить оборудование и вспомогательный персонал, стоимость которого иногда составляла миллионы долларов. долларов в год, к тому, где люди могут писать код профессионального уровня на ноутбуке, сидя в кофейне, и многие это действительно делают. (Я арендую офис…) Хотя, что любопытно, ситуация начала меняться на внешних границах вычислительных приложений, где массивные нейронные сети требуют огромных ресурсов, специализированного оборудования и энергопотребления на уровне небольшой деревни (буквально). Но это только крайний случай современных технологий: при хорошем подключении к Интернету большую часть работы можно выполнять на ноутбуке стоимостью около тысячи долларов, а все необходимое программное обеспечение и документация бесплатны.

Так где же это оставить старик?

Я предоставлю молодежи три ключевых преимущества. Во-первых, уровень энергии (и наивного рвения, особенно иллюзий, которые корпоративным плевать на ваше будущее) для тех 36-часовых запоев, которые на самом деле случаются. Даже если они не заканчиваются программистом в безумной мании, нацарапанным кодом на стене, а скорее исчерпанным возбуждением и кодом, который в значительной степени работает, если вы не возражаете против полудюжины кусков неловких кусков, прокомментированных «Нужно». исправить это», тихое исключение трех тестов и шести крайних случаев из набора тестов (шшшш…), и по крайней мере один фундаментальный недостаток дизайна, который не станет очевидным, пока код не будет работать в течение трех лет, но большая часть кода никогда не работает в течение трех лет, и, кроме того, это давно прошло IPO, и поэтому фактически не имеет значения.

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

Но другие технологии могут быть весьма полезными: в мире программирования на Python — Python — это язык программирования, а не только представленный высший хищник в Эверглейдс — большинство презентаций теперь делается с помощью интерактивной системы ноутбуков под названием Jupyter [так в оригинале], которая запускает код вы хотите продемонстрировать в режиме реального времени. Абсолютно круто, и у меня нет проблем с этим подходом, но я просто не вижу смысла тратить время на изучение инструментов, тем более что сейчас я редко представляю что-то.

И, наконец, стоимость: неопытные «кодовые обезьяны», обладающие лишь базовыми навыками, дешевы — и расходуются — и есть много задач, где кодовой обезьяны вполне достаточно. В какой-то момент, когда в моих проектах наступило затишье, я разговаривал с высокопоставленным техническим рекрутером, которого я знал в обществе, и, вероятно, начал бумеровское нытье о моем тогдашнем печальном состоянии, и он вежливо слушал, о, десять секунд, а затем сказал: «Фил, что ты сказал мне, что сделал в прошлом году?» Это не было низким числом. «Места не хотят нанимать вас, потому что вы стары; они не хотят нанимать вас, потому что вы слишком дороги». Глоток.

Но остается одна причина, по которой вы должны нанять чудака, резюмированная квотербеком-чудиком Томом Брэди после победы в пятом Суперкубке:

Теперь у меня есть ответы на тест, — сказал Брейди. Вы не можете удивить меня в защите. Я все это видел. Я обработал 261 игру, я играл во все. Это невероятно сложный вид спорта, но поскольку процессы отлажены и налажены, для любого, у кого есть опыт работы, это не так сложно, как раньше.

[Его команда проиграла в 2017 году, но снова выиграла в 2018 и 2020 годах.]

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

Это была долгая странная поездка. И это все еще продолжается.