«Мне кажется, что эта компания сделает все возможное, чтобы затормозить финальный релиз», говорит Человек в темно-сером пиджаке, как только Генеральный технический директор вздрагивает. Это хорошо, вы ожидали, что это будет напряженная встреча. «Во-первых, мне нужно было пропустить все через команду безопасности, что заняло пять месяцев», утверждает Человек, «а затем я потратил недели, чтобы получить рабочую среду разработки, поэтому мои разработчики бегали в Starbucks, чтобы проверять свой код…»
Вы слушаете его точно так же, как слушали тех, кто критиковал проект повторного создания архитектуры. Однако его люди обещали новые увлекательные методы хозяйствования, которые помогут преодолеть проблемы, возникшие в результате неудачной реализации технологий давно ушедших лет. Они должны были быть сообразительными, использовать новые инструментарии, привлекать таланты и поставлять код. Кода они поступали на работу, им было известно, что это крупная компания, а не стартап. И что повторное создание архитектуры, для всякого случайного свидетеля, означает провал.
Человек в темно-сером пиджаке, как вы заметили, поправился. Генеральный технический директор, которая ведет несколько проектов с аналогичным положением в компании, похудела.
«Мне сказали, что я смогу, что я должен сделать это правильно», заметил Человек. «Чтобы это не нужно было делать снова через полтора года».
Одним из уроков, который Человек в темно-сером пиджаке пытался донести до вашего сознания, послание, которое важнее для него самого, – это то, что код никогда не может быть создан; после передачи новой платформы со всеми ее взаимосвязанными компонентами, он и его команда будут продолжать работать до конца дней своих. Будут новые сбои, новые свойства, новые потребности. Такие вещи являются побочными эффектами любого роста, а данная платформа, и он настаивает на этом, разработана для масштабирования.
Многие разработчики не могут понять одного простого факта. То, что они воспринимают, как статичное, малоподвижное, изнурительное – среда в которой они работают – в действительности не является статичным. Малоподвижное – да, но это как линкор, который выходит из порта. Разработчики кода не видят, и вы можете убедиться в этом сами, что консервативный мир свободного предпринимательства, который наводит на них страх, не является последствием апатии, а скорее разрядки.
Они не могут видеть, сколько усилий пришлось потратить, чтобы достичь такой стабильности. Там, где они видят препятствия и бескомпромиссность, вы видите крупную сложную систему, через которую протекает поток денег, и куда люди очень боятся вкладывать любые средства, которые могут создать преграду этому потоку.
Теперь вы испытываете некое чувство жалости в адрес создателей кода. Естественно, они унаследуют землю, однако в своей гонке за первенство они растеряют массу данных.
«Я просто хочу закончить», заявляет Человек. Этим он хочет сказать: «Я просто хочу делать то, что мне приказано». Однако большинство сотрудников воспринимает это, как «Я просто хочу уничтожить все, к чему я прикасаюсь. Потому что я – демон Кали, разрушитель передовых методов работы».
Вы соглашаетесь: «Хорошо, я это понимаю. Сделайте для меня следующее». Вы перемещаете свой взгляд на Генерального технического директора, и она утвердительно кивает. «Во-первых, больше никаких конференций».
Он открыл рот, затем закрыл. Он боится, что вы не можете осознать, что он делает, что вы видите только программное обеспечение, а не золотую тесьму, которую будут плести вечно.
Но вы вникаете в суть, посещаете совещания программистов. Это похоже на смартфон, который постоянно совершенствуется, и это хорошо.
Итак, вы продолжаете: «Вы должны позволить мне помочь с наблюдением. Мне нужно, чтобы вы присутствовали здесь каждый день, проходили по комнатам с открытой улыбкой на лице, приветствуя всех присутствующих. У вас сонливый вид. И тем не менее. Во-вторых, мне нужна дата сдачи программы, реальная дата».
В ответ звучит: «В следующем месяце».
Генеральный технический директор называет его имя и кивает головой. Вы продолжаете: «Мы будем над этим работать. С этого момента никаких конференций. И не говорите о рывках, не говорите об этапах и рубежах работы. Говорите с людьми таким образом, будто эта платформа уже существует и работает на протяжении нескольких месяцев. Спросите их, обновили ли они свои списки продуктов».
Время истекло. Генеральный технический директор спрашивает Человека в темно-сером пиджаке: «Все понятно?» «Да», отвечает Человек. Тот факт, что он не задает больше никаких вопросов, означает, что он должен был научиться чему-то. Он выполнил большой объем работ, и сейчас пришло время для него стать частью корпорации и симулировать рабочий процесс.
«Вы можете выбрать язык?», спрашиваете вы. Это для вас. «Мы уже выбрали», отвечает Человек. «Мы пользуемся Node.js. на платформе Express.» «Прекрасно», реагируете вы. «Мне не терпится увидеть код».
7.1 Как вы выбираете язык программирования?
Будьте осторожны с аргументами, которые имеют отношение к скорости программирования. При всех равных составляющих, чем быстрее, тем лучше. Однако ничто и никогда не бывает равным. Вам нужна скорость, которая позволяет создать веб-сайт и быстро запустить его? Или скорость, которая позволяет вращать несколько тысяч многоугольников в режиме реального времени и трехмерном измерении? Вам необходимо преобразовать 10 000 страниц PDF в текстовый формат за один час? Или за один раз 10 миллионов страниц PDF в текст? Это совершенно разные задачи. Что нам необходимо сделать, сколько раз это необходимо выполнить, и какой существующий код нужно использовать, чтобы с его помощью мы могли бы выполнить эту задачу столько раз, сколько необходимо? Задайте себе эти вопросы.
Можно потратить месяцы продуктивного времени для подготовки проекта без того, чтобы выбрать язык программирования. Такое решение может служить признаком хорошей работы менеджера, человека, который допускает, что его подчиненные могут учиться новым вещам, который создал энергичный коллектив, способный экспериментировать с новыми технологиями, а также внедрять идеи в производство. Но это также может означать, что этот человек абсолютно бесполезный в данной ситуации. Вы это поймете!
Предположим, что ваши программисты разрабатывают огромный веб-сайт, обслуживающий 5 миллионов посетителей, каждый из которых посещает сайт пять раз в месяц. Будете ли вы использовать язык Python, который работает медленно, или Go, работающий быстрее, или Node.js, расположенный где-то посредине между ними? Интересный вопрос. Двадцать пять миллионов посещений – это не такая уже и большая проблема, если только они не привлекают некое волшебство, или сложные запросы в адрес базы данных, которые на каждой странице абсолютно разные (хорошим примером может служить Facebook).
В настоящий момент эта цифра не банальна. Если для создания страницы нужна одна минута, то вы потратите 48 лет для создания сайта, то есть скорость будет слишком маленькой. Если одна секунда, то все равно процесс будет медленным, поскольку в месяце всего лишь 2,6 миллиона секунд. Поэтому вам необходимо выяснить, что необходимо сделать, чтобы создать 10 страниц за одну секунду. Вероятно, вам понадобится не один компьютер, небольшой излишек рабочей силы и хороший сервер. Естественно, что нужно потратить время на планирование и саму работу, и это все можно выполнить на любом языке.
Что будет, если вы планируете обслуживать всего лишь несколько сотен тысяч страниц в месяц? Тогда вы можете устроить себе маленькую передышку. Вам не нужно слишком много инженеров для создания системной архитектуры. Вам нужно создать план действий, но в общих чертах вы сможете обойтись чтением блогов и пройти чужим путем. Будем откровенными, вы можете даже и схалявничать. И снова, здесь подойдет любой язык.
А что, если вы захотите включить живой чат на этих страницах и предполагаете, что тысячи посетителей одновременно воспользуются интерактивной перепиской? О, тогда вы начнете погружать свои руки в некогда заброшенный поток. Но это именно та проблема, для решения которой был разработан язык Go. Это инструментарий для создания доступных серверов, в которых применяется максимально возможное количество компьютерных процессоров. Он имеет и другие функции, но это те задачи, в которых Go действительно сияет. Фактически Node.js также хорошо работает с подобного рода сервером, и у Clojure больше емкости. Ах да, Java тоже подойдет. Если у вас возникнет необходимость, то вы сможете воспользоваться даже РНР.
Вот почему выбор языка сопряжен с определенными трудностями. Многие вам могут рассказать, что вы должны использовать максимум возможностей, чтобы выполнить все, что вы задумали. Поэтому вам необходимо выяснить для себя, какой у вас коллектив, какая платформа вам больше по душе, где люди могут быть наиболее продуктивными, чтобы они оставались вместе до завершения проекта. Это тяжелая задача, поэтому большинство руководителей проектов выдвигают общий знаменатель – Java, PHP – поскольку, когда специалисты уходят, с них можно выжать максимум. И это правильно, так как основная масса технологических проектов не нуждаются в оригинальных исследованиях, или фантастических открытиях. Все языки, о которых мы ведем речь, работают прекрасно и для них есть отличные программисты.
Вместе с тем, выбор основного языка программирования является самым важным сигналом от технологической компании. Скажите мне, что ваша программа написана с помощью Java, и я буду полагать, что вы или серьезная фирма, или неинтересная. Применение языка Ruby будет означать, что вы заинтересованы в быстром выполнении проекта. Clojure будет означать, что вы умны. С помощью Python, и я вам уже доверяю косвенным образом. РНР, и мы вместе вздохнем. В C++ или C, и я смиренно кивну головой. На C#, и я улыбнусь и предположу, что у нас нет ничего общего. Fortran? Я попрошу вас предъявить допуск к секретной информации. Эти языки содержат в себе целые цивилизации.
Вы можете определить, насколько хорошо составлен код, с противоположного конца комнаты. Форма кода с расстояния шести метров невероятно информативная. Чистый код является идиоматичным (присущим только определенному языку), самым кратким и очевидным, даже если он не строго задокументирован. Простой и удобный для пользования. Как отмечено в фундаментальном учебнике по программированию, который на протяжении многих лет использовался преподавателями в Массачусетском технологическом институте «Структура и Интерпретация Компьютерных Программ» (Structure and Interpretation of Computer Programs): «Компьютерный язык – это не только способ заставить компьютер выполнять операции… Это принципиально новое формальное средство для выражения идей, имеющих отношение к методологии. Таким образом, программы должны создаваться в первую очередь для людей, чтобы они их читали, и только попутно для компьютеров, чтобы те их выполняли». Великолепная программа – это послание от того, кем вы являетесь сегодня, к тому, кем вы будете в будущем, или личности, которая станет наследником вашего кода. Благородный и гуманистический документ. Конечно, все это прекрасно, но нужно, чтобы оно еще и работало.
7.2 Добро пожаловать в Скрам
Однажды вы заходите в «шарашку», где содержатся программисты. Они начинают работать в 10 часов, и некоторые уже пьют кофе. Большинство из них – мужчины, хотя есть и несколько женщин. Они прохаживаются по комнате, обмениваются информацией о том, что они делали вчера, и какие у них планы на сегодня. Интересуются, есть ли у собеседников блокировки (в программировании «блокировкой» называют ожидание программой данных для обработки, в основном это связано с работой API). Основная масса уже работает. Есть и новенькие – один из Бостона, второй из Венгрии, оба на связи, но говорят с сильным акцентом. Рассказывают аналогичные истории, как и все остальные.
«Вчера я работал над удалением истории использования в учетной записи», говорит бостонец. «Номер 265. Сегодня я пишу тесты составных частей для кода удаления аккаунта. Я не заблокирован. Предлагаю, чтобы Иштван перешел к следующей теме». На линии включается звук, и голос с жестким венгерским акцентом продолжает: «Так, вчера я работал над инструментарием администратора каталога для загрузки программного продукта. Я закончил работу над элементом загрузки изображений. Сегодня я тоже буду создавать тесты составных частей. Я не заблокирован». Человек в темно-сером пиджаке спрашивает: «Иштван, ты уже обновил JIRA?» (коммерческий сервис, который выполняет функцию официального регистратора проекта). Странно слышать, что те элементы, которые вы утвердили в качестве элементов строки, обсуждаются так, как будто они являются реальными и фактическими вещами. Однако, приятно.
7.3 Как руководить работой программистов
На странице Википедии «Процесс разработки программного обеспечения» размещен перечень ссылок на следующие страницы “TDD BDD FDD DDD MDD”—“test-driven development” (разработка через тестирование), “behavior-driven development” (разработка через реализацию поведения), “feature-driven development” (разработка, управляемая характеристиками результата), “domain-driven design” (проектирование, ориентированное на предметную область), и “model-driven development” (разработка на базе моделей). У каждой есть свои сторонники и критики. Я включил этот перечень для вашего общего ознакомления. Если вы хотите получить более детальную информацию о методологии управления, налетайте!
Управление работой программистов – это из ряда вон выходящая дисциплина. Существуют субдисциплины, которые изучают, как общаются между собой разработчики кодов. Самая известная из них – это «Гибкая методология программирования» (Agile methodology). Она призывает к регулярной координации действий программистов, обеспечивая набор обрядов и норм, которые должны выполняться разработчиками, чтобы их программы работали совместно с программами других коллег.
В Agile Manifesto (да, в манифесте) сказано следующее:
▹ Люди и взаимодействие превыше процессов и инструментов
▹ Рабочее программное обеспечение превыше всеобъемлющей документации
▹ Сотрудничество с клиентом превыше обсуждения контрактных условий
▹ Реагирование на изменения превыше выполнения плана
Под этим документом подписалось 17 человек. Существует много вариантов Манифеста. Я пережил тяжелые встречи в своей жизни, когда сидел между двумя группами, и одна из них объясняла со всеми подробностями, почему Agile с системой организации производства и материально технического снабжения Kanban лучше, чем Agile со Scrum. Вы можете прочувствовать запах денежных знаков.
Вот перед вами методология Agile, каким я видел его в действии: Вы разбиваете свой программный продукт на несколько простых для понимания пользовательских историй, о том, кому что нужно. Вы заносите эти истории в систему отслеживания выпусков программного обеспечения, часто это коммерческий продукт типа JIRA. Вы разделяете работу на спринты за неделю, две недели, или любой промежуток времени, который соответствует вашему стилю управления, а затем даете спринту название и цель (внедрить поиск, регистрация пользователя), а затем программисты берут истории для их дальнейшего срабатывания, и за работу.
Каждый день участники вашей команды регистрируются и пытаются разблокировать друг друга. Если вы работаете с инструментарием, который посылает электронную почту, и почтовый сервер не работает, то вы об этом всем сообщаете. Затем кто-то из ваших коллег предлагает помощь, или вы действуете в соответствии с историей и делаете все возможное наилучшим образом, однако каждому нужно работать над достижением цели спринта, предпринимая попытки выпустить программное обеспечение. И как только вы добились результатов, вы создаете нечто, что действительно работает, и переходите к следующей задаче, медленно запуская в эксплуатацию большую сложную систему.
Это идеальный случай. Если все хорошо сделать, то у вас отпадет всякие волшебные мысли на тему: «Все это будет функционировать, когда мы все сделаем и свяжем вместе». У него есть свои критики, и, как мне кажется столько же ответвлений (Scrum, Kanban, и “Agile with Discipline”), что и у протестантизма.
Программисты всю жизнь в поисках оригинального и надежного решения проблемы, и, что хуже всего, они полагали, что нашли его. Вот почему Фредерик Брукс, самый знаменитый из ранних методистов программного обеспечения, написал статью под названием: «Серебряной пули нет – Иммане́нтность и Акциденция в Разработке Программного Обеспечения (No Silver Bullet — Essence and Accident in Software Engineering)». Он написал ее в 1986 году и очень тогда надеялся, что объектно-ориентированное программирование поможет исправить ситуацию.
7.4 «Мы собираемся сделать релиз»
В офис входит Человек в темно-сером пиджаке. В руках у него большая бутылка и ноутбук. Выглядит он невыспавшимся, о чем вы ему с улыбкой говорите.
«Мы должны сделать релиз», говорит он. «Увязли немного прошлой ночью»
Он открывает ноутбук и выводит секретный веб-сайт, который, судя по его заверениям можно увидеть только через границы офисной сети, или через виртуальную частную сеть.
Новый веб-сайт выглядит простым и обыденным. Квадраты налетают на квадраты. Каталог и пункты в каталоге выведены на дисплей, однако изображений нет. В тексте полно странных символов и необычных ошибок. Продукты с названием «фальшивый продукт», «ненастоящий продукт» и «Я ненавижу все продукты».
Здесь отсутствуют «похожие вещи» для покупки, хотя это очень важная деталь, которая является одним из основных источников дохода на данном сайте. Вы подавляете возникший вопрос. Понятно, что этот пункт будет внесен.
Однако здесь предусмотрена возможность войти в систему с помощью имени пользователя и пароля. Человек в темно-сером пиджаке оказал вам услугу, создав учетную запись. Как он утверждает, вы – первый человек нетехнического склада ума, который будет тестировать сайт.
Вы спрашиваете: «Это настоящее?» «Да, это программное обеспечение. Оно взаимодействует с базой данных. Именно это окончательный вариант».
«Взаимодействует ли он с отделом по работе с клиентами?» – спрашиваете вы.
Человек смотрит искоса. Это продолжается секунду, а затем следует ответ: «В июле сделаем».
Мой Бог, новый срок. Вы вычеркиваете один месяц. По крайней мере, это будет служить окончанием предусмотренного срока сдачи проекта.
Он делал, как вы просили. Он руководил, и начал предпринимать попытки испортить все дело обычным путем. Он начал требовать документы у людей, которые сразу и не думали предоставить их. Он просил малознакомых людей предоставить ему их предложения и понимание ситуации. Они охотно отвечали. Они просили логотип был больше. Они просили игры, в которые можно играть внутри приложения. Он слушал их всех. На протяжении многих месяцев он отсутствовал на конференциях.
«Так это настоящий, фактический веб-сайт».
«Да» он отвечает, делая маленький глоток из бутылки со сброженным напитком, приобретенным в магазине диетических продуктов, и этикеткой с рисунком, напоминающим символы буддизма. На стикере указана цена – “$3.99”. Он продолжает: «Теперь у нас следующий рывок. Мы переносим окончание работ на июль, и срок сдачи – середина августа».
У этого человека усталый вид, но с чувством собственного достоинства. Данные на дисплее – результаты деятельности его коллектива, участники которого использовали для этого хороший и современный инструментарий. Это их мастерство, которое доставляет им удовольствие. Человек в темно-сером пиджаке дал им возможность выполнить свою работу. В заключение он сказал: «Мы собираемся сделать релиз».
Они будут проводить стоячие Scrum-совещания (в разговоре просто “stand-up”), после чего перейдут в интегрированную среду разработки программ и будут писать язык JavaScript, который предназначен для выполнения на сервере, и JavaScript, предназначенный для работы со стороны клиента. Затем они проведут несколько испытаний и зарегистрируют свой код в репозитории исходного кода. Сервер непрерывной интеграции (Continuous Integration) осуществит тестирование и проверки, и если все пойдет хорошо, он развернет код в том или ином «облаке». Они настаивают, что они будут делать непрерывные выпуски каждый день.
Затем начнутся отчеты. Отчеты о доходах, аналитические отчеты, перечни новых рынков для захвата, все формы данных о новых клиентах, которые вы будете дробить на части и распределять. В этом будет заключаться ваша роль, как владельца глобальной базы данных намерений клиента. Сначала тысячи, затем миллионы новых фактов, которые смогут помочь компании спланировать циклы разработки и совершенствование продукции, а также товарооборота. Отличная вещь! И вы надеетесь, что новый сайт сможет генерировать больше доходов, будучи быстрее, лучше, со своим API и доступным для интернета, мобильного интернета и многочисленных программ. Вы приняли решение прекратить поддержку платформы BlackBerry. Это жгучий вопрос, но у вас дома в ящике стола этих смартфонов BlackBerry три штуки, а в кармане ни одного. Жизнь идет вперед.
Когда сайт запущен, вы купите торт кодерам и пошлете их на конференцию по JavaScript, на какую они пожелают. Вы усвоили, что единственная подходящая награда для тех, кто пишет JavaScript, – это больше JavaScript. Человек в темно-сером пиджаке получит свой бонус. Генеральный коммерческий директор также рассматривает возможность задействовать его в новых проектах. Вам нравится такая руководительница. Она стала в некотором роде вашим другом.
Вы можете это прочувствовать, заветное слово «Старший». Даже на большом расстоянии. Оно появится в свое время, и вы внесете его перед своей должностью «вице-президент», и все будет хорошо. В этот момент все разработчики улыбаются вам в зале, особенно, кода вы присутствуете во всех обозрениях кодов и фигурируете во время дискуссий, и спокойно стоите среди работающих программистов. Вы знаете некоторых из них по именам, даже если вам стоило бы прикладывать больше усилий, чтобы правильно их произносить. Наверное, ваше будущее принадлежит программному обеспечению.
7.5 Нужно ли нам учиться создавать код?
Я общался с некоторыми своими друзьями, которым уже по 40 лет, и которые проработали всю свою сознательную жизнь в технологической сфере. Я выражал им свое недовольство: «Я был наставником для нескольких миллениалов, и Боже мой. Вся работа только по контракту. И никаких предложений с медицинской страховкой. А у них столько долгов». Они посмотрели на меня с недоумением, и затем один из них сказал: «Этого бы не было, если бы они умели создавать код».
Вы, наверное, создаете коды и делаете это в Excel или таблицах Google. Вы запускаете процессы в определенной последовательности, или выполняете механическую работу, имеющую отношение к поиску и замене символов в большом документе.
Программирование, как карьера может привести к тому, что вы займете достойное место в ячейке общества, которая называется «средний класс». Если вы склонны к такой работе, и она вам нравится, тогда это хороший вариант для плодотворного времяпровождения. А если вас окружают хорошие люди, тогда это сплошное удовольствие – даже у «сухарей» есть чему поучиться. Конечно, это имеет место везде, где работают умные люди. Если ситуация паршивая, то вы, наверное, сможете быстрее найти работу, чем, скажем, писатель или журналист.
Данная отрасль переживает частые взлеты и падения, поэтому вряд ли кто-то может сказать, что произойдет через следующие 10 – 20 лет. iPhone и мобильные устройства создали эпоху технического возрождения для тех, кто программирует языки низкого уровня, как, например, Objective-C, люди, которые беспокоятся о памяти компьютера. Возможно, Интернет Вещей превратит все в датчик. (Вы уже бродите по Диснейленду с браслетом, и датчик отслеживает ваше местонахождение. Вся территория находится в компьютере). Для этого понадобится мышление более низкого уровня. А затем придет черед создавать веб-сайты, писать приложения, и т.д. и т.п.
Вполне вероятно, что работа будет. Однако, это глобальная индустрия, а в Индии проживают тысячи специалистов с дипломами технических вузов и учеными степенями. Некоторые из них длительное время работали в Microsoft, Google и IBM. Те же технологии, которые превратили программирование в огромную суперструктуру, охватывающую весь мир, дали толчок к созданию на ее основе идеальной мировой промышленности. И нет причины, кроме предвзятого мнения, думать, что Мумбай или Сеул не способны создавать крупные сложные комплексы такого же уровня, что и аналоги из Пало Альто или Сиэтла.
Вы должны научиться программировать, потому что новая экономика такая же иррациональная, странная и мучительная, как и предыдущая. Книги и песни в настоящий момент существуют в виде строк баз данных, а фильмы создаются с помощью мощных процессоров, а не проходящего сквозь линзу луча света. Возможно, обучение кодированию поможет вам найти волшебное кольцо – декодер для будущего. Изменение – это та же оптимизация, но только другими словами. Наборы средств для разработки программного обеспечения представляют собой культуру кодирования и воспроизводимы для всего поколения специалистов. Они (наборы средств) воспринимаются также восторженно, как альбомы Beatles десятки лет тому назад. Марк Андрессен, интеллектуал социальной сети Twitter, который помешан на кодировании, а также предприниматель, любящий рисковать, как-то написал, что программное обеспечение съедает мир. Если это правда, то вы должны, по крайней мере знать, что является причиной голода.
Я – именно тот человек в темно-сером пиджаке, который привносит «цифру» туда, где она не приветствуется, и который уверен, что его вариант лучший. Я потратил много времени, чтобы понять, такой подход нежелательный – почему исполнительному директору, редактору или библиотекарю может быть неприятно слушать о том, что его вселенная перевернется потому, что кое-кто держит новую игрушку в кармане. Я не прячу игрушку в карман кого бы то ни было, и вы не должны казнить вестника. Но вестники тоже бывают не без греха.
За исключением серьезных болезней и редких выездов на природу, я ежедневно пользуюсь компьютером на протяжении 28 лет. Я изучаю мир с помощью программного обеспечения. Я научился издательскому делу, используя настольную редакционно-издательскую систему QuarkXPress, а искусство и цвет я изучил с помощью программы Deluxe Paint. Программное обеспечение помогло мне выучить математику и основы статистики. Оно научило меня, как рассчитать расстояние по дуге большого круга, оценивая расстояние между двумя точками на Земле. Я изучил интернет, создавая веб-страницы, а музыку я познал через MIDI. И больше всего, программное обеспечение научило меня программному обеспечению.
Мне нравятся дешевые старые компьютеры больше, чем новые, и мой ноутбук издает скрип, когда я его открываю. Мой дом заполнен книгами и материальными нецифровыми вещами. Однако, первая мысль, которая возникает у меня, когда я должен выполнить задание личного плана, или по работе, это – какой код я могу использовать? Какое программное обеспечение научит меня тому, что я должен знать? Когда я хочу что-то узнать, а соответствующее программное обеспечение отсутствует, вакуум раздражает меня – почему никто этим не занимается?
Над этим вопросом должна подумать Кремниевая Долина, поскольку она оптимизирует функционирование фактически всех отраслей экономики, превращая программное обеспечение и его владельцев в посредников. Долина держит в поле зрения весь мир. Правительство, промышленность, систему социального обеспечения, человеческую сексуальность и сельское хозяйство. Программное обеспечение проникает во все уголки бытия и оказывает на них огромное влияние.
Код разделяет на атомы целые категории существования, которые ранее казались целостными системами. Квалифицированные практики используют подобную способность «взрывчатого вещества» для получения максимальной выгоды. Книжные магазины сегодня существуют в противовес Amazon, а появление электронной книги на Amazon является точкой отсчета для всего мира. Со своей стороны Amazon является не столько продавцом книг, сколько набором задач оптимизации, с которыми сталкиваются системы продаж в цифровом и физическом виде. Microsoft Office определил, как надо работать, затопив весь мир PowerPoint. Услуга вызова такси или частного водителя с помощью мобильного приложения Uber добивается переделать транспортные услуги согласно своему видению. А тысячи интернет-компаний существуют со звездами в глазах и лихорадочным желанием разрушать, разрушать, разрушать!
Я счастлив, что живу в период величайшего роста капитала в истории, в эпоху, когда все наше человечество начало говорить, пусть неуклюже, но языком цифровых абстракций. В то время как рисковые предприниматели ковыляют вокруг подобно птицам, разбрасывая посты блогов и посевные инвестиции в рот своим ожидающим детенышам-разработчикам, все они убеждены, что станут миллиардерами. Это комедия мыслящей личности, которая стала реальностью с помощью логических элементов. Я не настолько умный, чтобы стать богатым, но меня всегда принимают, как почетного гостя. Я надеюсь, что с вами будет тоже самое. Здравствуй, мир!
Пол Форд (Paul Ford), журналист и программист, проживающий в городе Бруклин, штат Нью-Йорк. Он является партнером-учредителем фирмы Postlight в городе Нью-Йорк, которая занимается созданием интернет-платформ и разработкой интерактивных продуктов. Он пишет книгу очерков о веб-страницах, которое издательство Farrar, Straus and Giroux выпустит в 2016 году. Его статья “The Surprising Sophistication of Twitter,” («Удивительная утонченность Твиттера») была опубликована в номере Bloomberg Businessweek от 7 ноября 2013 года. Электронный адрес ford@ftrain.com. Twitter: @ftrain. GitHub: ftrain. Статья снабжена комментариями и внесенными исправлениями. Все вопросы присылайте на GitHub.