Першокласні хакери

Автор: Пол Грем


Липень 2004

Кілька місяців тому я випустив книжку *, у відгуках на яку часто зустрічалися слова «провокаційна» і «суперечлива», щоб не сказати «ідіотська».

*) Мова йде про книгу "Хакери і живописці" ".

Я не збирався писати суперечливу книгу. Швидше навпаки, я хотів зробити книгу стисненою і конкретною. Я не хотів би витрачати час читачів на виклад вже відомих їм речей, а написати лише про те, що, як мені здається, могло б виявитися новим і цікавим для моїх читачів. Але, мабуть, такий підхід до справи загрожує обернутися мало не скандалом.

Едісони

Серед рецензентів немає суперечностей з приводу того, яка з ідей у книзі найбільш суперечлива. Очевидно, це припущення про те, що розшарування суспільства за рівнем доходів, повинно бути, зовсім не така велика проблема, як представляється на перший погляд.

Я не стверджую, що значний розрив у добробуті сам по собі хороший. Однак він може бути ознакою правильної організації суспільства. Як, наприклад, немає нічого хорошого в мігрені, але якщо мова йде про струс мозку, то головний біль є перша ознака одужання.

Відмінності в рівні доходів можуть відображати відмінності в продуктивності, і це добре, оскільки, якщо в суспільстві всі працюють однаково, то це, швидше за все, не тому що кожен там талановитий як Томас Едісон, а швидше, тому що в такому суспільстві немає жодного Едісона.

У традиційних, невисокотехнологічних спільнотах не виявляється помітних відмінностей у продуктивності його членів. Візьмемо до прикладу якесь первісне плем'я мисливців-збирачів. Наскільки продуктивнішим виявиться найкращий збирач? Ну, скажімо, рази на два. А ось з появою досконалих інструментів, на кшталт комп'ютерів, виявляється, що можливості окремих людей зростають неймовірно!

Все це відомо давно, в 1974 році Фред Брукс опублікував результати дослідження на дану тему, проведеного ще в 1968 році. Зараз мені здається, що він недооцінив відмінності, що існують серед програмістів. Він оцінював продуктивність програмістів у кількості рядків коду, які ті були здатні виробити, або в часі, витраченому на вирішення завдання - кращі програмісти могли вирішити завдання в десять разів швидше колег. Але що, якщо завдання не поставлено зовсім? У програмуванні, як і в багатьох інших галузях людської діяльності, проблема полягає не стільки у вирішенні завдань, а в їх формулюванні. Важко точно оцінити розвиненість уяви, але на практиці саме ця оцінка продуктивності програміста виявляється більш точною.

У будь-якій галузі діяльності продуктивність людей розрізняється, проте в наш час існують кілька родів занять, в яких неспівпадіння можуть бути разючі. У програмуванні такі кількісні відмінності переходять в якісні, хоча, мабуть, не тільки в нім. Де б то не було, технологія нарощує розкид в рівні продуктивності, а в програмуванні - в першу чергу. Таким чином, мені здається, що поступово продуктивність людей, зайнятих в інших областях, буде різнитися все більше. І зрештою, успіх компаній і навіть країн буде все більше залежати від того, як ті справляються з цими розкидами в продуктивності.

У міру того як продуктивність розрізняється все більше завдяки сучасним технологіям, внесок найбільш успішних співробітників виявиться не тільки непропорційно великим, але і продовжить з часом рости. Досягнувши стану, коли 90% продукції забезпечується 1% населення, спільнота стає вразливою, якщо будь-які несподіванки (на кшталт набігу вікінгів) знижують продуктивність найбільш корисних членів спільноти.

Якщо ми бажаємо витиснути максимум користі з найбільш продуктивних людей, нам слід уважніше до них придивитися. Що рухає ними в їхній діяльності? Чого вони потребують для виконання роботи? Як розпізнати найбільш продуктивних людей? Як залучити їх до роботи? І, нарешті, як самому стати одним з найпродуктивніших людей спільноти?

