Pull to refresh

Valve: как я здесь оказался, на что это похоже и чем я здесь занимаюсь

Reading time14 min
Views63K
Original author: Michael Abrash
Автор оригинальной статьи — Майкл Эбраш, человек и пароход. Для тех, кому лень изучать википедию, отмечу, что это программист с более чем 30-летним стажем работы, который в свое время помог Кармаку сделать Quake, разработал GDI для Windows NT, приложил руку к созданию первых двух версий Xbox, а сейчас работает в R&D-отделе компании Valve.
В своей заметке он вспоминает, как зарождалась индустрия 3D-игр вообще и Valve в частности, рассказывает про свой опыт работы в различных корпорациях, приоткрывает завесу внутренней кухни Valve и ищет новых сотрудников. Статья большая, и я посчитал ее достаточно интересной для того, чтобы перевести на хабр.





Всё началось с Лавины*.

Если бы я не прочел её и не влюбился в идею Метавселенной, если бы она не заставила меня представить, насколько распределенная 3D сеть близка к воплощению в жизнь, если бы я не подумал я могу сделать это и, что более важно, я хочу сделать это, я бы никогда не встал на путь, который в конечном счете привел меня в Valve.

В 1994 году я уже несколько лет как работал на Microsoft. Однажды вечером, когда моя дочка рассматривала книги в магазине Little Professor в Sammamish Plateau, мне посчастливилось заметить Лавину на полке. Я взял книжку, прочитал первые страницы, решил купить и в итоге проглотил её за день. Параллельно я начал задумываться о том, что 80 процентов описанного в ней осуществимо прямо сейчас, и мне захотелось реализовать это сильнее, чем когда-либо вообще хотелось сделать что-то с компьютером — я всю жизнь читал научную фантастику, и вдруг мне выпал шанс превратить её в реальность. Так я попытался начать в Microsoft проект по созданию технологии сетевого 3D.



Примерно в то же время, когда я понял, что мне не позволят запустить этот проект, Джон Кармак, только что написавший Doom в Id Software, приехал в Сиэтл навестить свою мать, и мы с ним пообедали в Thai Chef. До этого мы встречались лично всего однажды, но он знал обо мне по моим статьям про компьютерную графику, которые читал, когда только учился программированию, а еще мы обменивались постами на M&T BBS несколькими годами ранее. В нашу прошлую встречу он огорошил меня предложением перейти в Id; я отказался, потому что был в самом разгаре работы над выпуском Windows NT и потому что Microsoft предоставляла весьма щедрые бонусы**. Я знал, что Кармак снова предложит мне работу, и знал, что снова отвечу отказом, потому что за прошедшее время я еще прочнее обосновался в Microsoft, а бонусы были всё вкуснее. Но Джон не заводил речь ни о чем таком в первые два часа нашего разговора. Он рассуждал о доступных 24/7 игровых серверах в Интернете, о людях, создающих свои собственные уровни и запускающих эти уровни на собственных серверах, а еще о том, как соединить эти серверы, чтобы игроки смогли переходить с одного на другой, не покидая пределов игрового мира. Я понял, что то, что мы обсуждали, на самом деле было Метавселенной — не такой глянцевой, как у Нила, но восхитительно, потрясающе, невероятно настоящей. И когда Кармак наконец подошел к тому, чтобы пригласить меня работать в Id, я уже знал, что не могу упустить шанс быть частью команды, которая делает будущее реальностью.

Работа с Джоном была сродни той сцене в «Матрице», когда Нео обучают боевым искусствам, закачивая их прямо в мозг, одно за другим. Каждый будний вечер я доползал до парковки возле офиса, пытаясь осознать тот абсолютно новый программный мир, который мы с Джоном придумывали, — 3D, клиент-серверный мультиплеер через интернет, моды, скрипты, да что угодно, пока мы были единственными двумя программистами, которые этим занимаются, — и кое-как справиться с получасовой поездкой до дома в Plano. Всё это происходило на сверхсветовых скоростях, у нас совершенно не было времени сесть и хорошенько подумать — Quake вышел спустя всего 16 месяцев после моего появления в компании. И оно того стоило — не только я значительно вырос как программист, но и сам Quake стал судьбоносной игрой; да, не лучшей игрой в истории человечества, но действительно сногсшибательной с технической точки зрения (для которой, определенно, Кармак был потрясающим инноватором и движущей силой), а также игрой, которая дала толчок развитию целого жанра и сообщество игроков которой растет по сей день. К слову, когда я пришел работать в Valve, то обнаружил, что десятки её работников начинали свой путь с моддинга Quake или с работы над играми, которые базировались на движке Quake — и получается, что таким образом я еще и создал свое рабочее место, к которому пришел 15 лет спустя.

