Pull to refresh

Основной инстинкт кодера — устранить неэффективные решения отовсюду

Reading time 14 min
Views 6.5K
Original author: Clive Thompson


Адаптация отрывка из книги Клайва Томпсона "Кодеры: создание нового племени и пересоздание мира"

Шелли Чен работала бизнес-аналитиком в компьютерной компании, когда в 2010-м она познакомилась с Джейсоном Хо через общих знакомых. У Хо был большой рост, стройное телосложение и хитрая улыбка, и они сразу нашли общий язык. Хо был программистом, и у него была собственная компания в Сан-Франциско. Он также любил путешествовать. Менее, чем через месяц после знакомства Хо удивил Чен, купив билет на самолёт, чтобы встретиться с ней на Тайване, куда она временно переехала. Вскоре они уже обсуждали совместную поездку в Японию на четыре недели. Чен немного волновалась, поскольку они не были так хорошо знакомы. Однако она решила попытать счастья.

Выяснилось, что у Хо был очень жёсткий и странный план маршрута. Он очень любил лапшу рамэн, и чтобы перепробовать как можно больше её вариантов во время посещения Токио, он собрал список всех лапшичных города и вывел их на карты Google. Затем он написал специальную программу, ранжирующую рестораны так, чтобы парочка могла посетить лучшие рестораны во время посещения достопримечательностей. Он сказал, что это была «довольно традиционная» задача на алгоритмы, тип того, что люди изучают в колледже. Хо показал Чен карту на своём телефоне. Он сказал, что планирует вести заметки, подробно отмечая качество каждого блюда. «Ого», — подумала она восхищённо, хотя и немного подозрительно. «А парень-то слегка того».

Но также Хо был остроумным, начитанным и забавным, и путешествие прошло успешно. Они ели лапшу, пили пиво на матче по сумо, посетили Дворец Императора, остановились в отеле, где снимали «Трудности перевода». Это было начало семилетних взаимоотношений.

Хо много лет занимался такими странными штуками, как оптимизация лапши. Ребёнком он жил в Мэконе (Джорджия), и у него был калькулятор TI-89, как он рассказал мне. Однажды он листал инструкцию и обнаружил, что на калькуляторе можно было писать программы на одном из вариантов BASIC. В результате он научился программировать и воссоздал на калькуляторе игру The Legend of Zelda. На компьютере он выучил Java и после школы пошёл в Технологический институт Джорджии, чтобы изучать информатику. Ему в принципе были интересны абстрактные концепции алгоритмов, но больше всего ему нравилось использовать компьютер для того, чтобы не заниматься повторяющимися рутинными вещами. «Каждый раз, когда мне приходилось что-то повторять, мне становилось скучно», — сказал он мне.

На последнем курсе колледжа Хо основал компанию, которая делала форумы, на которых студенты, изучающие одинаковые курсы в разных колледжах, могли советоваться друг с другом. Предприятие не набрало достаточное количество пользователей, и он его закрыл. Его приглашали на собеседования в такие компании, как Google и Microsoft, но ему там было неинтересно. Он не хотел работать на дядю. Ему казалось, что в качестве наёмного сотрудника он не будет создавать что-то достаточно ценное. Да, конечно, на таком месте ты получаешь зарплату. Но большая часть стоимости труда отходит создателям компании, её владельцам. У него было достаточно навыков для создания своего продукта с нуля. Он только не знал, что именно ему создать.

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

Хо был поражён: неужто технология регистраторов не поменялась с каменного века? «Не могу поверить, что такие штуки ещё существуют», — подумал он. Он понял, что может быстренько сварганить сайт, выполняющий ту же задачу, только лучше. Работники могут отмечаться при помощи телефона, а сайт будет суммировать их часы автоматически. «Не покупай регистратор, — сказал он отцу. – Я тебе его запрограммирую». Три дня спустя он представил прототип. Сотрудники начали использовать его, и, к радости Хо, были в восторге. Эта система оказалась гораздо эффективнее работавшего с бумажками регистратора.

