Кар'єра програміста. Глава 2. Школа чи самоосвіта

Продовження оповідання «Кар'єра програміста».

Надворі стояв 2001 рік. Рік, у який вийшла крута операційна система — Windows XP. Коли виник rsdn.ru. Рік народження C# та .NET Framework. Перший рік тисячоліття. І рік експонентного зростання потужностей нового заліза: Pentium IV, 256 mb ram.

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


Того літа, перед вступом до коледжу, я ґрунтовно зайнявся вивченням усіх можливих технологій, які публікувалися в журналі «Хакер». Я зачитував і перечитував його до дірок. Особливо мені подобалися інтерв'ю з реальними хакерами та їхні поради.
Більшість крутих хакерів сиділо на «Лінусі». А «маздай» (Windows) був для ламерів. Хто читав журнал, той пам'ятає стилістику постів у ньому. Тому в моєму неокреплом розумі боролися між собою дві ідеї - залишати Windows або бути крутим і сидіти чисто на Лінуксі.
Кожен новий випуск журналу Хакер, кидав мені новий привід для форматування диска та встановлення то Linux Red Hat 7, то Windows Me. Зрозуміло ніякого вектора навчання у мене не було, і те, що я вичитував у журналах або на піратських CD на кшталт «Секрети Хакерів», те й робив. Установка двох ОС паралельно теж стиралася, після нового вкидання в дусі Windows XP aka папуга — це для домогосподарок. А якщо хочеш займатися серйозними речами, то маєш працювати з консолі Лінуха із заплющеними очима». Зрозуміло, я хотів займатися хакінгом систем, розуміти, як влаштована мережа і бути всемогутнім Анонімусом у той час.

Диск форматувався без шкоди, і на нього ставився дистрибутив Unix-подібної системи. Так Так. Якось я прочитав інтерв'ю реального хакера, який використовує лише FreeBSD 4.3 з консолі. При цьому за ним вважалися злами банків та державних систем. Це був удар блискавки в голову, і я 5 разів ставив BSD ОС, як основну систему. Проблема була в тому, що після встановлення, окрім голої консолі, там нічого не було. Навіть звуку. І щоб поставити KDE2 і ввімкнути звук, потрібно було чимало потанцювати з бубном і поправити кілька конфігів.

Кар'єра програміста. Глава 2. Школа чи самоосвіта
Дистрибутив FreeBSD 4.3 - найбільша хакерська ОС

Про літературу

Як тільки в мене з'явився комп'ютер, я почав купувати книжки з програмування. Першою була інструкція з «Turbo Pascal 7.0». Це й не дивно, адже Паскаль я вже трохи знав із курсів програмування, і можна було продовжувати навчання самостійно. Проблема в тому, що Хакери не пишуть на Паскалі. Тоді в моді була мова Perl, або, для крутіших хлопців — це був С/С++. Принаймні, так писали в журналі. І першою прочитаною до кінця книгою була «Мова програмування Сі» — Кернігана та Рітчі. До речі, я навчався в середовищі Linux
і використовував gcc та вбудований редактор KDE для написання коду.

Слідом за цією книгою була куплена «Енциклопедія UNIX». Вона важила кілограма 3 і була надрукована на сторінках формату А3.
На лицьовій стороні книги на весь зріст був зображений мультяшний диявол з вилами, а коштувала вона тоді в Україні 125 гривень (це приблизно 25$ 2001-го). Щоб купити книгу, я попросив у борг грошей у шкільного друга, решту додали батьки. Потім, я з захопленням став вивчати команди Unix, редактор vim і emacs, структуру файлової системи та начинки конфіг файлів. Без малого 700 сторінок енциклопедії були проковтнуті і я став на крок ближче до мрії стати кул-Хацкером.

Кар'єра програміста. Глава 2. Школа чи самоосвіта
Енциклопедія UNIX - Одна з перших прочитаних книг

Усі гроші, які давали мені люблячі дідусь із бабусею та батьки я витрачав на книги. Наступною книгою була "С++ за 21 день". Назва була дуже привабливою, і тому я не дивився на інші книги, вищої якості. Незважаючи на це всі вихідники були переписані з книги приблизно за цей термін в 3 тижні, і вже дещо в С + + я розумів. Хоча швидше більше не розумів, що написано в цих лістингах. Але прогрес був.

Якби в мене запитали, яка книга найбільше вплинула на твою кар'єру, я б не замислюючись відповів — «Мистецтво програмування» — Д. Кнут. Це була перепрошивка мозку. Я не можу точно розповісти, як саме ця книга потрапила мені до рук, але вона справила найсильніший вплив на мою подальшу кар'єру.

