Чед Фаулер - Программист-фанатик
Другими словами, барьер, за которым программиста подстерегают неудачи, стал выше. И на первых порах человек работает вполне успешно.
И вот из-за этой направленности на программы, ориентированные на работу в Сети, я считаю, что нужно специально искать проекты с высокой вероятностью неудачи.
А что с копированием? Любой вам скажет, что для превращения в хорошего программиста нужно читать по-настоящему хороший код. Допускаю, что никто не подразумевает чтения в буквальном смысле (это слишком скучное занятие), но все равно такой подход остается, по сути, неверным: ведь он пассивен. Вместо него я предлагаю активно, широко и беззастенчиво заниматься копированием.
Разумеется, это относится ко многим вещам. Хантер С. Томпсон не просто читал хорошие книги; он перепечатывал Хемингуэя и Фитцджеральда. А старейшие из известных рукописей Баха являются переложениями произведений других органистов. Возможно, более известным является тот факт, что Гейтс в Гарварде доставал чужие программы из мусорной корзины.
Понять, как это может помочь, не так уж сложно. Копирование нарабатывает мышечную память. Ты начинаешь чувствовать нюансы и форму оригинала — детали, которые при быстром сканировании теряются.
В случае с кодом есть также менее очевидная — но значительная — выгода. Копирование позволяет продвинуться в проектах, которые с большой вероятностью должны были потерпеть неудачу. Это может быть как непосредственное переписывание реализации хэш-таблицы (что позволило повысить качество первого написанного мною интерпретатора), так и разработка дизайна на основе чьей-то работы (как, скажем, операционная система Linux написана на основе Minix).
В своем лучшем проявлении заколдованный круг из неудач и копирования ведет к постепенному медленному самосовершенствованию. Ты берешься за что-то сложное, сталкиваешься с неразрешимой задачей, копируешь чужое решение и в итоге получаешь представление о том, как следует действовать в подобных случаях.
Среди этого безудержного грабежа, во время которого ты без оглядки поглощаешь различные приемы, зачастую обнаруживается возможность совместить их друг с другом совершенно непредсказуемым образом. Я не совсем понимаю, что имел в виду Пикассо, говоря: «Хорошие художники копируют, в то время как великие художники крадут». Возможно, он сознательно пытался быть порочным, но основной смысл этой фразы именно тот, который я всегда подразумевал.
Программирование переполнено странными идеями. Использование более коротких и менее осмысленных имен часто дает в целом более читабельный код. Наиболее мощные языки обычно поддерживают намного меньше концепций, чем более простые. А неудачи и копирование порой лучше всего ведут к созданию успешной и оригинальной работы.
Часть IV
Маркетинг… не только для бизнесменов
Ты — самый талантливый из известных тебе разработчиков программного обеспечения. Твой творческий потенциал становится источником практически бесконечного потока элегантных проектов. Твоя архитектурная прозорливость не имеет себе равных в рабочем коллективе. Ты пишешь код быстрее и аккуратнее всех когда-либо работавших в этой фирме.
Ну и что?
Многие программисты — особенно наиболее тщеславные — пребывают в заблуждении, считая, что их способности должны быть очевидны любому руководителю или работодателю. Эти ошибочные убеждения они с легкостью прикрывают выдуманными нравственными критериями: мол, они слишком скромны, чтобы продавать свой талант. Лезть из кожи вон, демонстрируя свои способности, они считают подхалимством. Ни один уважающий себя программист в жизни не опустится до подхалимажа перед начальником.
Но это всего лишь отговорка. На самом деле они опасаются.
Большинство программистов — ботаники. В школе они были последними, кого брали в любую команду. Они избегали социальных контактов и с треском проваливались, когда обстоятельства к ним вынуждали. Неудивительно, что такие люди боятся стать объектом критики, демонстрируя кому-либо свои способности.
На минуту отбросим свое неверие и представим, что вся эта чепуха насчет моральных норм не так уж бессмысленна. Какими бы ни были изначальные побуждения, скрывать информацию о своих способностях и навыках глупо. Посмотри на это таким образом: тебя наняли для разработки программного обеспечения, повышающего доход компании. Задача начальника — сформировать рабочие группы, способные принести максимальную выгоду. А как это сделать, не зная, какую работу способен выполнять каждый из подчиненных?
Как мне недавно сказал один начальник, если кто-то делает нечто совершенно фантастическое, но об этом никто не знает, можно считать, что он не делает ничего. Это может прозвучать жестоко, но с точки зрения компании такой подход является вполне осмысленным. Начальник не может пристально следить за всеми действиями своих подчиненных в течение каждого дня. И ни компании, ни их сотрудники не хотели бы, чтобы начальство тратило свое время подобным образом. Компании нужно, чтобы руководитель концентрировался на ситуации в целом, а не на мониторинге отдельных заданий. А сотрудники (особенно программисты) ненавидят, когда каждый их шаг контролируется.
Короче говоря, ты можешь производить лучший в мире продукт, но если ты не сделаешь ему хоть какую-то рекламу, его никто не купит. Мы все знаем — особенно в мире информационных технологий, — что далеко не всегда выигрывает самый лучший продукт. Помимо качества успех на рынке обеспечивается еще массой факторов. Не стоит забывать эту истину, когда речь заходит о рынке труда.
Достаточно… а мне-то что делать?
На первый взгляд маркетинг — это просто. У тебя всего две цели: рассказать людям о своем существовании и дать им понять, что ты тот, кто может решить проблемы, мешающие им спать ночами. Это относится не только к рынку труда в целом, но и к фирме, в которой ты уже работаешь. Не стоит думать, что раз ты уже трудоустроен, руководство знает, что ты собой представляешь. Более того, не стоит полагать, что если начальник помнит твое имя, то он имеет хотя бы отдаленное представление о твоих способностях.
Эта часть книги поможет тебе не только показать начальству, на что ты способен, но и расширит твои горизонты до отрасли в целом. В конце концов, задача этой книги — повысить спрос на твою персону на рынке труда. Поговорим же о том, как на практике поднять свою конкурентоспособность.
Совет 33
Восприятие и репутация
Играть в идеалиста, делая вид, что тебе все равно, что о тебе думают другие, очень удобно. Но это игра. Нельзя позволять себе поверить в нее. Тебя должно заботить чужое мнение. Репутация — это реальность. Смирись с этой мыслью.
Возможно, ты слышал старый философский вопрос: «Если дерево падает в лесу, где никого нет, производит ли оно шум?» Правильный ответ: «А какая разница?»
Я считаю, что падение сопровождается шумом. На метафизическом уровне это не очень впечатляющий ответ, но здравый смысл подсказывает, что шум при этом будет. Однако если звук никто не слышит, то сам факт его возникновения по большому счету не имеет значения.
То же самое касается твоей работы. Если ты сделал нечто сногсшибательное, но этого никто не заметил, можно ли засчитать твое достижение? А какая разница? Никакой.
Оценка деловых качеств никогда не бывает объективной.
Вращаясь в субкультуре индийской бюрократии в области информационных технологий, я удивлялся, почему люди не понимают эту простую истину. Почти все, с кем мне приходилось иметь дело, не понимали, почему имеет значение, к примеру, осведомленность руководства об их деятельности. Если ты знаешь, что работаешь лучше, чем имярек, это должно отражаться на оценке твоих показателей, рейтинге и зарплате. Они обманывали себя, думая, что то, как их воспринимают другие, имеет отношение к истине, какой бы она ни была.
Истина… что это такое? Кто ее определяет? Что такое хорошо, и что такое плохо в широком понимании?
Не бывает абсолютно хорошего и абсолютно плохого, по крайней мере в ситуации выбора лучшего среди творческих личностей. Как определить, что делает хорошей песню? Или картину? У тебя могут быть собственные критерии, но, возможно, я с ними не соглашусь. Они субъективны.
Ужасные отделы кадров, боящиеся рискнуть, в ужасных фирмах, не желающих идти на риск, впустую тратят время, определяя объективные показатели нанимаемых работников. Порой они даже внедряют «объективные» системы оценки. Все члены моей группы в Индии думали, что они хотят быть аттестованными таким способом. Просто потому, что никогда раньше с подобным не сталкивались.