Он выложил веб-сайт, назвал его Clockspot, и через четыре месяца у него появился новый клиент, юридическая фирма. Получив первый платёж, Хо, работавший в библиотеке института, чуть не выпрыгнул из кресла. Он получал деньги за своё ПО! Девять месяцев спустя компания Хо зарабатывала порядка $10 000 в месяц на клининговых компаниях, фирмах, оказывающих медицинскую помощь на дому, и на администрации города Бирмингем (Алабама). Два года он работал без перерыва, улучшая и отлаживая код. В итоге он так хорошо его отладил, что Clockspot работал на автопилоте. Кроме него самого, Хо требовался лишь агент поддержки клиентов, работавший не на полный день. Он получал неплохой доход, и у него было полно времени для путешествий и других интересов. Он оптимизировал эффективность своей жизни.


Джейсон Хо, основатель Clockspot, пытается оптимизировать свои действия при помощи кода

Как любой разумный человек, вы должны были заметить, как софт поглощает мир, согласно известной фразе инвестора Марка Андриссена. Вы видели, как Facebook заглатывал социальную сферу, Uber поглощал городские перевозки, Instagram придал культуре селфи серьёзный импульс, а Amazon доставлял покупки в течение 24 часов. Обычно технологические инноваторы хвалятся тем, что их сервисы меняют мир или делают жизнь удобнее, но в основе всего этого лежит скорость. Всё, что вы делали раньше – искали такси, сплетничали с другом, покупали зубную пасту – теперь происходит быстрее. Принцип Кремниевой долины – взять действие человека и выкрутить на максимум его метаболизм. И, возможно, вы интересовались тем, почему это работает именно так? Почему технари настаивают на том, чтобы всё ускорять, выкручивать до предела, оптимизировать?

Тому есть одна очевидная причина: они делают это по требованиям рынка. Капитализм щедро вознаграждает любого человека, способного улучшить процесс и получить немного маржи. Но с ПО есть и ещё один процесс. Для кодеров, эффективность – это не просто инструмент для бизнеса. Это экзистенциальное состояние и эмоциональная подпитка.

У программистов может быть разный жизненный опыт и политические воззрения, но практически все те, с которыми я общался, получают эмоциональное удовольствие от того, чтобы взять нечто неэффективное – пусть даже немного более медленное, чем нужно – и слегка его подправить. Устранение трения из системы – это эстетическое удовольствие; глаза кодеров горят, когда они обсуждают, как что-нибудь ускорить или как им удалось устранить из процесса надоедливые человеческие действия.

Этому стремлению к эффективности подвержены не только разработчики ПО. Инженеры и изобретатели давно испытывают подобную мотивацию. В ранние годы индустриализации инженеры повышали автоматизацию повседневных задач, поднимая мораль. Инженер был «освободителем человечества от вызывающей отчаяние монотонной работы и обременительного труда», как писал инженер Чарльз Хермани в 1904 году. Фредерик Уинслоу Тейлор — изобретатель "тейлоризма", способствовавшего основанию производственных конвейеров – яростно сражался с «неуклюжими, неэффективными или неправильными движениями людей». Фрэнк Банкер Гилбрет раздражался из-за лишних движений во всём, от укладки кирпича до застёгивания жилета, а его партнёр по производству и жена, Лиллиан Эвелин Гилбрет, разрабатывала кухни таким образом, чтобы количество шагов, необходимых для изготовления слоёного пирога с клубникой уменьшилось «от 281 до 45», как восторженно писали в журнале The Better Homes Manual в 1931-м.

Многие сегодняшние программисты испытали озарение ещё в подростковом возрасте, обнаружив, что жизнь полна невероятно тупых повторяющихся действий, и что компьютеры очень хорошо справляются с ними. (Домашка по математике с её длинным перечнем скучных упражнений вдохновила многих кодеров, с которыми я беседовал). Лари Уолл, придумавший язык программирования Perl, и несколько его соавторов писали, что одна из ключевых добродетелей программиста – это лень, та её разновидность, из-за которой ваше нежелание проделывать механическую работу вдохновляет вас на её автоматизацию.

И в итоге эту ориентированность на эффективность бывает сложно выключить. «Большинство знакомых мне инженеров везде в жизни видят неэффективность, — сказала мне Криста Маби, программист из Сан-Франциско. – Неэффективность в посадке на самолёт, ну или где угодно. Их просто бесят неработающие вещи». Она сама, гуляя по улице, мечтает, чтобы все пешеходы более эффективно использовали тротуары и пешеходные переходы. Джанет Винг, профессор информатики, руководитель Института наук о данных в Колумбийском университете, популяризовала фразу «вычислительное мышление», описывающую то, о чём говорит Маби. В него входит искусство видеть невидимые системы в окружающем мире, набор правил и конструктивные решения, управляющие нашей жизнью.

