habrahabr

Как меня едва не уволили из Apple (в первый раз)

  • пятница, 22 августа 2025 г. в 00:00:14
https://habr.com/ru/companies/ruvds/articles/938770/
The author at Apple in December, 1995.
Я в Apple в декабре 1995 года.

Я устроился в Apple в октябре 1995 года. В это время Apple кружилась в сливном отверстии раковины, готовясь отправиться в канализацию. Возможно, вы помните все эти разговоры о том, что Apple скоро закроется. Немного странно, что она продолжала нанимать сотрудников, но, очевидно, в Apple считали, что им всё равно нужен ещё один «графический инженер» для работы над технологией QuickdrawGX. Тогда мне был 31 год, я жил в Канзасе и программировал игры для Macintosh. Разумеется, в компании решили, что я хорошо подойду на эту должность.

Процесс собеседования оказался для меня совершенно неожиданным и новым (подробно о нём написано здесь), но в конечном итоге мне предложили работать графическим инженером QuickdrawGX в Apple Computer, Inc.

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

Впрочем, постепенно (примерно через полгода) я, так сказать, вошёл в колею и начал справляться с работой немного увереннее. Но вскоре я всё равно понял, что по-прежнему остаюсь недисциплинированной деревенщиной, не совсем отвечающим стандартам Профессиональной Корпорации™.

Вскоре после моего прихода в компанию проект QuickdrawGX расценили провалившимся, меня перевели в новую команду (ColorSync) и чуть позже выдали новый проект. У Apple было стандартное окно, в котором пользователь мог выбирать цвет, оно называлось Color Picker («Палитра»). Кроме того, в то время Apple начинала переход с чипов Motorola 68K на новые, более быстрые чипы PowerPC (PPC). Моя задача заключалась в том, чтобы проект Color Picker, написанный для чипов 68K, компилировался для новой архитектуры PPC.

Палитры

Original HSL and RGB color pickers.
Палитры выбора HSL и RGB (при создании частично использовался ассемблер). Как я объясню ниже, мне не очень нравится параметр «lightness» (светлота), потому что среди прочего яркий цвет находится в центре ползунка. Не особо интуитивно понятно.

Окно Color Picker имело модульную архитектуру с двумя палитрами: HSL (Hue, Saturation и Lightness) и RGB (Red, Green, Blue). Большая часть палитры HSL была написана на ассемблере, что позволяло нам очень быстро рендерить на экране цветовой круг, даже если пользователь перетаскивал ползунок Lightness в реальном времени. Ассемблер — это язык программирования, рассчитанный на конкретный небольшой список чипов. В данном случае код изначально писался для семейства чипов 68K компании Motorola. Чтобы палитры компилировались для новых чипов PowerPC, ассемблерный код необходимо было заменить новым.

Я ни разу не написал ни строки на ассемблере, поэтому можете представить мой восторг. Приведу не совсем точную аналогию: представьте, что вам дали книгу на китайском и попросили перевести её на английский, а китайского вы не знаете. Ладно, пусть это было не так сложно, но, думаю, вы получили представление о проблеме, которую мне предстояло решить.

В целом, могу сказать, что мне это удалось — я переписал ассемблерный код на C (знакомом мне языке), и PowerPC без проблем начали отображать цветовой круг HSL. Чипы PPC были настолько быстрее 68K, что часть ассемблера и не требовалась.

Стоит отметить, что отдавать проект Color Picker «новичку» было довольно жестоко — так случилось, потому что за него не хотел браться никто другой. Мне кажется, это свинство. Может, я слишком прямолинеен, но ведь так и есть.

И хотя я часто подчёркиваю, что многие из инженеров, с которыми я работал в Apple, были программистами гораздо лучше меня, нужно сказать, что именно я был тем, кто не отказывался ни от какой работы. Достаточно часто я находил способы получать удовольствие от самых неприятных задач.

Однако в Color Picker присутствовали и другие сложности — множество новых и непонятных для меня процедур обратного вызова. Я точно должен был гарантировать, что не поломаю ни одну из этих процедур. Так как проект был модульным, я решил, что удобнее всего разбираться в устройстве обратных вызовов будет, написав собственный Color Picker. Часто написание кода с нуля даёт гораздо более глубокое понимание, чем изучение уже готового кода, который писал не ты. Если вернуться к моей аналогии с китайским, это похоже на изучение языка с погружением — я как будто поехал в Китай и изучаю язык, проживая его.