Не тільки гроші

Коли я намагаюся зрозуміти, що ж спільного у того невеликого числа першокласних хакерів, з якими я знайомий, то найпершою схожою їх характеристикою виявляється любов до заняття програмуванням. Рядові програмісти працюють, в основному, заради грошей. Видатні хакери вважають свою роботу одним з найбільших задоволень, а те, що хтось ще й платить їм за роботу, шанують за удачу.

Іноді кажуть, що першокласні хакери байдужі до грошей, але це не цілком вірно. Правильно тут те, що пріоритетом у видатних програмістів є привабливість завдання. З іншого боку, маючи достатньо грошей, можна було б працювати над будь-яким, за власним вибором, цікавим завданням, а така перспектива приваблює першокласних хакерів. Однак поки доводиться працювати за гроші, хакерів більш займає цікавість завдання, ніж розмір зарплати.

І це найважливіший, з економічної точки зору, факт, оскільки в такому випадку немає необхідності платити першокласному хакеру стільки, скільки насправді коштує його робота. Видатний програміст може бути в десять або сто разів продуктивніше, ніж його рядовий колега, але він буде щасливий заробляти хоча б рази в три більше. Далі я поясню, що частково цей феномен пов'язаний з тим, що першокласні хакери просто не знають, наскільки добре вони виконують свою роботу. Але це все ж ще й тому, що гроші - не головна їхня мета.

Так що ж потрібно хакерам? Як і будь-який майстер своєї справи, вони люблять якісні інструменти. А в програмуванні це особливо важливо. Хороші програмісти просто не виносять неякісних інструментів. Вони, швидше, зовсім відмовляться брати участь у роботі над неправильно організованим проектом.

Коли я працював в одному стартапі, в офісі на дошці оголошень серед усього іншого висіла рекламна листівка фірми IBM, на якій був зображений комп'ютер серії AS400, а напис поверх свідчив щось на зразок: «Зневажаємо хакерами» *. Справа в тому, що вибираючи інструменти для роботи над тим чи іншим проектом, ви приймаєте не тільки і не стільки технічне рішення. Ви також вибираєте ще й спільноту, яка сформується для роботи над проектом, а це, як видається, ще важливіше.

*) Чесно кажучи, я повинен зазначити, що IBM виробляє цілком пристойні комп'ютери. Я написав цю статтю на ноутбуці IBM.

Уявіть, що ваша компанія вирішила розробити якусь нову програму. Здавалося б, у наш час для нових розробок слід використовувати мову Java. Але вибравши мову, ми автоматично вибираємо і спільноту розробників. Програмісти на Java, яких ваша компанія зможе найняти для роботи над проектом, виявляться, в середньому, гірше підготовлені, ніж розробники мовою Python *. А якість інженерів, які працюють над проектом, ймовірно, важливіше використовуваної мови програмування. Між іншим, якщо говорити чесно, той факт, що першокласні хакери воліють мову Python мові Java, крім усього іншого, ще й характеризує відносні якості цих інструментів програмування.

*) Коли Google запрошує на роботу програмістів на Java, вони ще й вимагають досвіду програмування мовою Python.

Люди бізнесу воліють найбільш популярні мови, тому що розглядають їх як стандарти. Керівники компанії навряд чи підуть шляхом фірми Sony, чий формат відеозапису Betamax свого часу програв у конкурентній боротьбі формату VHS, який, на відміну від Betamax, ліцензувався багатьом незалежним виробникам. Але справа в тому, що мови програмування - це не просто стандарти. Якщо вам потрібно переслати біти даних з точки А в точку Б, ви, ймовірно, використовуєте найпоширеніший у наші дні спосіб, протокол TCP/IP. А ось з мовою програмування ситуація складніша, оскільки вона не тільки інструмент, але ще й середовище для творчості.