У Джейсона Хо был талант видеть это и пытаться довести эти невидимые системы до идеала. Я повстречал Хо и Чен в – конечно же – рамэн-ресторане в Сан-Франциско несколько лет назад. Хо управлял проектом Clockspot, хотя он и сам так хорошо функционировал к тому времени, что Хо приходилось работать над ним по нескольку часов в неделю. «Он говорит, что работает 20 часов в месяц, но мне кажется, что я не видела, чтобы он столько работал», — сказала Чен. (С тех пор пара распалась, но они остаются в хороших отношениях). Хо много времени провёл в путешествиях. Однажды он даже чинил поломку Clockspot, находясь в базовом лагере Эвереста.

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

Несколько лет назад Хо решил заняться бодибилдингом, чем бросил себе особенно безумный вызов по оптимизации: насколько он может раскачаться? Он носил с собой в рестораны небольшие весы и взвешивал порции еды. «Он отслеживал абсолютно всё, что ест, в огромной электронной таблице», — сказала Чен. Хо застенчиво показал мне таблицу в телефоне – огромный монстр, где были размечены все ингредиенты питания для спортзала, на 3500 калорий в день. Он ходил в спортзал, и изобретал способы позаниматься в обычных условиях. Если он проходил мимо металлической трубы, он подтягивался. Если проходил мимо мусорного контейнера, то поднимал его за край.

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

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

А в колонках он поставил различные критерии – к примеру, осмысленна ли данная активность, не является ли она просто средством для достижения цели (жизненная важность), можно ли овладеть ей в совершенстве, влияет ли она на несколько аспектов жизни сразу. В строчках «программирование» и «предпринимательство» Хо отметил все клеточки. Дойдя до социальных действий, типа «общения с друзьями и семьёй», он отметил галочку «влияет на несколько аспектов жизни». В клетке «овладеть в совершенстве» он написал «возможно».

Многие люди сочтут это безумием. Идея о возможности систематизации эмоциональных составляющих жизни, или о том, чтобы рассматривать социальную активность как источник неэффективности, для многих будет неприятной. Хо – общительный и дружелюбный, но для некоторых программистов люди с их беспрестанными требованиями могут казаться головной болью, а социальное общение – ещё одной суетой, которую нужно исправить. Эту проблему технари на заре компьютеров обдумывали с некоторым беспокойством. Конрад Цузе, немецкий инженер-строитель, создатель первого действительно работающего программируемого компьютера, говорят, однажды сказал: «Опасность превращения компьютеров в людей не так страшна, как опасность превращения людей в компьютеры».

Однажды вечером я размышлял на эту тему, погрузившись в ветку обсуждения на Quora, в которой десятки программистов делились историями об автоматизации нюансов повседневной жизни. Были там и несколько тревожные, пусть и интересные, истории, о превращении социального общения в задачи типа «настроил и забыл». «Меня достали жалобы от семьи и друзей на тему того, что „Ты нам никогда не пишешь“», — писал один программист, создавший программу, случайным образом отправлявшую всем созданные автоматически тексты. Текст начинался с подходящей фразы «Доброе утро/день/вечер. Эй, {name}, я хотел тебе позвонить», а потом к нему добавлялось окончание «Надеюсь, что у тебя всё хорошо/Буду дома в конце следующего месяца, люблю тебя/Давай поговорим на следующей неделе, когда ты будешь свободен».

На хакатоне в Сан-Франциско программист средних лет с энтузиазмом демонстрировал мне созданное им приложение, отправлявшее партнёру автоматические романтические сообщения. «Когда у вас не будет достаточно времени о ней подумать», — да, он предположил, что эмоциональную недостаточность будет испытывать партнёрша, — «программа сделает всё за вас». Подобные попытки повысить эффективность социализации встречаются повсеместно, вплоть до крупнейших технофирм. У Gmail есть функция автозаполнения писем, поощряющая нас ускорять их написание при помощи алгоритма, составляющего наши ответы за нас.

