(Бұл эссе Oscon 2004 конференциясында сөйлеген сөзіме негізделген.)
Бірнеше ай бұрын мен жаңа кітабымды аяқтадым, пікірлерден «арандатушы» және «даулы» деген сөздерді жиі байқаймын. «Ақымақтық» дегенді айтпағанның өзінде.
Мен кітапты дау тудыратындай етіп жазғым келген жоқ. Мен оны барынша ұтымды етуге тырыстым. Адамдардың уақытын олар онсыз да білетін нәрселерді айтып босқа өткізгім келмеді. Оларға жай ғана айырмашылықтарды (diffs) беру әлдеқайда ұтымды. Бірақ бұл сөзсіз елді елең еткізетін кітапқа айналатын шығар деп ойлаймын.
Эдисондар
Қай идеяның ең даулы екеніне қатысты ешқандай талас жоқ: байлықтағы алшақтық біз ойлағандай үлкен мәселе болмауы мүмкін деген тұжырым.
Мен кітапта байлықтағы алшақтықтың өзі жақсы нәрсе деп айтқан жоқпын. Мен кейбір жағдайларда бұл жақсы нәрселердің белгісі болуы мүмкін дедім. Бастың қатты ауырғаны жақсы емес, бірақ бұл жақсы нәрсенің белгісі болуы мүмкін — мысалы, басыңыздан соққы алғаннан кейін есіңізді жиып келе жатқаныңыздың белгісі.
Байлықтағы алшақтық өнімділіктегі алшақтықтың белгісі болуы мүмкін. (Бір адамнан тұратын қоғамда олар бірдей.) Ал бұл сөзсіз жақсы нәрсе: егер сіздің қоғамыңызда өнімділікте айырмашылық болмаса, бұл барлығының Томас Эдисон болғанынан емес шығар. Бұл, сірә, сізде бірде-бір Томас Эдисонның жоқтығынан болар.
Технологиясы төмен қоғамда өнімділіктің айтарлықтай айырмашылығын байқамайсыз. Егер сізде отқа бұтақ жинайтын көшпенділер тайпасы болса, ең жақсы бұтақ жинаушы ең нашарынан қаншалықты өнімдірек болмақ? Екі есе ме? Ал адамдарға компьютер сияқты күрделі құралды берген кезде, олардың онымен не істей алатындығындағы айырмашылық орасан зор болады.
Бұл жаңа идея емес. Фред Брукс бұл туралы 1974 жылы жазған, ал ол келтірген зерттеу 1968 жылы жарияланған болатын. Бірақ меніңше, ол бағдарламашылар арасындағы айырмашылықты жете бағаламаған сияқты. Ол өнімділікті код жолдарымен өлшеп жазған: ең жақсы бағдарламашылар берілген есепті он есе аз уақытта шеше алады. Бірақ есеп алдын ала берілмеген болса ше? Бағдарламалауда, көптеген салалардағы сияқты, ең қиын бөлігі есептерді шешу емес, қандай есептерді шешу керектігін анықтау. Қиялды өлшеу қиын, бірақ іс жүзінде ол код жолдарымен өлшенетін өнімділіктің түрінен әлдеқайда басым түседі.
Өнімділік кез келген салада әртүрлі болады, бірақ оның мұншалықты қатты өзгеретін салалары аз. Бағдарламашылар арасындағы айырмашылық соншалықты үлкен, ол сапалық айырмашылыққа айналады. Дегенмен, бұл бағдарламалауға ғана тән қасиет деп ойламаймын. Кез келген салада технология өнімділіктегі айырмашылықты ұлғайтады. Меніңше, бағдарламалауда болып жатқан нәрсе — бізде технологиялық иінтіректің тым көп болуы ғана. Бірақ кез келген салада иінтірек ұзарып келеді, сондықтан біз көріп отырған бұл айырмашылық уақыт өте келе көбірек салаларда байқалатын болады. Ал компаниялардың және елдердің табысы олардың осы мәселемен қалай күресетініне көбірек тәуелді болады.
Егер өнімділіктегі айырмашылық технологиямен бірге артатын болса, онда ең өнімді адамдардың қосар үлесі пропорционалды емес түрде үлкен болып қана қоймай, уақыт өткен сайын нақты өсе түседі. Бір топтың өнімінің 90%-ын оның мүшелерінің 1%-ы өндіретін деңгейге жеткенде, бірдеңе (мейлі викингтердің шапқыншылығы болсын, мейлі орталықтандырылған жоспарлау болсын) олардың өнімділігін орташа деңгейге дейін түсірсе, сіз орасан зор ұтыласыз.
Егер біз олардың бар әлеуетін пайдаланғымыз келсе, біз осы ерекше өнімді адамдарды түсінуіміз керек. Оларды не ынталандырады? Жұмысын істеу үшін оларға не қажет? Оларды қалай тануға болады? Оларды қалай өзіңізге келіп жұмыс істеуге көндіре аласыз? Сосын, әрине, қалай солардың біріне айналуға болады деген сұрақ туындайды.
Ақшадан да маңыздырақ
Мен бірнеше керемет супер-хакерлерді білемін, сондықтан мен отырып, олардың ортақ қасиеттері қандай екенін ойландым. Оларды айқындайтын басты қасиет — олар бағдарламалауды шын мәнінде қатты жақсы көреді. Қарапайым бағдарламашылар төлемдерін өтеу үшін код жазады. Ұлы хакерлер бұған көңіл көтеру үшін істейтін және сол үшін адамдардың ақша төлейтініне қуанатын іс ретінде қарайды.
Ұлы бағдарламашылар туралы кейде олар ақшаға бейжай қарайды деп айтады. Бұл толықтай рас емес. Олардың бар шын мәнінде қызықтыратыны — қызықты жұмыспен айналысу екені рас. Бірақ егер сіз жеткілікті ақша тапсаңыз, қалаған нәрсеңізбен айналыса аласыз, сондықтан хакерлерді шын мәнінде үлкен көлемде ақша табу идеясы қызықтырады. Бірақ олар күн сайын жұмысқа баруға мәжбүр болып жүрген кезде, олар үшін қанша төленетінінен гөрі ол жерде не істейтіні маңыздырақ.
Экономикалық тұрғыдан бұл ең маңызды факт, өйткені бұл ұлы хакерлерге олардың нақты құнына татитын ақы төлеудің қажеті жоқ дегенді білдіреді. Ұлы бағдарламашы қарапайым бағдарламашыдан он немесе жүз есе өнімдірек болуы мүмкін, бірақ ол үш есе көп жалақы алса, өзін бақытты санайды. Кейінірек түсіндіретінімдей, бұл ішінара ұлы хакерлердің өздерінің қаншалықты мықты екенін білмеуінен. Бірақ бұл сонымен бірге ақша олар қалайтын басты нәрсе болмағандықтан да солай.
Хакерлер не қалайды? Барлық шеберлер сияқты, хакерлер жақсы құралдарды ұнатады. Шын мәнінде, бұл тым жұмсартып айтқандық. Жақсы хакерлер нашар құралдарды қолдануға шыдай алмайды. Олар дұрыс инфрақұрылымы жоқ жобаларда жұмыс істеуден жай ғана бас тартады.
Мен бұрын жұмыс істеген бір стартапта хабарландыру тақтасында ілулі тұрған нәрселердің бірі IBM жарнамасы болатын. Онда AS400 суреті бар еді және тақырыбында шамамен «хакерлер оны жек көреді» деп жазылған болатын. [1]
Жоба үшін қандай инфрақұрылымды пайдалану керектігін шешкен кезде, сіз тек техникалық шешім қабылдап қана қоймайсыз. Сіз сондай-ақ әлеуметтік шешім қабылдайсыз және бұл екеуінің ішіндегі маңыздырағы болуы мүмкін. Мысалы, егер сіздің компанияңыз қандай да бір бағдарламалық жасақтама жазғысы келсе, оны Java тілінде жазу парасатты таңдау болып көрінуі мүмкін. Бірақ сіз тілді таңдағанда, сіз қауымдастықты да таңдайсыз. Java жобасында жұмыс істеуге жалдай алатын бағдарламашыларыңыз Python тілінде жазылған жобаға тарта алатындарыңыздай ақылды болмайды. Ал сіздің хакерлеріңіздің сапасы сіз таңдаған тілден гөрі маңыздырақ болуы әбден мүмкін. Дегенмен, шынын айтқанда, жақсы хакерлердің Java-дан гөрі Python-ды артық көретіні осы тілдердің салыстырмалы артықшылықтары туралы бірдеңе аңғартуы керек.
Бизнес өкілдері ең танымал тілдерді ұнатады, өйткені олар тілдерді стандарт ретінде қарастырады. Олар компанияның тағдырын Betamax-қа тіккісі келмейді. Алайда тілдерге қатысты мәселе — олардың жай ғана стандарт емес екендігінде. Егер сізге желі арқылы биттерді тасымалдау керек болса, әрине, TCP/IP пайдаланыңыз. Бірақ бағдарламалау тілі — бұл жай ғана формат емес. Бағдарламалау тілі — бұл ойды білдіру құралы.
Мен Java тілінің ең танымал тіл ретінде Cobol-ды басып озғанын оқыдым. Стандарт ретінде бұдан артықты тілей алмас едіңіз. Бірақ ойды білдіру құралы ретінде сіз бұдан әлдеқайда жақсысын жасай алар едіңіз. Мен білетін барлық ұлы бағдарламашылардың ішінде тек біреуі ғана Java тілінде өз еркімен бағдарлама жазар еді. Ал Sun компаниясында Java бойынша жұмыс істемейтін, мен білетін ұлы бағдарламашылардың ішінде ондайлар мүлдем жоқ.
Ұлы хакерлер сонымен қатар ашық бастапқы коды бар бағдарламалық жасақтаманы пайдалануды талап етеді. Бұл оның жақсырақ болғаны үшін ғана емес, сонымен бірге оларға көбірек бақылау беретіндіктен. Жақсы хакерлер бақылауды талап етеді. Бұл оларды жақсы хакер ететін қасиеттердің бір бөлігі: бірдеңе бұзылса, олар оны түзетуі керек. Сіз олардың өзіңіз үшін жазып жатқан бағдарламалық жасақтамасына дәл осылай қарағанын қалайсыз. Олардың операциялық жүйеге де дәл осылай қарайтынына таңғалмауыңыз керек.
Бірнеше жыл бұрын венчурлік инвестор досым маған өзі қатысып жатқан жаңа стартап туралы айтты. Үміт күттіретіндей көрінді. Бірақ келесі жолы онымен сөйлескенімде, ол олар өздерінің бағдарламалық жасақтамасын Windows NT негізінде жасауды ұйғарғанын және жақында өте тәжірибелі NT әзірлеушісін бас техникалық директор ретінде жұмысқа алғанын айтты. Мұны естігенде мен: «Бұлардың күні бітті», — деп ойладым. Біріншіден, бас техникалық директор бірінші дәрежелі хакер бола алмайтын еді, өйткені көрнекті NT әзірлеушісі болу үшін ол NT-ді өз еркімен, бірнеше рет пайдалануы керек болар еді, ал мен ұлы хакердің мұны істейтінін елестете алмадым; екіншіден, ол тіпті мықты болған күннің өзінде, егер жоба NT негізінде жасалатын болса, оған өзіне жұмыс істеу үшін жақсы маман табу өте қиын болар еді. [2]
Соңғы шекара
Бағдарламалық жасақтамадан кейін хакер үшін ең маңызды құрал — бұл оның кеңсесі шығар. Үлкен компаниялар кеңсе кеңістігінің қызметі лауазым дәрежесін көрсету деп ойлайды. Бірақ хакерлер өз кеңселерін одан да зор мақсатта пайдаланады: олар кеңсені ойланатын орын ретінде пайдаланады. Ал егер сіз технологиялық компания болсаңыз, олардың ойлары — сіздің өніміңіз. Сондықтан хакерлерді шулы, көңілді бөлетін ортада жұмыс істету — ауасы күйеге толы бояу зауытын ұстаумен бірдей.
«Dilbert» комиксінде кубиклдер (шағын ашық жұмыс орындары) туралы көп айтылады және бұл бекер емес. Мен білетін барлық хакерлер оларды жек көреді. Біреудің кедергі жасауы мүмкін деген ойдың өзі хакерлерге қиын есептермен жұмыс істеуге кедергі келтіруге жеткілікті. Егер сіз кубиклдері бар кеңседе нақты жұмыс істегіңіз келсе, сізде екі таңдау бар: үйде жұмыс істеу немесе кеңсеге ешкім жоқ кезде — таңертең ерте, кеш батқанда немесе демалыс күндері келу. Компаниялар бұл бірдеңенің дұрыс емес екенінің белгісі екенін түсінбей ме? Кеңсе ортасы жұмыс істеуге көмектесетін нәрсе болуы керек, оған қарамастан жұмыс істейтін кедергі емес.
Cisco сияқты компаниялар бәрінің, тіпті бас директордың да кубиклы бар екенін мақтан тұтады. Бірақ олар өздері ойлағандай озық емес; олар әлі күнге дейін кеңсе кеңістігін лауазымдық дәреженің белгісі ретінде көретіні анық. Сондай-ақ, Cisco компаниясының өз ішінде өнімді өте аз әзірлейтінімен танымал екенін ескеріңіз. Олар жаңа технологияны оны жасаған стартаптарды сатып алу арқылы алады — ол жерлерде, сірә, хакерлердің тыныш жұмыс істейтін орны болған шығар.
Хакерлерге не қажет екенін түсінетін бір ірі компания — Microsoft. Мен бірде Microsoft-тың үлкен есік суреті бар қызметкерлерді жинау туралы жарнамасын көрдім. Бізге жұмысқа келіңіз, мағынасы осындай болды, біз сізге нақты жұмыс істей алатын орын береміз. Және білесіз бе, Microsoft ірі компаниялар арасында өнімді өз ішінде әзірлей алатындығымен ерекшеленеді. Мүмкін керемет емес шығар, бірақ жеткілікті деңгейде жақсы.
Егер компаниялар хакерлердің өнімді болғанын қаласа, олардың үйде не істейтініне қарауы керек. Үйде хакерлер барынша көп нәтижеге қол жеткізу үшін заттарды өздері реттей алады. Ал үйде жұмыс істегенде хакерлер шулы, ашық кеңістіктерде жұмыс істемейді; олар есігі бар бөлмелерде жұмыс істейді. Олар гектарлаған көлік тұрағының ортасындағы шыны қораптардың орнына, айналасында адамдары бар және бір нәрсені ойланып толғану қажет болғанда серуендейтін жері бар жайлы, көршілестік орындарда жұмыс істейді. Олар жұмыс істеп жатқандай кейіп танытып үстел басында дел-сал болып отырудың орнына, шаршаған кезде мызғып алатын диваны бар. Ол жерде бағдарламалаудың ең қызған шағында кеш сайын гүрілдеп өтетін шаңсорғыш ұстаған адамдар тобы жоқ. Онда жиналыстар немесе, құдай сақтасын, корпоративтік демалыстар мен тимбилдингтер жоқ. Ал олардың компьютерде не істеп жатқанына қарасаңыз, бұл менің құралдар туралы бұған дейін айтқанымды растайтынын көресіз. Олар жұмыста Java мен Windows-ты пайдалануға мәжбүр болуы мүмкін, бірақ олар өздері таңдай алатын үйде олардың Perl мен Linux-ты көбірек қолданатынын көресіз.
Шынында да, Cobol немесе Java ең танымал тіл деген статистика жаңылыстыруы мүмкін. Егер біз қандай құралдардың ең жақсы екенін білгіміз келсе, біз хакерлердің еркін таңдау мүмкіндігі болғанда не таңдайтынына — яғни өздерінің жеке жобаларына қарауымыз керек. Осы сұрақты қойған кезде, ашық бастапқы коды бар операциялық жүйелердің нарықтағы басым үлеске ие екенін және бірінші нөмірлі тіл, бәлкім, Perl екенін көресіз.
Қызықты
Жақсы құралдармен қатар, хакерлер қызықты жобаларды қалайды. Жобаны не қызықты етеді? Әрине, «стэлс» ұшақтары немесе арнайы эффекттерге арналған бағдарламалық жасақтама сияқты көзге бірден түсетін тартымды қосымшалармен жұмыс істеу қызықты болар еді. Бірақ кез келген қосымша, егер ол жаңа техникалық міндеттер қоятын болса, қызықты бола алады. Сондықтан хакерлерге қандай есептердің ұнайтынын болжау қиын, өйткені кейбір есептер олармен жұмыс істейтін адамдар шешімнің жаңа түрін тапқанда ғана қызықты болады. ITA-ға дейін (олар Orbitz ішіндегі бағдарламалық жасақтаманы жазған) әуе билеттерін іздеумен айналысқан адамдар, бәлкім, бұл елестетуге болатын ең жалықтыратын қосымшалардың бірі деп ойлаған шығар. Бірақ ITA мәселені анағұрлым ауқымды түрде қайта анықтау арқылы оны қызықты етті.
Менің ойымша, дәл осындай жағдай Google-де де болды. Google құрылған кезде порталдар деп аталатындардың арасында қалыптасқан пікір іздеудің іш пыстырарлық және маңызды емес екендігі болды. Бірақ Google жігіттері іздеуді жалықтырарлық деп санамады және олардың оны соншалықты жақсы істейтіні сондықтан.
Бұл — менеджерлер өзгеріс енгізе алатын сала. Баласына: «Бүкіл бөлмеңді он минутта жинай алмайсың деп бәс тігемін», — деген ата-ана сияқты, жақсы менеджер кейде мәселені одан да қызықтырақ етіп қайта анықтай алады. Стив Джобс бұған ерекше шебер көрінеді, бұл ішінара жай ғана жоғары талаптар қою арқылы жүзеге асады. Mac-қа дейін көптеген шағын, арзан компьютерлер болды. Ол мәселені былай қайта анықтады: әдемісін жасаңдар. Бұл, бәлкім, әзірлеушілерді кез келген қамшы мен тәттіге қарағанда көбірек жігерлендірді.
Олар шын мәнінде нәтиже көрсетті. Mac алғаш пайда болған кезде, оның жақсы болатынын білу үшін оны қосудың да қажеті жоқ еді; оны корпусынан-ақ білуге болатын еді. Бірнеше апта бұрын мен Кембриджде көшеде келе жатып, біреудің қоқысының ішінен Mac тасымалдауға арналған сөмкесіне ұқсайтын затты көрдім. Ішіне қарасам, Mac SE жатыр екен. Мен оны үйге апарып, розеткаға қостым, ол іске қосылды. Қуанышты Macintosh жүзі, содан кейін Finder. Құдайым-ау, бұл соншалықты қарапайым еді. Дәл бір... Google сияқты.
Хакерлер жоғары талап қоятын адамдарға жұмыс істегенді ұнатады. Бірақ тек талапшыл болу жеткіліксіз. Сіз дұрыс нәрселерді талап етуіңіз керек. Бұл әдетте сіздің өзіңіз де хакер болуыңыз керек дегенді білдіреді. Мен бағдарламашыларды қалай басқару керектігі туралы сирек мақалаларды көріп қаламын. Шын мәнінде, екі мақала болуы керек: бірі — егер өзіңіз бағдарламашы болсаңыз не істеу керектігі туралы, екіншісі — олай болмасаңыз не істеу керектігі туралы. Ал екіншісін екі сөзге сыйғызуға болар еді: бас тартыңыз.
Мәселе күнделікті басқаруда емес. Шын мәнінде жақсы хакерлер іс жүзінде өздерін өздері басқарады. Мәселе мынада: егер сіз хакер болмасаңыз, кімнің жақсы хакер екенін ажырата алмайсыз. Осыған ұқсас мәселе америкалық көліктердің неліктен соншалықты ұсқынсыз екенін түсіндіреді. Мен мұны дизайн парадоксы деп атаймын. Өнімдеріңізді жобалау үшін керемет дизайнерді жалдау арқылы оларды әдемі ете аламын деп ойлауыңыз мүмкін. Бірақ егер өзіңізде жақсы талғам болмаса, жақсы дизайнерді қалай танымақсыз? Анықтама бойынша, сіз оны портфолиосынан ажырата алмайсыз. Сондай-ақ сіз оның алған марапаттарына немесе істеген жұмыстарына сүйене алмайсыз, өйткені дизайнда, көптеген салалардағыдай, бұлар сәнге және тамыр-таныстыққа байланысты болады, ал нақты қабілет алыстағы үшінші орында тұрады. Бұдан шығар жол жоқ: әдемі нәрсенің не екенін білмей тұрып, әдемі заттарды шығаруға бағытталған процесті басқара алмайсыз. Америкалық көліктер ұсқынсыз, өйткені америкалық автокөлік компанияларын талғамы нашар адамдар басқарады.
Бұл елдегі көптеген адамдар талғамды ұстатпайтын, тіпті мәнсіз нәрсе деп санайды. Ол олай да, бұлай да емес. Дизайнға бағыт беру үшін менеджер компания өнімдерінің ең талапшыл пайдаланушысы болуы керек. Ал егер сізде шын мәнінде жақсы талғам болса, Стив Джобс сияқты, сіздің көңіліңізден шығуды жақсы мамандар айналысқысы келетін мәселеге айналдыра аласыз.
Жағымсыз ұсақ мәселелер
Қандай есептердің қызық емес екенін айту өте оңай: бірнеше үлкен, нақты есептерді шешудің орнына көптеген жағымсыз ұсақ мәселелерді шешуге тура келетіндері. Жобалардың ең нашар түрлерінің бірі — қателері (bugs) толып жатқан бағдарламалық жасақтама бөлігіне интерфейс жазу. Тағы біреуі — жеке клиенттің күрделі әрі анық емес қажеттіліктері үшін бірдеңені бейімдеуге тура келген кезде. Хакерлер үшін мұндай жобалар мың мәрте тілгілеп өлтірумен бірдей.
Жағымсыз ұсақ мәселелердің айрықша белгісі — сіз олардан ештеңе үйренбейсіз. Компилятор жазу қызықты, өйткені ол сізге компилятордың не екенін үйретеді. Бірақ қатесі көп бағдарламаға интерфейс жазу сізге ештеңе үйретпейді, өйткені қателер кездейсоқ пайда болады. [3] Сондықтан жақсы хакерлердің жағымсыз ұсақ мәселелерден қашуына тек талғампаздық себеп емес. Бұл көбінесе өзін-өзі сақтау мәселесі. Жағымсыз ұсақ мәселелермен жұмыс істеу сізді ақымақ етеді. Сәнбикелердің чизбургерлерден бас тартатыны сияқты, жақсы хакерлер де сол себепті одан аулақ болады.
Әрине, кейбір есептер табиғатынан осындай сипатқа ие. Және сұраныс пен ұсынысқа байланысты оларға өте жақсы ақы төленеді. Сондықтан ұлы хакерлерді жалықтыратын есептермен жұмыс істетудің жолын тапқан компания өте табысты болар еді. Мұны қалай істер едіңіз?
Бұл жүзеге асатын орындардың бірі — стартаптар. Біздің стартапта жүйелік әкімші болып Роберт Моррис жұмыс істеді. Бұл бар-мицвада Rolling Stones тобы өнер көрсеткенмен бірдей. Мұндай талантты жалдап ала алмайсыз. Бірақ адамдар өздері негізін қалаған компаниялар үшін кез келген қара жұмысты істей береді. [4]
Үлкен компаниялар бұл мәселені компанияны бөліктерге бөлу арқылы шешеді. Олар ақылды адамдарды жұмысқа тарту үшін бөлек R&D (зерттеулер мен әзірлемелер) бөлімін құрады, онда қызметкерлер тұтынушылардың жағымсыз ұсақ мәселелерімен тікелей айналысуға мәжбүр болмайды. [5] Бұл үлгіде ғылыми-зерттеу бөлімі шахта сияқты жұмыс істейді. Олар жаңа идеяларды өндіреді; мүмкін компанияның қалған бөлігі оларды пайдалана алар.
Сізге мұндай шектен шығудың қажеті болмауы мүмкін. Төменнен жоғарыға қарай бағдарламалау компанияны бөлудің басқа жолын ұсынады: ақылды адамдарды құрал жасаушылар ретінде жұмыс істету. Егер сіздің компанияңыз x функциясын орындайтын бағдарламалық жасақтама жасаса, бір топ осы типтегі бағдарламаларды жазуға арналған құралдарды жасасын, ал екіншісі сол құралдарды қосымшаларды жазу үшін пайдалансын. Осылайша сіз ақылды адамдарға кодыңыздың 99%-ын жаздыра аласыз, бірақ сонымен бірге оларды кәдімгі зерттеу бөліміндегідей пайдаланушылардан оқшау ұстай аласыз. Құрал жасаушылардың пайдаланушылары болады, бірақ олар тек компанияның өз әзірлеушілері болады. [6]
Егер Microsoft осы тәсілді қолданса, олардың бағдарламалық жасақтамасында соншалықты көп қауіпсіздік саңылаулары болмас еді, өйткені нақты қосымшаларды жазатын онша ақылды емес адамдар жадты бөлу сияқты төменгі деңгейдегі нәрселермен айналыспас еді. Олар Word-ты тікелей C тілінде жазудың орнына, Word-тілінің үлкен Lego блоктарын бір-біріне жалғар еді. (Техникалық термин, меніңше, Duplo деп аталады.)
Шоғырлану
Қызықты есептермен қатар, жақсы хакерлердің ұнататыны — басқа да жақсы хакерлер. Ұлы хакерлер бір-біріне тартылып, топтасуға бейім — кейде Xerox Parc-тағыдай таңғаларлық түрде. Сондықтан сіз жақсы хакерлерді оларға қаншалықты жақсы орта жасағаныңызға тура пропорционалды түрде тарта алмайсыз. Топтасуға бейімділік оның ортаның сапасының квадратына тең болатынын білдіреді. Сондықтан бәрін жеңімпаз алады. Кез келген уақытта хакерлер ең көп жұмыс істегісі келетін небары он немесе жиырма орын ғана болады, егер сіз солардың бірі болмасаңыз, сізде ұлы хакерлердің саны жай ғана азырақ болып қалмайды, олар мүлдем болмайды.
Ұлы хакерлердің болуы, өздігінен, компанияның табысты болуы үшін жеткіліксіз. Бұл қазіргі ең танымал орындардың екеуі болып табылатын Google және ITA үшін жақсы жұмыс істейді, бірақ бұл Thinking Machines немесе Xerox-қа көмектесе алмады. Sun белгілі бір уақыт бойы жақсы жұмыс істеді, бірақ олардың бизнес-моделі төмен қарай құлдыраған лифт сияқты. Мұндай жағдайда тіпті ең жақсы хакерлер де сізді құтқара алмайды.
Дегенмен, басқа жағдайлар бірдей болған кезде, ұлы хакерлерді тарта алатын компанияның үлкен артықшылығы болады деп ойлаймын. Бұнымен келіспейтін адамдар да бар. Біз 1990-жылдары венчурлік капитал фирмаларын аралаған кезімізде, бірнешеуі бізге бағдарламалық жасақтама компаниялары керемет бағдарлама жазу арқылы емес, бренд, арналарды бақылауда ұстау және дұрыс келісімдер жасау арқылы жеңіске жететінін айтқан болатын.
Олар бұған шынымен сенетін сияқты көрінді және мен мұның себебін білетін сияқтымын. Менің ойымша, көптеген венчурлік инвесторлар, кем дегенде бейсаналы түрде, келесі Microsoft-ты іздейді. Әрине, егер сіздің үлгіңіз Microsoft болса, сіз керемет бағдарламалық жасақтама жазу арқылы жеңіске жетуге үміттенетін компанияларды іздемеуіңіз керек. Бірақ венчурлік инвесторлар келесі Microsoft-ты іздеу арқылы қателеседі, өйткені басқа бір компания дәл уақытында иіліп, келесі IBM болуға дайын болмаса, ешбір стартап келесі Microsoft бола алмайды.
Microsoft-ты үлгі ретінде алу — қателік, өйткені олардың бүкіл мәдениеті сол бір кездейсоқ сәттіліктен туындаған. Microsoft — бұл нашар мысал дерегі (data point). Егер оларды алып тастасаңыз, жақсы өнімдердің нарықта жеңіске жетуге бейім екенін көресіз. Венчурлік инвесторлар іздеуі керек нәрсе — бұл келесі Apple немесе келесі Google.
Менің ойымша, Билл Гейтс мұны біледі. Оны Google-ге қатысты алаңдататын нәрсе — олардың брендінің күші емес, оларда жақсырақ хакерлердің бар болуы. [7]
Тану
Сонымен, ұлы хакерлер кімдер? Біреуін кездестіргенде оны қалай білуге болады? Бұл өте қиын болып шығады. Тіпті хакерлердің өздері де ажырата алмайды. Мен қазір досым Тревор Блэквеллдің ұлы хакер екеніне толық сенімдімін. Сіз Slashdot-тан оның өзінің жеке Segway-ін қалай жасағанын оқыған боларсыз. Бұл жобаның таңғаларлық жері — ол бүкіл бағдарламалық жасақтаманы бір күнде жазып шықты (айтпақшы, Python тілінде).
Тревор үшін бұл қалыпты жағдай. Бірақ мен оны алғаш кездестіргенде, мен оны нағыз ақымақ деп ойладым. Ол Роберт Морристің кабинетінде тұрып, оған бірдеңе туралы былдырлап жатты, ал мен оның артында тұрып, түскі асқа баруымыз үшін мына жынойнақты кеңседен қуып шық деп Робертке жанталаса белгі беріп тұрғаным есімде. Роберт те басында Треворды дұрыс бағаламағанын айтады. Шамасы, Роберт оны алғаш кездестіргенде, Тревор өз өмірінің әрбір қыры туралы барлық нәрсені өзімен бірге үнемі алып жүретін карточкалар бумасына жазып қоюды көздейтін жаңа жүйені енді ғана бастаған көрінеді. Ол сонымен қатар Канададан жаңа ғана келген еді және оның қанық канадалық акценті мен «маллет» үлгісіндегі шаш қойысы бар болатын.
Бұл мәселені хакерлердің әлеуметтік бейхабарлығы туралы беделіне қарамастан, кейде ақылды болып көрінуге көп күш жұмсайтындығы қиындата түседі. Мен магистратурада оқып жүргенімде кейде MIT AI зертханасына бас сұғып тұратынмын. Басында бұл біртүрлі сескендіретін еді. Ондағылардың бәрі соншалықты жылдам сөйлейтін. Бірақ біраз уақыттан кейін мен тез сөйлеудің амалын үйреніп алдым. Сізге жылдамырақ ойланудың қажеті жоқ; кез келген нәрсені айту үшін жай ғана екі есе көп сөз қолдансаңыз болғаны.
Сигналдағы мұндай бөтен шудың деңгейімен жақсы хакерлерді кездестіргенде оларды тану қиын. Мен тіпті қазір де ажырата алмаймын. Сондай-ақ оларды түйіндемелерінен де тани алмайсыз. Хакерді бағалаудың жалғыз жолы — онымен бірге қандай да бір іспен айналысу сияқты көрінеді.
Жоғары технологиялық аймақтардың тек университеттердің айналасында пайда болуының себебі де осы. Мұндағы басты белсенді элемент профессорлар емес, көбінесе студенттер болып табылады. Стартаптар университеттердің айналасында өсіп шығады, өйткені университеттер болашағынан үміт күттіретін жастардың басын қосып, оларды ортақ жобаларда жұмыс істеуге мәжбүрлейді. Ақылдылар басқа ақылдылардың кім екенін біледі және олар бірге өздерінің жаңа жобаларын ойлап табады.
Ұлы хакерді онымен бірге жұмыс істемейінше тани алмайтындықтан, хакерлердің өздері де өздерінің қаншалықты мықты екенін білмейді. Бұл белгілі бір дәрежеде көптеген салаларға тән. Менің байқағаным, қандай да бір істе ұлы болған адамдар өздерінің ұлылығына онша сенімді емес, керісінше қалғандарының неліктен соншалықты дәрменсіз болып көрінетініне қайран қалады.
Бірақ хакерлерге өздерінің қаншалықты мықты екенін білу ерекше қиын, өйткені олардың жұмысын салыстыру оңай емес. Басқа салалардың көбінде бұл оңайырақ. Жүз метрлік қашықтықта сіз 10 секунд ішінде кімнің ең жылдам екенін білесіз. Тіпті математикада да қандай есептерді шешу қиын және жақсы шешімнің не екені туралы жалпы ортақ пікір бар сияқты. Бірақ хакерлік — бұл жазушылық сияқты. Екі романның қайсысы жақсырақ екенін кім айта алады? Әрине, авторлардың өздері емес.
Хакерлерге келсек, кем дегенде басқа хакерлер ажырата алады. Себебі хакерлер, жазушылардан айырмашылығы, жобаларда бірлесіп жұмыс істейді. Сіз біреуге тордың арғы жағына бірнеше қиын есепті лақтырып көргенде, олардың соққыны қаншалықты қайтара алатынын тез түсінесіз. Бірақ хакерлер жұмыс кезінде өздерін сыртынан бақылай алмайды. Сондықтан, егер ұлы хакерден оның қаншалықты мықты екенін сұрасаңыз, ол: «Білмеймін», — деп жауап берері сөзсіз. Ол жай ғана қарапайымдылық танытып тұрған жоқ. Ол шынымен білмейді.
Ал біздің ешқайсымыз, өзіміз бірге жұмыс істеген адамдардан басқа ешкімді білмейміз. Бұл бізді қызық жағдайға қалдырады: кімдер біздің қаһарманымыз болуы керектігін білмейміз. Танымал болатын хакерлер көбінесе PR-дың кездейсоқ жағдайлары арқылы танымал болады. Кейде маған ұлы хакерге мысал келтіру керек болады, бірақ кімді мысалға аларымды ешқашан білмеймін. Ең бірінші ойға келетін есімдер әрқашан өзім жеке танитын адамдар болып шығады, бірақ оларды пайдалану біртүрлі көрінеді. Сондықтан, бәлкім, Ричард Столлман, не Линус Торвальдс, не Алан Кэй немесе солар сияқты басқа танымал біреуді атауым керек шығар деп ойлаймын. Бірақ бұл жігіттердің мықты хакер екенін немесе емес екенін мен білмеймін. Мен олармен бірге ешқандай жобада істеп көрген емеспін.
Егер хакерліктің Майкл Джорданы бар болса, оны ешкім білмейді, соның ішінде өзі де.
Дамыту
Ақырында, барлық хакерлерді толғандыратын сұрақ: қалай ұлы хакер болуға болады? Өзіңнен мықты хакер жасап шығару мүмкін бе, жоқ па, оны білмеймін. Бірақ адамды ақымақ ететін нәрселерді істеу әбден мүмкін, ал егер өзіңізді ақымақ ете алсаңыз, онда ақылды да ете алатын шығарсыз.
Жақсы хакер болудың кілті өзіңізге ұнайтын нәрсемен айналысу болуы мүмкін. Өзім білетін ұлы хакерлер туралы ойлағанымда, олардың ортақ бір қасиеті — өздері қаламайтын нәрсемен айналысуға мәжбүрлеудің өте қиындығы. Бұл себеп пе әлде салдар ма, білмеймін; бәлкім, екеуі де шығар.
Бір нәрсені жақсы жасау үшін оны жақсы көру керек. Сондықтан хакерлікті сүйікті ісіңіз ретінде қаншалықты сақтай алсаңыз, оны соншалықты жақсы жасайтын боласыз. 14 жасыңызда бағдарламалауға деген таңданыс сезіміңізді сақтап қалуға тырысыңыз. Егер қазіргі жұмысыңыз миыңызды шірітіп жатыр деп уайымдасаңыз, солай болуы әбден мүмкін.
Үздік хакерлер әдетте ақылды болады, әрине, бірақ бұл көптеген салаларға тән. Хакерлерге ғана тән қандай да бір қасиет бар ма? Мен бірнеше достарымнан сұрадым, олар бірінші кезекте қызығушылықты (білуге құмарлықты) атады. Мен әрқашан барлық ақылды адамдар қызыққұмар деп ойлайтынмын — қызығушылық білімнің бірінші туындысы ғана деп. Бірақ хакерлер заттардың қалай жұмыс істейтініне өте құмар көрінеді. Бұл қисынды, өйткені бағдарламалар шын мәнінде заттардың қалай жұмыс істейтінін көрсететін үлкен сипаттамалар болып табылады.
Бірнеше досым хакерлердің шоғырлану қабілетін — біреуі айтқандай, «өз басынан тыс барлық нәрсені өшіріп тастау» қабілетін атап өтті. Мен де мұны байқадым. Сондай-ақ бірнеше хакердің тіпті жарты бөтелке сыра ішкеннен кейін мүлдем код жаза алмайтынын айтқанын естідім. Демек, хакерлік шынымен де зейінді жинақтаудың ерекше қабілетін талап ететін шығар. Бәлкім, ұлы хакерлер санасына үлкен көлемдегі контекстті сыйғыза алатын шығар, сондықтан олар бір қатар кодқа қарағанда, тек сол жолды ғана емес, оның айналасындағы бүкіл бағдарламаны көреді. Джон Макфи Билл Брэдлидің баскетболшы ретіндегі табысы жартылай оның ерекше перифериялық көру қабілетіне байланысты болғанын жазды. «Керемет» көру қабілеті шамамен 47 градустық тік перифериялық көруді білдіреді. Билл Брэдлиде ол 70 градус болған; ол еденге қарап тұрып та себетті көре алған. Мүмкін ұлы хакерлерде осындай туа біткен қабілет бар шығар. (Мен алаңды кішірейтетін өте тығыз тілді қолдану арқылы айла жасаймын.)
Бұл кубиклдарға қатысты түсінбеушілікті түсіндіруі мүмкін. Мүмкін, ғимараттарға жауапты адамдардың бұзатындай ешқандай зейіні болмағандықтан, кубиклде жұмыс істеу хакер үшін миын блендерге салып қойғандай сезілетінін мүлдем түсінбейтін шығар. (Ал Билл, егер аутизм туралы қауесеттер рас болса, мұны өте жақсы біледі.)
Ұлы хакерлер мен жалпы ақылды адамдар арасында байқаған бір айырмашылығым — хакерлер саяси тұрғыдан әлдеқайда корректті емес. Егер жақсы хакерлер арасында құпия сәлемдесу бар десек, бұл олардың қарапайым халық таспен атып өлтіретіндей пікірлерді бір-біріне еркін айта алатындай жақсы танитын кезі. Және мен саяси корректсіздіктің бағдарламалауда неге пайдалы қасиет болатынын түсінемін. Бағдарламалар өте күрделі және кем дегенде жақсы бағдарламашылардың қолында өте икемді келеді. Мұндай жағдайларда болжамдарға күмән келтіру әдетінің болуы көмектеседі.
Бұл қасиеттерді дамытуға бола ма? Білмеймін. Бірақ ең болмағанда оларды тұншықтырмауға болады. Сондықтан менің ең жақсы ұсынарым мына рецепт: егер өзіңнен ұлы хакер жасау мүмкін болса, оның жолы өзіңмен келесідей мәміле жасау болуы мүмкін: сен ешқашан қызықсыз жобаларда жұмыс істемеуің керек (тек отбасың аштан қалмайтын жағдайда ғана), ал оның есесіне, өзіңе ешқашан шала-шарпы жұмыс істеуге жол бермейсің. Мен білетін барлық ұлы хакерлер осы мәмілеге келген сияқты, бірақ, бәлкім, олардың бұл мәселеде басқа таңдауы да болмаған шығар.
Ескертпелер
[1] Әділдік үшін айтуым керек, IBM сапалы жабдықтар жасайды. Мен мұны IBM ноутбугында жаздым.
[2] Олардың шынымен де күні біткен болып шықты. Олар бірнеше айдан кейін жабылып қалды.
[3] Меніңше, адамдар «өмірдің мәні» туралы айтқанда осыны меңзейді. Сырт көзге бұл оғаш ой сияқты көрінеді. Өмір сөз тіркесі емес қой; оның қалай мәні болуы мүмкін? Бірақ оның мәнге өте ұқсайтын сапасы болуы мүмкін. Компилятор сияқты жобада көптеген мәселелерді шешуге тура келеді, бірақ мәселелердің барлығы сигнал сияқты бір жүйеге сай келеді. Ал сіз шешуге тиіс мәселелер кездейсоқ болған кезде, олар шу сияқты көрінеді.
[4] Эйнштейн бір кездері тоңазытқыштарды жобалаумен айналысқан. (Оның үлесі болған.)
[5] Компьютер әлемінде зерттеудің нақты не екенін айту қиын, бірақ шамамен алғанда, бұл — қолданушылары жоқ бағдарламалық жасақтама.
Үздік хакерлерді ғылыми-зерттеу бөлімдерінде жұмыс істеуге құштар ететін нәрсе ғылыми жарияланымдар деп ойламаймын. Меніңше, бұл көбінесе өнім менеджерімен Word 13.27-нің корейлік нұсқасын сөйлейтін скрепкамен біріктіру мәселелері туралы үш сағаттық жиналыс өткізуге мәжбүр болмау болып табылады.
[6] Құрылыс саласында да көптен бері осыған ұқсас жағдай орын алып келеді. Бір-екі жүз жыл бұрын үй салғызғаныңызда, жергілікті құрылысшылар ондағы барлық нәрсені өздері салатын. Бірақ қазір құрылысшылар барған сайын басқа біреу жобалаған және өндірген компоненттерді жинаумен айналысуда. Бұл, үстелдік баспа жүйелерінің пайда болуы сияқты, адамдарға апатты жолдармен тәжірибе жасауға еркіндік берді, бірақ бұл сөзсіз әлдеқайда тиімдірек.
[7] Google Microsoft үшін кезіндегі Netscape-тен әлдеқайда қауіпті. Мүмкін, бұрын-соңды болған кез келген басқа компаниядан да қауіптірек шығар. Тек олардың соғысуға бекінгені үшін ғана емес. Олардың бос жұмыс орындары бетінде олардың «негізгі құндылықтарының» бірі «Don't be evil» (Жамандық жасама) деп жазылған. Соя майын немесе тау-кен жабдықтарын сататын компаниядан мұндай мәлімдеме жай ғана оғаштық болып көрінер еді. Бірақ компьютер әлеміндегі барлығымыз бұның кімге қарсы соғыс жариялау екенін жақсы түсінеміз деп ойлаймын.
Осы баяндаманың бұрынғы нұсқаларын оқығаны үшін Джессика Ливингстонға, Роберт Морриске және Сара Харлинге алғыс білдіремін.