В 1996 Id посетили Майк Харрингтон и Гэйб Ньюэлл, которые ушли из Microsoft, чтобы основать Valve, и они хотели лицензировать исходники Quake и построить на них свою первую игру. Никто в Id не был хоть сколько-нибудь заинтересован ни в том, чтобы отдать им исходники, ни даже в том, чтобы просто поговорить с ними, но я знал Майка и Гэйба еще с тех пор, когда работал в Майкрософте (между прочим, Майк очень сильно помогал мне, когда я только начинал работать в Microsoft в 1992, — думаю, я не смог бы выжить в компании без его помощи, — так что на самом деле именно это должно быть началом истории), поэтому я вмешался и посодействовал им в получении лицензии. Это пошло на руку всем участникам сделки, — Id сделали на ней кучу денег, а Valve построили Half-Life из этого кода, — но лично я не получил никакой выгоды (не рассматривая очень далеких перспектив), поскольку вскоре решил покинуть Id. Я планировал вернуться в Microsoft, когда Майк и Гэйб предложили мне стать третьим основателем Valve. После долгих размышлений я решил, что с меня довольно маленьких игровых компаний, и присоединился к Natural Language Group в Майкрософт, где провел отличные год или два, изучая естественные языки, прежде чем понял, что вряд ли доживу до того момента, когда эта проблема будет решена.

Возвращение в Microsoft не было, пожалуй, лучшим из моих решений, но не было и последним. Valve смотрела в будущее; шли годы, я по-прежнему общался со многими сотрудниками компании, и время от времени то один, то другой спрашивал, не готов ли я перейти к ним. Четырнадцать лет спустя (я же упоминал, что Valve смотрела в будущее?) я завершил свою работу над Intel Larrabee. Я знал, что ребята в Valve делают клёвые игры и очень успешны, знал, что в Valve пришли многие из тех, кого я уважаю и с кем мне хотелось бы работать, и этого было достаточно для того, чтобы попробовать. Так я попал в Valve, не зная ничего об их культуре и организации и ожидая более-менее того же, что уже видел раньше.

Я был удивлен.

Valve другие.


Я работал во многих компаниях и во многих ситуациях в течение последних 30 лет. Я был компьютерным консультантом, а также писал книги и статьи в журналы. Я работал в одиночку, вдвоем и в команде над разработкой компьютерных игр. Я работал над операционными системами, драйверами, прошивками, распознаванием естественных языков, игровыми приставками и архитектурой процессоров. Я консультировал и работал в ряде стартапов и небольших компаний, связанных как с софтом, так и с железом, я работал в Microsoft, я работал в Id, я работал в RAD Game Tools. Всё это было интересно, всё это было потрясающим опытом, а кое-что из этого списка было действительно выдающимся. Короче, я видел многое из того, что может предложить индустрия.

Valve другие.

Гэйб рассказывает об этом так. Когда он работал в Microsoft в начале 90-х, он провёл опрос на тему того, какое ПО установлено на компьютерах работников. На втором месте по популярности оказалась Windows.

На первом был Doom.

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

Успех Doom'а наглядно показал, что этот подход больше не работал. Не было особого смысла в том, чтобы делать одну и ту же вещь даже дважды; практически вся ценность сосредатачивалась в воплощении творческого порыва в самый первый раз. После того, как Doom был выпущен, тысячи программистов и художников могли сделать что-то подобное (и многие делали), но никто из них и близко не подошел к такому же эффекту. Проще говоря, если ты программист, возможно, ты вполне способен написать Facebook, или поисковый механизм как у Google, или Twitter, или браузер, и ты определенно можешь штамповать Tetris, или Angry Birds, или Words with Friends, или Farmville, или любую из сотен других чрезвычайно успешных программ. Однако прибыль от такой деятельности будет крайне мала, и в этом вся фишка — в эпоху Интернета софт имеет практически нулевую стоимость копирования и массивные сетевые эффекты, которые приводят к так называемой «спирали положительного фидбэка»***, а следовательно именно тот, кто первым сделает ход, будет доминировать.

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