Лингвисты и психологи давно отмечают ценность фатических актов коммуникации – различных эмоциональных высказываний, используемых людьми в повседневной жизни для того, чтобы другие расслабились или начали их слушать: «Как дела», «Ужасная погода, не правда ли», «Что делаешь вечером». И чем больше я беседовал с программистами, тем больше мне попадалось историй о людях, считающих это раздражающим не хуже песка в механизме.

Кристофер Торп, ветеран, за плечами которого более полудюжины технологических компаний, рассказал мне о «невероятно талантливом инженере», с которым когда-то работал, подходящим под это определение. «Он очень расстраивался, когда мы на встречах шутили, поскольку это была потеря времени. „Зачем мы потратили пять минут, перешучиваясь с 20 сотрудниками офиса? Это рабочее время“. Все смеются, но он считает, что это потеря ценного времени». Шутка отняла время 20 людей! Этот парень тут же начинал брюзжать со своей математикой: «Пять минут по 20 раз, получается, что вы потратили полтора человеко-часа на шутки».

Я, в принципе, симпатизирую стремлению кодеров оптимизировать повседневную жизнь, поскольку и сам испытывал от этого удовольствие. Три года назад я начал работать над книгой по психологии программистов, поэтому я решил возобновить мои занятия программированием – когда-то в 1980-е я баловался этим на Commodore VIC-20 – и покопаться в современных языках программирования вроде Python и JavaScript. И чем больше я игрался с программами, тем больше я начинал замечать неэффективность в ежедневной рутине. К примеру, во время написания книги я заметил, что часто обращаюсь к онлайн-словарям. Они были полезными, но настолько тормозными, что после каждого поиска результаты загружались по две секунды. Я решил написать свой словарь для командной строки при помощи сайта, предлагавшего API для словарей. Поигравшись утречком с Python, я составил скрипт. Я вводил слово в командную строку, и с быстротою молнии получал синонимы и антонимы. Всё было без прикрас, грубо, зелёным по чёрному. Но как же это быстро работало: не нужно ждать, пока браузер загрузит всю эту кашу отслеживающих скриптов и кукисов, забивающих мой жёсткий диск.

Конечно, это не сэкономило мне безумное количество времени. Если, допустим, я искал синонимы в среднем пару раз в час, и если предположить (довольно щедро), что моё творение сэкономило мне по две секунды на поиск, то я, возможно, сэкономил где-то час в год раздражающего ожидания. Вряд ли оно того стоило. И всё же эта скорость согрела мне душу. Каждый раз при поиске синонима мгновенные результаты приносили мне удовольствие. Я вводил себе в вену наркотик эффективности, и это было приятно.

Не успел я оглянуться, как пристрастился к написанию кода для мелких рутинных задач. Я сделал программу для очистки скачанных субтитров с YouTube; ещё одну – для обхода и архивации ссылок, которые я постил в твиттере; одну, проверявшую сайт школы, где учится мой сын, и отправлявшую ему текстовое сообщение, когда его учитель выкладывал там домашку (его достало постоянно обновлять страницу).

Многие мои программки были написаны плохо, и едва работали; я выбирал наиболее простые способы и метод грубой силы. Изучая код реально опытных программистов, я поражался их элегантности. Я мог написать огромную и уродливую функцию для отсева данных, а потом увидеть, как опытный программист расправился бы с ней парой строк кода (работающего быстрее). Журналисты иногда восхищаются огромной базой кода Google – 2 млрд строчек – считая это отражением его мощи. Но программистов объёмами не удивишь. Иногда наиболее продуктивными программистами бывают те, кто уменьшает размер кода, уплотняет и укорачивает его. Проведя три года в Facebook, программист Цзинхао Янь оценил свой вклад в базу кода компании, и обнаружил, что он отрицательный. «Я добавил 391 973 строк и удалил 509 793 из главного репозитория», — писал он в одной из веток обсуждения Quora. (На Quora, оказывается, сидят много программистов). «Так что, если я программировал 1000 часов в год, получается, что я удалял по 39 строк в час!»

Программирование напоминает поэзию, где краткость текста даёт ему силу. «В хорошо созданной поэме каждое слово имеет смысл и цель», — писал программист и писатель Мэтт Уорд в эссе для Smashing Magazine. «Поэт может часами подыскивать правильное слово или отложить поэму на несколько дней, чтобы затем взглянуть на неё свежим взглядом». Среди знаменитых поэм модернистов, вдохновлённых краткостью старого метода стихосложения, хайку, есть произведение «На станции метро» Эзры Паунда:
The apparition of these faces in the crowd;
Petals on a wet, black bough.