Кар'єра програміста. Глава 2. Школа чи самоосвіта
Мистецтво Програмування - must read

Книги я купував здебільшого на радіоринку, який працював лише в неділю. Заощадивши на сніданках чергові кілька десятків гривень, я подався за новою книгою по С++ або Perl. Вибір був досить великий, але наставника у мене не було, тож вивчалося все поспіль. Я попросив продавця, порекомендувати мені щось із програмування. І наскільки я пам'ятаю, він дістав із полиці «Мистецтво Програмування. Перший Том». Книжка явно була вже користована. Куточки обкладинки були зігнуті, а з задньої сторони виднілася велика подряпина, саме там де залишив свій відгук Білл Гейтс: «Якщо ви прочитаєте цю книгу, вам неодмінно варто надіслати мені резюме» було підписано їм. Про Гейтса я знав із журналів, і подумав, що було б непогано відправити йому резюме, хоч його й хаяли всі хакери. Книжка коштувала 72 грн. (15 $), і я стрімко рвонув додому на трамваї вивчати новий матеріал.

Наскільки глибокі та базові речі я читав, зрозуміло, я не міг розуміти у 15 років. Але старанно намагався виконати кожну вправу. Одного разу мені навіть вдалося правильно вирішити завдання з оцінкою складності 25 або 30. Це була глава про математичну індукцію. Хоч шкільну математику я не любив і схоплював погано, але над матюком. аналізом Кнута - я просиджував годинами.
Далі, у другому розділі йшли структури даних. Ці образи та картинки зв'язкових списків, бінарних дерев, стеків та черг досі у мене перед очима. За 12 років кар'єри в комерційній розробці я використовував більшість мов загального призначення.
Це C/C++, C#, Java, Python, JavaScript, Delphi. І як би не називалася мова, у її стандартній бібліотеці були структури даних та алгоритми, описані Дональдом Кнутом у своєму тритомнику. Тому вивчити щось нове — не займає багато часу.

Перший том було проковтнуто досить швидко. Наведені в книзі Кнута алгоритми, я переписував на мову С. Не завжди виходило, але чим більше я практикувався, тим більша ясність приходила. Ретельності було не позичати. Закінчивши з першим томом, я не замислюючись, побіг купувати другий і третій. Другий я поки що відклав убік, а ось за третій (Сортування та Пошук) взявся ґрунтовно.
Я чудово пам'ятаю, як списував цілий зошит, «інтерпретуючи» алгоритми сортування та пошуку. Також як і зі структурами даних, бінарний пошук та швидке сортування візуалізуються в моєму мозку блискавично, згадуючи як вони виглядають схематично у третьому томі Кнута.
Батіг читався скрізь. І навіть вирушивши на море, не маючи поряд ПК, я все одно прописував алгоритми в зошиті і проганяв послідовності чисел через них. Досі пам'ятаю, скільки мук мені варто було освоїти пірамідальне сортування, але воно того варте.

Наступною книгою, яка виявила на мене сильний вплив, була «Книга Дракона». Вона ж "Компілятори: Принципи, технології, інструменти" - А.Ахо, Р.Мережі. Їй передував Герберт Шилтд, із просунутими завданнями на С++. Саме тут крапки зійшли воєдино.
Завдяки Шилдту, я навчився писати парсери та інтерпретатори мов. А потім, Книга Дракона, наштовхнула мене на написання власного компілятора С++.

Кар'єра програміста. Глава 2. Школа чи самоосвіта
Книга Дракона

На той час мені провели модемний скреготливий інтернет, і я багато часу проводив на найпопулярнішому сайті для програмістів — rsdn.ru. Там панував С++ і кожен профі, міг відповісти на питання, які я не мав сили здолати. Це мене зачіпало, і я розумів,
що мені далеко до цих бородатих дядьків, тому потрібно вивчити нутрощі плюсів «От і До». Така мотивація призвела мене до першого серйозного проекту — власного компілятора С++ стандарту 1998 року. Більш детальну історію та вихідні джерела ви можете знайти в цьому пості habr.com/ua/post/322656.

Школа чи самоосвіта