Полагаю, в глубине души вы не верите в то, что я только что сказал. Признаться, я и сам не поверил, когда услышал об этом впервые. Как компания из 300 человек может обходиться вообще без какого-либо формального менеджмента? По моим наблюдениям, у новых сотрудников уходит около 6 месяцев на то, чтобы полностью осознать, что никто не будет говорить им, что делать, что нет менеджера, который устроил бы им некий обзор происходящего, что в компании отсутствуют такие вещи, как повышение, название должности или хотя бы фиксированная роль (хотя и присутствуют некоторые существенные награды и бонусы в зависимости от ценности человека для компании, основываясь на оценке коллег). Это их, и только их, ответственность: распределять самый ценный ресурс компании — своё время — на осознание, что из того, что они могут сделать, будет наиболее полезно компании, и выполнение этой работы. Затем, если они решают заняться чем-то совершенно иным, ни один менеджер не может помешать им поступить так: они просто перекатывают свое рабочее место (рабочее место — это стол на колёсиках и компьютер на нём) к новой группе и начинают заниматься чем-то новым. (Очевидно, что они должны выбрать правильный момент для таких перемещений и скоординироваться с обеими группами, впрочем, такая координация происходит сама собой, нет никаких четких правил на эту тему и никто её не контролирует). Таким образом каждый человек в команде является соавтором, занимаясь одновременно кодингом, художественной работой, дизайном уровней, музыкой и так далее, в том числе управлением; здесь нет такой вещи, как чистый менеджмент или роль дизайнера или архитектора. И каждая часть компании может моментально поменять направление своей работы, потому что нет менеджеров, которые могли бы цепляться за сотрудников и помещения, нет реорганизации, которую нужно планировать, нет бюджета под каждую конкретную область работы. Это те самые вещи, появления которых Гэйб крайне хотел бы избежать, и именно поэтому никому не предписано ими заниматься.

Сложнее всего осознать уровень доверия. Доверие повсеместно. Все исходные коды доступны каждому через Perforce, и любой сотрудник может отсинкать (sync) и изменить что угодно. Любой может просто прийти и начать работать над тем, что, на его взгляд, имеет значение; Steam Workshop — один из последних примеров результатов такого подхода. Каждый сотрудник может узнать практически что угодно о работе компании и о том, что происходит в данный момент; сама компания абсолютно прозрачна для своих работников. В отличие от многих организаций, Valve не чинит препятствий своим сотрудникам, она просто доверяет им и не стоит у них на пути.

Давайте уясним один момент. Valve не отменила магическим образом все реалии разработки и выпуска программного обеспечения. Все мы люди, так что время от времени в командах возникают споры (порой весьма жаркие) на тему того, как и что следует делать, но люди уважают друг друга и приходят к консенсусам, которые работают. Неизбежно давление и жесткие ситуации непосредственно перед выпуском продукта, особенно когда установлены дедлайны для сертификации на консолях (релизы на ПК намного более гибкие, спасибо Steam). Иногда люди или команды идут по заведомо ложному пути, и тогда их коллеги должны вмешаться и вернуть заблудших на путь истинный.

Точно так же, не думайте, что люди приходят каждый день и рандомно занимаются чем захочется. Компания определенно не одобрит, если программист решит пойти в свободную комнату и плести там соломенные шляпы (однако если он хочет написать утилиту, которая позволит людям плести и продавать виртуальные соломенные шляпы, то всё в порядке). Люди занимаются проектами, а проекты самоорганизуются. Есть лидеры (leads), но они избираются неформальным консенсусом, эта должность не сулит никакого престижа или денежных преимуществ и является временной; лидер — это просто еще один соавтор проекта. У лидера нет никакой власти за исключением тех случаев, когда все согласны, что это пойдет на пользу проекту или необходимо для координации. Команда каждого проекта сама для себя определяет правила тестирования, чекинов, как часто ей встречаться (не очень часто), какова цель и как и когда эта цель должна быть достигнута. И каждый проект не похож на остальные.

Трудно поверить, что это работает, но тем не менее. Я думаю, что этот процесс чем-то напоминает эволюцию, — беспорядочный, со множеством неэффективностей, которых лишены обычные компании, — но он производит удивительные вещи, вещи, которые никогда бы не появились на свет в условиях нормального иерархического менеджмента. Длинный список успехов Valve, зачастую действительно сногсшибательных, является серьезным свидетельством, что гипотеза о том, что креативные люди составляют ключ к успеху, верна, и что Valve удалось построить компанию вокруг таких людей.