Я десь читав, що мова Java не так давно стала найпопулярнішим інструментом програмування, випередивши за популярністю «Кобол». Для мови, як стандарту, це, безумовно, великий успіх. Але в якості середовища для творчості мові Java ще є, чого прагнути. З усіх знайомих мені видатних програмістів я знаю тільки одну людину, яка добровільно вибрала б мову Java для роботи. Та й то, у зв'язку з тим, що ця людина працює у фірмі Sun Microsystems.

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

Кілька років тому один мій приятель, інвестор, розповів мені про плани фірми, з якою був пов'язаний. Їхні перспективи виглядали цілком райдужно. Через деякий час, коли я знову зустрів цю людину, виявилося, що керівництво компанії вирішило розробляти свій продукт для Windows NT, і що вони найняли досвідченого NT розробника в якості провідного інженера проекту. Тоді я подумав, що ця компанія приречена. По-перше, навіть досвідчений розробник для Windows NT не може бути першокласним хакером, так як для того, щоб набратися досвіду програмування для Windows NT, необхідно добровільно і неодноразово використовувати цю платформу, а я не можу собі уявити видатного хакера за цим заняттям. І по-друге, навіть якщо виявиться, що програміст для Windows NT дійсно хороший, то йому виявиться непросто підібрати команду першокласних хакерів для участі в програмуванні для Windows NT *.

*) Вони справді були приречені. Та компанія закрилася через кілька місяців.

Останній оплот

Говорячи про інструменти першокласного хакера, наступним за важливістю після програм, мабуть, виявляється його офіс. У великих компаніях місце співробітника в офісі підкреслює його становище в службовій ієрархії. Але для хакерів офіс - це ще й місце, де вони працюють над вирішенням завдань. Змушувати першокласних хакерів працювати в галасливій і відволікаючій обстановці - все одно, що фарбувати автомобілі в запиленому приміщенні.

Герою коміксів Ділберту було що сказати про кубикли *. Всі мої знайомі хакери не люблять їх. Одна тільки перспектива в будь-який момент виявитися відірваним від вирішення складної проблеми яким-небудь проходить повз співробітником не дає хакерам почати складну роботу в кубиклі. В результаті, їм залишається працювати вдома або приходити в офіс до або після робочого дня або у вихідні, коли в офісі нікого немає. Дивно, що великі компанії не помічають цієї проблеми. Адже офіс призначався для комфортної роботи, а зовсім не для створення додаткових перешкод співробітникам.

*) Кубиклами (cubicle) називаються секції в офісі, розділеному невисокими перегородками на крихітні робочі місця на одного співробітника. Ділберт - герой вельми їдких коміксів на теми офісного життя корпоративної Америки. Примітка перекладача.

Великі компанії, такі як Cisco Systems, пишаються тим, що кожен їхній співробітник, включаючи генерального директора, має власний кубикл. На жаль, вони не такі прогресивні, як їм видається: мабуть, вони досі розглядають кубикли як атрибут соціального становища. Зауважимо, між іншим, що Cisco відома невеликими обсягами власних розробок. Замість цього, Cisco купує невеликі молоді компанії, які розробили ту чи іншу технологію. Мабуть, ці компанії якраз і є той тихий омут, в якому водяться першокласні хакери.

Існує, однак, одна велика компанія, в якій розуміють, що потрібно хакерам - це Microsoft. Одного разу я зустрів оголошення про прийом на роботу в Microsoft. На листівці були зображені двері, а напис свідчив: працюйте у нас, і ми дамо вам можливість працювати там, де ви зможете виконати свою роботу. А знаєте, що Microsoft відрізняється від інших великих компаній тим, що їм вдається створювати значну частину ПО власними силами? І хоча результат міг би бути і кращим, але все-таки, він досить хороший.