Але повернемося до реальності поза IDE. Хоча, на той час, я все більше віддалявся від реального життя і занурювався у віртуальне, проте вік і загальноприйняті норми змушували ходити мене до коледжу. Це було справжнім катуванням. Я зовсім не розумів, що роблю в цьому закладі та навіщо слухаю цю інформацію. У моїй голові були зовсім інші пріоритети. Вивчення Visual Studio 6.0, спроби з WinApi та Delphi 6.
Чудовий сайт firststeps.ru, який дозволяв радіти кожному виконаному кроці, хоча загальної картини я не розумів. Наприклад, у тій же технології MFC або ActiveX.
А що у коледжі? Це була марна трата часу. Взагалі, якщо торкатися теми навчання — я вчився погано. До 6 класу був круглим відмінником, а потім полетіли трійки, і вже до 8-9 класу, часто прогулював уроки, за що отримував не ілюзорних ременів від батьків.
Тому, прийшовши до коледжу, ентузіазму теж мало.
— Де програмування? Задавав я собі питання. А його в перше півріччя не було. Натомість була інформатика з MS-DOS та Офіс, а також загальноосвітні предмети.

На додачу до всього, у мене був замкнутий характер, і я був дуже скромний. Цей новий різношерстий колектив явно не викликав довіри. І це було взаємно. Тому різного роду знущання не змусили на себе довго чекати. Я довго терпів, доки не витримав і не надавав по обличчю одному з кривдників прямо на уроці. Так що він полетів за парти. Дякую батькові - битися він мене навчив з дитинства, і за гострого бажання я міг застосувати фізичну силу. Але відбувалося це дуже рідко, я частіше терпів знущання, чекаючи максимальної точки кипіння.
До речі, кривдник, сильно засмучений від того, що відбувається, але як і раніше відчуваючи свою перевагу, викликав мене на бій у відповідь. Вже на пустирі за навчальним закладом.
Це були не дитячі махання кулачками, як було у школі. Тут був знатний махач, з розбитими носами та купою крові. Хлопець виявився теж не з боязкого десятка і вміло відважував хуки та аперкоти. Всі залишилися живі, і з того часу до мене ніхто більше не задерся.
у цьому «коледжі для програмістів». У мене ж бажання туди ходити і зовсім зникло незабаром. Тому я перестав ходити до нього, і жодні погрози батьків на мене не діяли. Якимось дивом мені зарахували перебування в коледжі за 10-й клас школи, і я мав право перейти до 11-го.

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

Не розтікаючись думкою по дереву, зі школи я теж пішов. Де я відчував себе комфортно — так це перед монітором комп'ютера із зачиненими дверима в мою кімнату. Це мало сенс, і я інтуїтивно відчував, що роблю правильні речі. А ця школа — марна справа, та ще й знущання ці терпіти, які з кожним днем ​​набували все більш витонченого характеру… Все, вистачить з мене.
Після чергового конфлікту у класі, зі мною у головній ролі, я пішов зі школи і більше туди не ходив.
Десь 3 місяці я сидів удома, витрачаючи вільний час на вивчення С++/WinAPI/MFC та rsdn.ru.
Зрештою, не витримала директор школи та зателефонувала додому.
— Денісе, ти думаєш вчитися? Чи йтимеш? Вирішуй. У підвішеному стані ніхто тебе не залишить. - Заявила директор
- Буду йти - впевнено відповів я

І знову, та сама історія. Залишалося довчитися пів року, до закінчення школи. Не залишати мене без скоринки. Батьки махнули на мене рукою і покарали самому йти домовлятися з директором. Я прийшов до директора школи. Вона крикнула, щоб я знімав шапку, коли заходжу. Потім суворо запитала: «Що з тобою робити?». Зізнатися я й сам не знав, що робити. Мене цілком влаштовував нинішній стан речей. Нарешті вона взяла слово:
— «Значить вчинимо так. Я домовлюся з директором нашої вечірньої школи і ходитимеш туди».
- «Угу»

А вечірня школа — це був справжній рай для таких фрістайлерів як я. Хочеш ходи – хочеш не ходи. У класі вважалося 45 чоловік, їх на заняттях з'являлося від сили 6-7. Не впевнений, що всі і списки були живі, а також були на волі. Тому що тільки при мені однокласники викрадали чужий мотоцикл. Але факт залишався фактом. Я міг безлімітно прокачувати скіли програмування, а до школи ходити, коли дуже вже треба. Зрештою я її закінчив, склавши випускні іспити. Багато на них не вимагали, і ми навіть мали випускний. Випускний, сам собою — окрема байка. Пам'ятаю, що місцеві бандити-однокласники забрали в мене годинник. А тільки-но почувши своє прізвище, при врученні атестатів — я риссю метнувся за документом і кулею вилетів зі школи, щоб не натрапити ще на якісь неприємності.

Попереду було літо. З Дональдом Кнутом під пахвою на пляжі, морем, сонцем та доленосним рішенням написати свій великий проект (компілятор).
Далі буде ...

Джерело: habr.com

Додати коментар або відгук