[Внезапно появление в толпе этих лиц;
Лепестки на черной от влаги ветке.]
«В двух строках и четырнадцати словах, — отмечает Уорд, — Паунд рисует яркую картину, полную смысла, так и просящуюся к обсуждению учёными и критиками. Вот это эффективность».

В 2016-м я встречался с Райаном Олсоном, ведущим программистом Instagram. Его команда только что реализовала функцию «Истории». Это было массивное обновление. Олсон рассказал мне, как в полном истощении ездил по Сан-Франциско через несколько часов после выкатывания обновления – и видел, как люди уже начали его использовать. «Это было весьма крутое ощущение, — сказал он. – Прошлой ночью я был в спортзале, оглянулся, и увидел, как кто-то использует этот продукт. Не знаю, существовал ли в истории ещё какой-то способ достучаться до такого количества человек», или когда «так мало людей определяли ощущения такого большого количества человек».

Одно дело – оптимизировать свою жизнь. Но для многих программистов истинным наркотиком является изменение жизни всего мира. Сам по себе масштаб приносит радость; завораживает то, как ваш новый код внезапно обретает взрывную популярность, от двух людей к четырём, от четырёх к восьми, и от них до всего населения Земли. Вы ускорили некоторые аспекты жизни – как мы обмениваемся сообщениями, платим по счетам или делимся новостями – и видите, как волны расходятся всё шире.

Часто именно так зарабатываются состояния в мире ПО, так что этому сопутствует и мандраж власти и богатства. Венчурные капиталисты вкладываются в проекты, которые, по их мнению, будут расти, как сорняки, и рынки их вознаграждают. И эта взаимосвязь мотиваций даёт программистам Кремниевой долины, обожающим эффективность, не только масштабное удовольствие, но и навязчивое стремление к его достижению.

Среди элиты Кремниевой долины часто встречается презрение к вещам, которые невозможно масштабировать. Мелочи могут казаться слабостью. Несколько раз в беседах с крупными технарями я упоминал компанию Джейсона Хо, объясняя, что она показалась мне умным и восхитительным предприятием, прекрасным примером предпринимателя, натолкнувшегося на нерешённую задачу. Но они морщились. Для них Clockspot был «бизнесом, связанным со стилем жизни» – на их жаргоне это означает идею, которая никогда не взлетит достаточно высоко. Они говорят, что это неплохой продукт, но его может скопировать Google, и за секунду отобрать его бизнес.

Мы, очевидно, получаем свои преимущества от нервного, инстинктивного желания программистов ускорять всё вокруг и создавать изобилие. Но у одновременного неустанного желания достигать эффективности на масштабе есть и побочные эффекты. Новостная лента Facebook ускоряет не только показ фотографий френдами, но и распространение дезинформации. Uber оптимизирует поиск такси для пассажиров, но переворачивает экономику таксистов. Amazon готовит доставку электроники дронами, летящими над улицами, лишёнными магазинов.

Возможно, мы – люди, чьи жизни так неотступно улучшают – начинаем, наконец, замечать эти последствия. Мы всё больше жалуемся на «Большие технокомпании», замечаем, как они обходят гражданские проблемы, как одновременно очаровывают и бесят. Мы не знаем, что с этим делать; нам нравится удобство, то, как ПО постоянно заявляет, что мы можем сделать больше, вкладывая меньше. Но сомнения постепенно накапливаются.

Возможно, нам становится неприятно оттого, что мы в своей повседневной жизни тоже впитали романтику гипероптимизации. Посмотрите на улицы городов: сотрудники слушают подкасты на полуторной скорости, торопясь на работу, удостоверяясь при помощи Apple Watches в том, что сделали свои 10 000 шагов в день, просматривая рабочую почту под столом в кафе. Мы сами стали похожи на кодеров, настраивая каждую шестерёночку нашей жизни с целью удаления трения. Как любой хороший программист, мы можем неимоверно ускорить машины наших жизней, хотя неясно, будем ли мы от этого счастливее.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+17
Comments 3
Comments Comments 3

Articles