Якщо компанії хочуть від хакерів максимально продуктивної роботи, то їм слід подивитися, як хакери працюють у себе вдома. Адже вдома людина організовує своє робоче місце найкращим для себе, максимально ефективним чином. Будинки хакери уникають відкритих, галасливих місць; вони працюють у кімнатах за зачиненими дверима, у затишних, розташованих по сусідству приміщеннях. Коли їм буває потрібно обговорити що-небудь один з одним, вони відправляються куди-небудь погуляти, замість того щоб зустрічатися в скляних «акваріумах», нарізаних на манер місць для паркування автомобіля. Вдома хакери влаштовують собі місце для відпочинку, де вони можуть подрімати, а не сидіти на робочому місці в стані коми, роблячи вигляд, що працюють. І над ними не в'ється команда прибиральниць з пилососами щовечора, відволікаючи від роботи в найпродуктивніший час. Вдома у них немає нарад, корпоративних заходів і вправ щодо зміцнення навичок роботи в команді. А якщо ви подивитеся, що хакери роблять на своєму домашньому комп'ютері, то виявите лише підтвердження того, про що я говорив раніше в главі про інструменти. Хакери можуть використовувати Java і Windows на роботі, але вдома, в ситуації вільного вибору, ви, найімовірніше, зустрінете на їх комп'ютерах Perl і Linux.

Тоді, можливо, та статистика про популярність мови Java здасться вам не цілком коректною. Якщо ми хочемо з'ясувати, які ж інструменти і справді найякісніші, нам варто подивитися, що ж вибирають хакери, коли у них є вибір, тобто в їх власних проектах. Тоді може виявитися, що операційні системи з відкритим кодом вже захопили більшу частину ринку, а найпоширеніша мова програмування - це, ймовірно, Perl.

Правильна робота

Крім якісних інструментів, хакери хочуть працювати над цікавими завданнями. Так що ж робить проект цікавим для хакерів? Зрозуміло, високотехнологічні розробки, на зразок літаків-невидимок або моделювання спецефектів, були б їм цікаві. І хоча, в принципі, будь-яке завдання може виявитися привабливим, якщо воно вимагає вирішення нових технічних проблем, не так просто визначити, якими проблемами зацікавляться хакери. Адже завдання може стати для них цікавим, лише якщо в якийсь момент буде знайдено якесь нове рішення. До того як компанія ITA (яка розробляла ПЗ під егідою фірми Orpitz) зайнялася розробкою ПЗ для резервування квитків на авіарейси, програмісти вважали, що немає на світі більш нудного завдання. Однак ITA переформулювала проблему, і в менш однозначній редакції та стала цікавіше.

Мені здається, щось подібне сталося в компанії Google. У ті часи, коли була заснована Google, розробникам так званих «порталів» завдання пошуку здавалася несуттєвою і нудною. Але хакери з Google не вважали проблему пошуку нудною, і тому у них все вийшло так добре.

Це одна з областей, де управлінці можуть на щось вплинути. Подібно батьку, який тримає з дитиною парі на те, що той не зможе прибрати свою кімнату за десять хвилин, менеджери іноді можуть переформулювати проблему в більш цікавому ключі. Здається, Стів Джобс в цьому особливо досяг успіху - в частині підтримки високої планки. У ті часи, коли фірма Apple починала свій бізнес, ринок вже був насичений недорогими персоналками. Так от, завдання, у формулюванні Джобса, було - зробити симпатичну персоналку. І це, ймовірно, подіяло на інженерів Apple не гірше, ніж морквина або палиця на віслюки.

І у них вийшло! Коли тільки з'явився перший «Мак», не потрібно було навіть включати його, щоб зрозуміти, що це відмінна розробка. Це було видно по корпусу. Кілька тижнів тому я прогулювався по Кембриджу, і в чиємусь сміттєвому відрі я побачив те, що виявилося сумкою для «Мака». Я відкрив її і побачив Mac SE. Я відніс його додому, включив, і він завантажився. Посмішка «Макінтоша», а потім і його файловий менеджер Finder. Ох, це було так просто. Просто, як... Google.