Мне не нравилось цветовое пространство HSL, я предпочитал HSV (Hue, Saturation, Value, тон, насыщенность, яркость), потому что при рисовании графики мне удобнее было думать о цвете в этих категориях. Поэтому я сразу решил, что буду писать палитру HSV.

My HSV color picker.
Моя палитра HSV

Когда мой Color Picker наконец заработал, я ощутил, что этот проект мне интересен. Наверно, поэтому я написал ещё одну палитру. В то время World Wide Web (www) была довольно новой, но набиравшей популярность технологией, поэтому я, естественно, подумал о палитре HTML. И эту задачу я тоже решил. Она была более-менее похожа на палитру RGB, но в ней использовались шестнадцатеричные значения, а комбинированное строчное RGB-значение вида «#FFCC33» мог легко скопировать веб-дизайнер.

My HTML color picker.
Моя палитра HTML

На волне успеха я решил написать «карандашную палитру». К этому моменту мой Color Picker уже работал, и я достаточно хорошо в нём разобрался. Мне просто нравилось этим заниматься.

My crayon color picker.
Моя карандашная палитра с 60 карандашами. Исходный (Original) и новый (New) цвета отображаются, как штрихи с небольшой долей случайности. Коричневые, тёплые и холодные серые цвета находятся в переднем ряду карандашей. Насыщенные (яркие) тона находятся в следующем ряду, дальше идут всё менее насыщенные (пастельные) карандаши. Разумеется, на последнем ряду находятся нейтральные серые оттенки.

Честно говоря, в то время именно эта атмосфера работы нравилась мне в Apple больше всего. Управляли кораблём инженеры. Как говорилось выше, я написал палитру HSV, потому что мне казалось, что это цветовое пространство понятнее для художников. Я написал палитру HTML, потому что недавно появился веб. А карандашную палитру я написал, потому что считал, что именно в этом смысл Apple: HSL и RGB — это для технарей, а большинство пользователей выбирает цвета из коробки карандашей.

Я забыл о палитре CMYK и вспомнил о ней, только изучая скриншоты для этого поста. Подозреваю, что большой вклад в неё сделал Дэвид Хейворд. А поскольку большая доля пользовательской базы Apple составлял печатный рынок, добавление палитры CMYK имело смысл с точки зрения маркетинга.

Палитра CMYK. Цвета указаны в процентах, такая система часто используется в печати.
Палитра CMYK. Цвета указаны в процентах, такая система часто используется в печати.

И, к моему удивлению, Apple всё это выпустила в готовый продукт. Обо всех этих изменениях не просил ни один человек из отделов маркетинга и дизайна. Но мы, инженеры — не просто программисты, а ещё и пользователи, и часто у нас есть интуитивное понимание того, что нужно другим пользователям Macintosh. Мы сами знали, чего хочется нам. Я писал то, что сам хотел бы видеть, как пользователь.

Пасхалки

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

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

Наверно, вы подумали: «Ага, так вот почему его едва не уволили», и будете правы.

Не знаю, было ли ошибкой то, что я попытался спрятать в Color Picker пасхалку. Это тонкий вопрос, ведь их по природе своей держат в тайне. Нужно ли спрашивать разрешение на добавление пасхалки? Или положиться на судьбу и потом просто попросить прощения? Думаю, правильнее всего рассказать об идее пасхалки нескольким разработчикам, и убедиться, что им она понравится. Наверно, не стоит и говорить, что я так не поступил.

Что же это за пасхалка, навлёкшая на меня проблемы? Это были несколько строк из стихотворения Т. С. Эллиота «Любовная песнь Дж. Альфреда Пруфрока»:

«We have lingered in the chambers of the sea
By sea-girls wreathed with seaweed red and brown
Till human voices wake us, and we drown».

[«Мы грезили в русалочьей стране
И, голоса людские слыша, стонем,
И к жизни пробуждаемся, и тонем». Перевод А. Сергеева]

Этот текст был разнесён по нескольким ресурсам в палитрах и использовался в качестве имён ресурсов. Имена этих ресурсов, например, имена файлов картинок на веб-странице, были невидимыми для пользователя. На них мог наткнуться тот, кто исследовал бы ресурсы Color Picker. Разумеется, кто-то в Apple просматривал все строки, сохранённые в сборку операционной системы, и нашёл стихотворные строки.