И просто чтобы подчеркнуть — это отличное место для работы креативных людей правильного сорта.

Над чем я работаю


Так каким был мой собственный опыт?

Как я уже говорил, когда я начинал работать в Valve, я знал очень мало о том, как устроена их работа, и мое вступление в должность прошло совсем не так, как я предполагал. Я ожидал, что мне вручат солидный кусок технической работы — что-то вроде определения видимости в Source engine или вычисление тумана войны в DotA 2 (которым я всё-таки занимался, но это было побочной задачей — классная небольшая оптимизация, написанная мной в один из дней).

Что я получил в действительности, так это несколько предложений от ребят взглянуть на те или иные области работы, которые могли бы показаться мне интересными, и никакого прямого руководства. Самое большее, что походило на руководство — это то что практически вся команда Source engine работала над оптимизацией Portal 2; раньше я много чего оптимизировал, так что я сказал Джею Стелли, что, пожалуй, вполне могу заняться Portal 2. Джей ответил «да, можешь заняться этим, но так или иначе мы все равно вот-вот отгрузим его». После нескольких подобных комментариев я понял, что он пытается мне сказать: я должен подумать, действительно ли это наибольшая польза, которую я могу принести компании, ведь множество людей, отлично разбирающихся в оптимизации, уже работали над Portal 2, так что намного полезнее было бы подумать о том, какие по-настоящему важные вещи могу сделать я и не может сделать никто другой. Это, а также разговоры с разными людьми в компании, привели меня к совершенно иному образу мышления, который в свою очередь вывел меня в неожиданную область: носимые компьютеры.

Под «носимым компьютером» я подразумеваю мобильный компьютер, с помощью которого сгенерированная компьютером графика и реальный мир перемешиваются в вашем поле зрения; вам не нужно держать дисплей в руках (это как зрение Терминатора). Основой того тренда, что мы уходим от десктопов через лаптопы и нетбуки к смартфонам и планшетам, является стремление иметь при себе компьютер в как можно большем количестве мест, как можно большее количество времени. Логичным результатом такого стремления стал бы компьютер, который был бы при нас постоянно, где угодно — то есть, носимый компьютер, — и я нисколько не сомневаюсь, что это станет стандартом через 20 лет, возможно с использованием очков или контактных линз, хотя я бы предположил, что через какое-то прямое невральное взаимодействие. Еще я уверен, что подходящая платформа для этого появится намного раньше этих 20 лет — возможно, в течение 10, скорее всего, в течение 3-5, потому что ключевым областям — системе ввода, мощности/питанию/размерам, и системе вывода — требуется примерно столько времени, чтобы эволюционировать и позволить носимому компьютеру принять безупречную форму. Но предстоит еще много работы в этом направлении.

Конечно, железо имеет смысл только тогда, когда есть софт, который на нем запускается, и здесь нас встречает огромное количество переплетенных между собой вопросов и проблем относительно того, как именно должна работать такая комбинированная программно-аппаратная система. Каким должен быть носимый интерфейс и как он должен взаимодействовать с системой ввода? Как компьютер должен понимать, где вы находитесь и на что вы смотрите? Когда человеческая зрительная система видит два накладывающихся изображения, одно реальное и одно виртуальное, какое она будет отклонять, а какое — принимать? Насколько полезна будет дополненная реальность и если полезна — то в какой степени мы можем воплотить ее в жизнь в ближайшем будущем? Железо какой мощности нам нужно для работы софта? И многое, многое другое — заметные и глубокие проблемы поджидают нас везде, куда ни посмотри; на самом деле, это напоминает мне работу над Quake (только в больших масштабах), где нам нужно было с нуля придумать 3D-графику, клиент-серверное взаимодействие через Интернет, форматы файлов и практически всё остальное. Более того, я думаю, что у технологии носимого компьютера есть потенциал стать такой же, как Quake, точкой технологического перегиба, после которой всё поменяется.

В сущности, эта технология потенциально является огромным шагом в направлении Лавины. Всё, что имеет начало, имеет и конец: я бы не сидел сейчас в Valve, занимаясь этим, — да и самой Valve не было бы — если бы Лавина не направила мою карьеру в Id.