Висококласним хакерам подобається працювати з людьми, які встановлюють високу планку. Однак однієї педантичності недостатньо. Необхідно також дотримуватися правильних технічних рішень, що означає, що менеджер сам теж повинен бути висококласним хакером. Мені зустрічалися статті про те, як керувати колективом програмістів. Насправді має бути дві статті з цього приводу - для програмістів і непрограмістів. Так от, остання стаття може містити лише три слова: нічого не вийде.

Робота менеджера команди хороших програмістів полягає не стільки в щоденному управлінні: хороші програмісти, як правило, зовсім не вимагають керівництва, так як самі успішно керують своїми проектами. А ось непрограмісту важко зрозуміти, наскільки добре працює той чи інший його підлеглий. Схожа ситуація виникла з американськими автомобілями - я називаю її парадоксом дизайну. Припустимо, ви задалися метою створити якийсь чудово красивий продукт і хотіли б для початку запросити талановитого дизайнера. Так от, якщо припустити, що у вас немає художнього смаку, то як визначити, який дизайнер дійсно талановитий? Судити з його колишніх робіт вам не дано за визначенням. Орієнтуватися на нагороди або колишні місця роботи безглуздо, оскільки в дизайні, як і в багатьох інших областях, ці речі, в першу чергу, залежать від моди і приватних домовленостей і лише потім - від художніх якостей. З цього парадоксу немає виходу: вам не вдасться створити прекрасну річ, не розуміючи, що таке краса і гармонія. Так от, американські автомобілі не красиві, тому що американськими автомобільними компаніями керують люди з поганим смаком.

Багато людей в Америці вважають смак чимось ілюзорним або навіть вульгарним, але це не так. Менеджер, від якого залежить дизайн продукту, повинен стати найбільш примхливим і вимогливим користувачем. А якщо пощастить, і у нашого керівника виявиться хороший смак, як він виявився у Стіва Джобса, тоді наше завдання може залучити першокласних хакерів.

Безглузда робота

Цілком очевидно, які завдання будуть нецікаві нашим хакерам: це ті, в яких, замість вирішення декількох значних і ясно певних проблем, інженер стикається з купою невеликих і неприродних. Один важкий випадок такого роду - створення інтерфейсу до програми повної помилок. Або, наприклад, адаптація якогось ПЗ до складної і неправильно певної моделі окремо взятого користувача. Для хакера, такі завдання - повільна і болісна смерть.

Відмінна риса такого роду завдань у тому, що вони нічому не вчать людину, що займається їх вирішенням. Наприклад, створення компілятора мови цікаво хоча б тому, що така робота дозволяє розібратися в тому, як влаштовані компілятори. А ось написання інтерфейсу до неправильно працюючої програми не навчить нічому, оскільки помилки несистематичні. Так що хакери уникають дурної роботи не тільки з чистості і снобізму. Більшою мірою це питання самозбереження, оскільки боротьба з подібними штучними проблемами веде до деградації інженера. Першокласні хакери уникають їх з тих же міркувань, що і манекенниці уникають чізбургерів.

(До речі, мені здається, що коли люди говорять про «сенс життя», вони мають на увазі саме це. Сам цей вираз звучить дивно; життя - це ж не вислів, який може мати сенс. Але життя може визначитися якістю, яка дуже схожа на «сенс». У роботі над компілятором інженер вирішує багато окремих завдань, але всі вони потрапляють в ту чи іншу категорію типових, що схоже на виділення корисного сигналу. Відповідно, вирішення несистематичних, нетипових завдань більше нагадує шум.)

Зрозуміло, деякі завдання, за визначенням, відносяться до категорії дурних. При сприятливій кон'юнктурі, робота над деякими такими завданнями може бути досить прибуткова. Компанія, якій вдасться залучити до роботи над дурнуватими завданнями першокласних хакерів, може виявитися дуже успішною. Але як це зробити?

