5 причин, по которым инженеры-программисты являются художниками

Создавайте программное обеспечение, как Гауди, построил Sagrada Família

Саграда Фамилия, все еще в стадии строительства. Бесплатные фотографии на канве

С тех пор как я переехал в Нью-Йорк из Bay Area три года назад, я думал о том, как великие разработчики программного обеспечения производят отличную работу. Может ли мышление и подход Силиконовой долины быть воспроизведены в другом месте? Это привело меня к изучению некоторых высококачественных программных проектов, таких как Apache Spark, Tensorflow и Ethereum. Но так как я путешествовал по Барселоне в прошлом году, меня поразило, что Sagrada Família может быть одним из лучших примеров для изучения.

Вот пять сходств, которые я заметил.

1. Дайте художнику креативное пространство

Если вы хотите построить корабль, не подбрасывайте людей, чтобы собирать дрова и не назначайте им задачи и работу, а скорее учите их стремиться к бесконечной необъятности моря.
- Антуан де Сент-Экзюпери, французский поэт
Базилика делла Санта Каса в Лорето, Италия. Массимо Роселли из Викимедиа

Саграда Фамилия была первоначально задумана Хосепом Марией Бокабеллой, которая, вдохновленная Базиликой делла Санта-Каса в Италии, хотела построить собор в Испании. Гауди получил полную автономию в этом проекте. Он был не ответственным, а архитектором; Исполнитель. Можете ли вы представить, если Бокабелла будет диктовать, какой тип дерева, вырезать из камня и осколки стекла использовать? При таких обстоятельствах Гауди, вероятно, отказался бы от работы, и мы потеряли бы объект всемирного наследия.

Инженеры-программисты также не занимаются выполнением задач - мы решаем проблемы. Мы специализируемся на поиске наилучшего решения для данной проблемы. Вот почему такие технологические компании, как Google и Facebook, не заботятся о том, какие языки программирования вы знаете: они ищут способ решения проблем. Они верят, что их инженеры подберут правильные инструменты для решения данной проблемы, так же как Гауди получил полную свободу в реализации своего видения базилики.

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

2. Нет единственно правильного способа делать искусство; это выражение художника

Здесь нет правил для творчества.
- Лаура Яворски, американский писатель и художник

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

Точно так же не существует единственного правильного способа создания программного обеспечения, просто есть разные компромиссы. Facebook известен наличием единого хранилища монолитного кода. Это гарантирует, что все проекты и зависимости совместимы друг с другом. С другой стороны, у Amazon есть отдельный репозиторий для каждой службы, что позволяет ускорить циклы итераций, поскольку каждая служба запускается независимо друг от друга.

Программное обеспечение также отражает его авторов. Tensorflow, платформа машинного обучения, открытая Google, привлекла сотни тысяч разработчиков благодаря удобству использования, скорости, качеству кода и обширной документации. Эти атрибуты напрямую связаны с основными принципами Google: фокусироваться на пользователях, подчеркивать скорость и стремиться к грандиозности.

3. Вдохновение приходит от постоянных рутин

Талант - это долгое терпение, а оригинальность - усилие воли и тщательного наблюдения.
- Густав Флобер, французский писатель
Одна из трехмерных моделей Гауди использовалась для оценки структурной целостности его проектов.

Народный образ художника часто живет расслабляющим творчеством. Реальность такова, что они развивают рутину и последовательно выполняют. Лауреат Пулитцеровской премии Майя Анжелу каждый день вставала в 5:30 и начинала писать в 7 утра в течение пяти и более часов. Как заключил Микеланджело: «Если бы люди знали, как усердно я работал, чтобы получить свое мастерство, это не казалось бы таким чудесным».

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

Аналогичным образом, в области разработки программного обеспечения вы каждый день отправляетесь на работу, и ̶w problemsr̶i̶t̶e̶ ̶c̶o̶d̶e̶̶ С последовательностью, очень часто вы будете иметь вдохновение, которое приводит к огромному воздействию. Например, группа инженеров взломала программное обеспечение для борьбы с мошенничеством для Paypal. Это привело Питера Тиля к осознанию того, что его можно применить к проблеме, о которой он долго думал: национальной безопасности. Исходя из этого, он стал соучредителем Palantir, которая с тех пор превратилась в компанию с оборотом в 20 миллиардов долларов.

4. Итерируйте с легковесными механизмами перед окончательной реализацией

Творчество требует много идей. Чем больше вы инвестируете в свой прототип и чем ближе он к «финалу», тем сложнее отказаться от концепции, которая не работает.
- Дэвид Келли, основатель IDEO и Стэнфордского университета d.school

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

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

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

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

5. Искусство никогда не заканчивается

Вы не можете ограничить время творчества.
- Доктор Дре, американский рэпер и продюсер
Желтые части модели отражают то, что еще предстоит построить. В 2015 году было подсчитано, что 70% базилики было завершено.

Леонардо да Винчи однажды сказал: «Искусство никогда не заканчивается, только заброшено». На вопрос о медленном продвижении строительства Гауди, набожный католик, ответил: «Мой клиент не спешит». Когда он скончался в 1926 году, было заполнено менее 25% базилики.

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

Точно так же программное обеспечение никогда не бывает действительно полным. Всегда есть дополнительные функции и способы обслуживания пользователей. Очень важно определить, когда что-то готово к выпуску, и в то же время признать, что ничто не может быть полностью усовершенствовано. Показательный пример: даже после того, как Amazon занялась продажей книг в Интернете, она продолжала расширять свои предложения, чтобы улучшить пользовательский опыт, и в настоящее время является крупнейшей компанией розничной торговли в Интернете.

Инженерное дело и искусство часто рассматриваются как противоположные стороны карьеры. Тем не менее, сходство может быть более распространенным, чем вы думаете. Если вы сталкиваетесь с ежедневными задачами кодирования, спросите себя: «Могу ли я подходить к своим задачам более целостно? Предоставляет ли мое рабочее место среду, в которой достаточно пустого пространства, чтобы я мог раскрасить свой творческий потенциал? » Если ответ «нет», я оставляю вам цитату из Смолвиля: «Вы были предназначены для гораздо более важных вещей».

Следите за мной в Twitter @ kenk616, чтобы узнать больше о технической культуре, организационном строительстве и управлении.