Пасхалка казалась мне скромной и ненавязчивой. Я ошибочно предполагал, что стихотворение находится в общественном достоянии, но как бы то ни было, пара строк казались мне «допустимым добросовестным использованием». Однако я всё равно должен был понимать, что Apple Computer Inc. крайне старалась избегать нарушения копирайта. (Кто-то может вспомнить, как у Apple возникали проблемы из-за прав на интеллектуальную собственность). Но, как я уже говорил выше. Тогда я был не очень осведомлён о юридических хитросплетениях, с которыми сталкивается Корпоративная Америка, поэтому по глупости подверг опасности релиз целой операционной системы Apple.

К счастью для меня, Apple проблему обнаружили до того, как ОС была записана на диски и выпущена.

Меня вызывают на ковёр

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

Всего этого я не помню, но я сразу понял, что крупно облажался, и что на кону стоит моя работа.

Помню, как встретился с руководителем разработки ОС. Это был интересный человек родом из славных ранних деньков Apple — мы часто видели, как он приезжал и уезжал из Apple на своём мотоцикле Honda Goldwing. (Теперь у него есть YouTube-канал, наверно, он завёл его после выхода на пенсию).

Он устроил мне взбучку. Помню, как он объяснял мне, сколько CD пришлось бы уничтожить (их тогда уже записали?) и их стоимость. Кажется, я вяло оправдывался тем, что предполагал отсутствие проблем с копирайтом, но он меня не слушал. После моей маловнятной защиты я позволил ему пропесочить меня и более-менее смирился с тем, что меня ожидало.

Возможно, он спросил, что, по моему мнению, со мной случится, или, может быть, что должно случиться. Я смутно помню, что признал серьёзность проступка и то, что на кону моя работа. Я честно сказал ему, что если мне удастся сохранить работу, то ничего подобного больше не повторится.

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

Очень неприятно осознавать, что безрассудность, свойственная нам в молодости, остаётся с нами. Подобные проступки в профессиональной среде наподобие компании Apple подобны бестактному поведению в кругу семьи, которая демонстрирует всем гостям твоё плохое воспитание. Внезапно я оказался Элизой Дулитл, подставил себя и подвёл команду.

Это был не последний случай, когда я показал свою нехватку знаний о поведении «белых воротничков». Например, много лет спустя после моего трудоустройства в Apple мой начальник спросил меня, почему я не откладываю деньги на 401k. «Что это?», — спросил я. Оказалось, что первый день работы в Apple я должен был потратить на адаптацию к компании, где бы мне, вероятно, рассказали об 401k, и показали, где нужно указать процент зарплаты, который я хочу на неё откладывать. Разумеется, я прогулял этот процесс и пришёл сразу в рабочий офис. (В то время мой руководитель должен был узнать об этом и отправить меня на адаптацию. Это была ещё одна ситуация, в которой я вообще не знал, как себя вести.)

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

Другие пасхалки

Как я и сказал, в результате меня не уволили. И по сей день мне непонятно, почему. Возможно, руководство Apple не видело в этом смысла. А может, оно решило, что я заслуживаю второго шанса и что один раз облажаться может каждый. Может быть, меня спас мой начальник. Этого я не знаю.

В палитрах были и другие пасхалки, никак не связанные с правами на интеллектуальную собственность. Время от времени карандаши в карандашной палитре оказывались сточившимися или поломанными. Это никак не влияло на функциональность Color Picker, но выглядело довольно мило. Кажется, все карандаши обновлялись на Рождество (нам подарили новую коробку карандашей!).

Ещё можно было хитрым образом включить отображение альтернативных названий цветов карандашей. Это были анаграммы имён инженеров команды. Единственная, которая мне запомнилась — это «I Born Short».

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

Дополнение: похоже, они дожили до релиза.

My daughter at Apple.
Коллега, начальник и моя старшая дочь (с карандашами) на совещании в Apple примерно в 2000 году. Это было в лаборатории ColorSync, которую мы называли «Dithering Heights».

Эпилог

Когда компанию NeXT купила Apple, меня немного удивило то, что какому-то инженеру, похоже, дали задачу перенести карандашную палитру с Mac на раннюю версию Mac OS X. Думаю, лишь тогда я осознал, что эту палитру наконец-то «легитимизировали». Непонятно, почему от неё не отказался Стив Джобс.

Мысль в заключение: до меня дошло, что если бы Apple действительно закрылась в 1996 году или позже, то короткая цитата из Т. С. Эллиота стала бы своего рода некрологом. Возможно, когда я писал этот текст, ощущение «надвигающейся угрозы» подспудно владело мной.