Одне з місць, де таке можливо - це стартапи. У нашій фірмі системним адміністратором працював Роберт Морріс *. Це було все одно, що запросити Rolling Stones на святкування Бар-Міцви. Найняти фахівця такого високого класу на таку нецікаву роботу абсолютно неможливо. Але заради розвитку своєї власної компанії люди готові на будь-яку рутину * *.

*) Роберт Морріс - професор у Массачусетському технологічному іституті (MIT). У 1988 році написав так званий «хробак Морріса», який вважається першим в історії комп'ютерним хробаком, що поширювався інтернетом.

* *) Ейнштейн займався проектуванням нового типу холодильника (і навіть отримав патент).

Великі компанії вирішують цю проблему, розділяючись на частини. Вони приваблюють тлумачних людей, запрошуючи їх до окремого дослідницького відділу, куди не добираються кінцеві користувачі з нецікавими проблемами *. При такій організації дослідницький відділ виконує роль генератора ідей, які, можливо, зможуть використовувати інші відділи компанії.

*) Не так просто сказати, чим саме займаються дослідники в комп'ютерній області. Для початку, я б сказав, що вони пишуть програми, в яких немає очевидної потреби. Не думаю, що ця стаття направить першокласних хакерів на пошуки роботи в дослідницьких відділах компаній. Навряд чи їм захочеться витратити три години на зустріч з менеджером по продуктах з питання про інтеграцію корейської версії програми Word білда 13.27 з балакучою скріпкою.

Однак це не єдино можливий підхід. Методика програмування «знизу вгору» пропонує інший спосіб спеціалізації всередині компанії: можна залучити толкових інженерів до виробництва інструментарію для створення продукту компанії. У такому випадку 99% коду кінцевого продукту виявиться написано професіоналами, але разом з тим, вони, як і у випадку з виділеним дослідницьким відділом, будуть майже повністю ізольовані від кінцевих користувачів. Виробники інструментарію матимуть кінцевих користувачів, але ними виявляться власні розробники компанії *.

*) Щось схоже довгий час відбувалося в області будівництва. Якщо Ваш будинок був побудований кілька сот років тому, то тодішні будівельники робили все самі. Але поступово будівельники переходили на складання будинку з готових компонентів, виготовлених третіми фірмами. Як і у випадку з макетуванням книг на персоналці, це дало людям свободу для експерименту, іноді руйнівного, але, в цілому, подібна спеціалізація, очевидно, ефективніша.

Можливо, якби в Microsoft використовували подібний метод розробки, то їх програми не містили б такої кількості помилок, оскільки найбільш критичні частини коду (на зразок управління пам'яттю) були б написані найбільш тлумачними інженерами. Замість того щоб писати програму Word повністю мовою С, можна було б створити інструмент - спеціальне високорівневе середовище розробки, і зібрати Word зі шматочків, подібно до конструктора Lego.

Кучкування

Крім цікавої роботи, першокласні хакери люблять працювати разом. Хороші інженери самі собою збираються в групи, часом дуже значні, як це сталося в компанії Xerox *. З цієї причини у Вас не вийшло б залучити тим більше першокласних хакерів, чим краще умови Ви б створили для них. Ця тенденція збиратися в колонії, змінює лінійну залежність кількості хакерів від якості умов на квадратичну. Зрештою, виникає ситуація «все або нічого». У будь-який момент часу на ринку існують десятки місць, де першокласні хакери хотіли б працювати. Якщо ваша компанія не в їх числі, то у Вас не просто буде менше хакерів, їх Вам не дістанеться зовсім.

*) Графічний інтерфейс користувача в тому вигляді, в якому ми його знаємо (вікна, іконки, меню), з'явився в дослідницькому центрі Xerox PARC у сімдесяті роки.

Однак одна наявність в команді першокласних хакерів не гарантує успіх компанії. Наприклад, у Google і ITA справи йдуть відмінно, в цих компаніях в даний момент зібралися першокласні хакери, але ось у компаній Thinking Machines і Xerox все не так здорово. Деякий час добре працювала компанія Sun, але якщо обрана неправильна бізнес-модель, то навіть кращі хакери не зможуть врятувати компанію.