После некоторых размышлений я пришел к выводу, что может оказаться полезным потратить немножко времени и посмотреть, является ли носимый компьютер проектом, который Valve способна разработать; я пробежался со своими идеями и исследованиями по многим людям, которых уважаю в Valve. Было вынесено заключение, что носимый компьютер — это стоящий эксперимент; главным поводом для беспокойства было то, что этот эксперимент следовало существенно структурировать, чтобы мы могли проводить чёткие тесты на успех/провал и в любом случае получали информацию к размышлению. Никто не говорил мне, что делать, и не было никаких официальных одобрений, которые мне требовалось получить; я собрал все отзывы воедино и, удовлетворенный результатом, просто взял и стартовал проект.

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

Давайте лишний раз уясним, это R&D проект — он никаким образом не произведет на свет никакого продукта в ближайшем времени, да и в отдаленной перспективе тоже. Возможно, из него вообще никогда ничего не получится, так что, пожалуйста, не надо распускать слухи о том, что Steam glasses будут анонсированы на Е3. Это изыскание — примитивная оценка крайне интересной и многообещающей области, и в нем намного больше от исследования, нежели от разработки. Подход Valve — это провести эксперимент и посмотреть, чему мы научимся; провал — это здорово, если мы можем быстро распознать свою ошибку, сделать выводы из нее и двигаться дальше, к следующему эксперименту. Процесс очень быстрый и итеративный, и мы в самом начале. Куда и как далеко ведёт эта тропа, зависит от того, чему мы сможем научиться.

А ещё это зависит от того, кто проводит исследования. Команда разрослась, мы делаем хорошие успехи, но впереди огромная куча материала для исследований, и нам нужно больше умных людей. Намного больше умных людей. Людей железа, людей софта, людей прошивок, людей игр, просто чистых программистов и решателей проблем (problem solvers), индустриальных дизайнеров, инженеров механики, электроинженеров, системных программистов, специалистов по компьютерному зрению, оптических инженеров и так далее.

Возможно, нам нужен ты.

Если тебя действительно захватывает идея нырнуть в мир носимых компьютеров, и ты считаешь себя подходящим кандидатом на эту роль, что ж, именно для этого я и писал свой пост. Мы хотим, чтобы ты был с нами — и ты тоже должен бы хотеть быть с нами; перечитай пост еще раз, если это не так. Черкни мне е-мейл и посмотрим, что из этого получится.

Даже если мой конкретный проект не вдохновил тебя, ты все равно должен серьезно задуматься о работе в Valve. Мы прекрасная игровая компания, прекрасная сеть цифровой дистрибуции и, более того, прекрасное сообщество; у нас есть проекты на любой вкус (фактически один мой рассказ о носимых компьютерах должен был показать тебе, насколько разными штуками мы тут занимаемся), и мы нуждаемся в людях с самыми разными навыками, в том числе (но не исключительно) в аниматорах, художниках, дизайнерах уровней, звуковиках и музыкантах, писателях, веб-программистах, программистах баз данных и вообще любых программистах, специалистах по психологическим исследованиям (research psychologists), специалистах по дата-майнингу и машинному обучению, статистиках, дизайнерах пользовательского опыта (user experience designers), менеджерах по работе с клиентами, hardware-инженеров всех сортов и многих других. А если ты первоклассный экономист, пожалуйста, свяжись с нами. Ты получишь песочницу из 40 миллионов юзеров и уж поверь, скучно не будет.

Если Valve заинтересовала тебя и ты думаешь, что подходишь (в одном из следующих постов я расскажу, на что мы обращаем внимание, когда берем человека на работу), то поторопись написать нам на www.valvesoftware.com/jobs/job_postings.html

Мы ждём — не дождёмся разговора с тобой.

Примечания переводчика:


* — ru.wikipedia.org/wiki/%D0%9B%D0%B0%D0%B2%D0%B8%D0%BD%D0%B0_%28%D1%80%D0%BE%D0%BC%D0%B0%D0%BD%29
** — в оригинале stock options, форма поощрения сотрудников, дающая право покупать ограниченное количество акций компании по фиксированной цене
*** — я не знаю, устоявшийся это термин или нет. Возможно, я не совсем корректно его перевел, поэтому уточняю: подразумевается эффект, когда компания А делает хороший продукт, пользователи загружают себе этот продукт и оставляют положительные отзывы; в свою очередь отзывы приводят к тому, что новые пользователи тоже загружают себе этот продукт, оставляют положительные отзывы и т.д. по спирали. Соответственно, те, кто копирует данный продукт, уже не получают столь же положительных отзывов и не повторяют успеха компании А.
Tags:
Hubs:
Total votes 222: ↑220 and ↓2+218
Comments98

Articles