Тим не менш, я вважаю, що за інших рівних умов компанія, якій вдалося залучити першокласних хакерів, отримує величезну конкурентну перевагу. З цим погодяться не всі. Коли ми обговорювали перспективи молодих компаній у дев'яностих роках минулого століття, деякі говорили, що програмістські фірми ніколи не досягнуть успіху на ринку, навіть якщо будуть розробляти відмінне ПЗ. Виграють, як вважали ці люди, ті, хто розкрутить торгові марки, організовує потужні канали збуту і укладе вигідні контракти.

Вони дійсно вірять в таку модель і, мені здається, я знаю чому. Можливо, безліч інвесторів сподіваються знайти, принаймні, підспудно, нову фірму Microsoft. Зрозуміло, якщо ваш кумир - Microsoft, вам не варто інвестувати в компанії, які створюють якісне ПЗ. Але ці інвестори помиляються: молодій компанії навряд чи вдасться піти шляхом Microsoft, якщо тільки яка-небудь інша компанія не готова в потрібний момент лопухнутися і стати, таким чином, черговою IBM.

Було б помилкою орієнтуватися на Microsoft, тому що їх успіх базується на щасливому збігу обставин. У цьому сенсі історія Microsoft не характерна. Якщо не враховувати присутність Microsoft на ринку, то виявиться, що по-справжньому хороші продукти превалюють на ринку. Тому інвесторам слід шукати нові Apple або Google.

Думаю, що Білл Гейтс все це знає. І турбує його не те, що Google не належить Microsoft, а те, що в Google працюють першокласні хакери *.

*) Google набагато небезпечніший для Microsoft, ніж Netscape. Можливо, це навіть найнебезпечніша компанія з усіх існуючих досі. Не в останню чергу, тому що Google сповнена рішучості боротися. На їхній сторінці відділу кадрів написано, що одна з їхніх головних цінностей - не бути монстром. Для компанії, що займається продажем соєвої олії або гірничопрохідницького обладнання подібна заява виглядала б ексцентрично. Але мені здається, що всім нам, людям з ІТ-галузі, абсолютно очевидно, що означає ця заява.

Як розпізнати першокласного хакера

Так хто ж з безлічі людей працюючих в ІТ-області, відноситься до справжніх хакерів? Як розпізнати першокласного хакера при зустрічі? Виявляється, не так просто. Навіть самі хакери не завжди можуть сказати. Зараз я абсолютно впевнений, що мій друг Тревор Блеквел - першокласний хакер. Ви могли прочитати на Slashdot замітку про те, як Тревор розробив і зробив свій власний Segway. Чудова деталь цього проекту криється в тому, що все ПО для самокату Тревор написав за один день (мовою Python, до речі). Для Тревора це нормально. А коли я вперше зустрів його, мені здалося, що він повний ідіот. Я побачив його в офісі Роберта Морріса бурмочучим то про те, то про інше, і я пам'ятаю, як стояв позаду Тревора і жестами намагався натякнути Роберту, що пора б вигнати його. Потім Роберт розповів мені, що і він спочатку помилився щодо Тревора. На часі їхньої першої зустрічі Тревор якраз починав проектувати нову схему, причому хід роботи він записував у блокноті, який завжди носив із собою. До того ж, він щойно повернувся з Канади, прихопивши з собою сильний канадський акцент і модну зачіску в стилі «кефаль».

Завдання розпізнавання хакера ускладнюється ще й тим, що, незважаючи на репутацію хлопців замкнутих і нелюдимих, хакери іноді намагаються виглядати розумно. Коли я навчався в університеті, я час від часу проходив повз лабораторію штучного інтелекту в MIT. Там було незатишно. Всі говорили дуже швидко і незрозуміло. Через деякий час, я зрозумів в чому тут справа. Немає необхідності міркувати також швидко, досить просто вимовляти слів більше, ніж необхідно для викладу суті справи.

При такому низькому відношенні сигнал/шум важко зрозуміти, хто є хто насправді. Та я і зараз цього не знаю. Важко судити і по резюме. Схоже, що єдиний спосіб оцінити можливості інженера - попрацювати разом з ним над якимось завданням.

Ось чому високотехнологічні оазиси виникають навколо університетів. Активна складова там не стільки професура, скільки студенти. Невеликі нові компанії утворюються в кампусах завдяки тому, що університети приваблюють молодих і талановитих людей і дають їм можливість працювати спільно. Найбільш талановиті знаходять один одного і об'єднуються для роботи над своїми власними проектами.

Оскільки нам не вдасться дізнатися першокласного хакера іншим способом, крім як попрацювавши разом з ним, самі хакери не можуть оцінити, наскільки добре вони працюють. До деякої міри справа йде так і в інших галузях людської діяльності. Я помітив, що видатні люди не особливо високо оцінюють свої власні можливості, але не перестають вражатися некомпетентності оточуючих. Люди, яких я зустрічав, і які бездоганно виконували свою роботу, як правило, не вважали, що працюють добре. Вони, як правило, вважали себе ледачими і неоподібними, скаржилися на те, що їх голова працює як слід тільки один день з десяти, і що їх звільнення - лише питання часу.

Хакерам особливо важко визначити свій рівень через складнощі порівняння їхньої роботи. У більшості областей з цим все просто. У змаганнях з бігу на 100 метрів через 10 секунд Ви дізнаєтеся, хто кращий. Навіть у математиці, як здається, існують узгоджені оцінки складності тих чи інших проблем і якості тих чи інших рішень. Але програмування більше схоже на літературу. Хто може сказати, який з двох романів найкращий? Вже напевно не автори.

У випадку з хакерами, принаймні, інші хакери можуть оцінити рівень роботи, оскільки, на відміну від письменників, хакери співпрацюють один з одним у роботі над завданням. Але хакер не може оцінити рівень своєї роботи, так що якщо ми запитаємо першокласного хакера, наскільки хороші результати його діяльності, то він, швидше за все, відповість, що не знає. І не тому що скромничає, він дійсно не знає.

І ніхто з нас не знає, за винятком людей, які коли-небудь працювали з нами. Все це ставить нас у дивну ситуацію - ми не знаємо своїх героїв. Хакери, які отримали популярність, виявилися знаменитими випадково, внаслідок несподіваного піару. Іноді мені потрібно навести приклад першокласного хакера, і я абсолютно гублюся. Перше, що спадає на думку - це мої друзі, але використовувати їхні імена якось незручно. Може, мені варто назвати імена Річарда Столлмена або Лінуса Торвальдса або Алана Кея або щось в цьому дусі. Але, строго кажучи, я не знаю цих людей, і мені важко сказати що-небудь про їх професіоналізм.

Якщо і існує свій Майкл Джордан в програмуванні, то ніхто, включаючи його самого, про це не знає.

Як стати першокласним хакером

І нарешті, питання, яким, мабуть, задаються всі програмісти: як стати першокласним хакером? Не знаю, чи можливо виховати самого себе в такому ключі. Очевидно, що раз людина може сама загубити свою кар'єру, то напевно, вона може і побудувати її, ставши першокласним хакером.

Мабуть, найголовніше для хакера - це цікава робота. Згадуючи моїх знайомих хакерів, я усвідомлюю, що ще одна з їхніх спільних якостей - надзвичайна неохота виконувати роботу, яка їм не подобається. Не знаю, що це - причина чи слідство. Можливо і те й інше.

Щоб зробити що-небудь добре, обов'язково любити цю роботу. Поки Вам вдається зберігати любов до програмування, результати будуть високими. Намагайтеся зберегти свій інтерес до програмування в тому ж стані, яким він був у

COM_SPPAGEBUILDER_NO_ITEMS_FOUND