Любов і піраньї - Максим Іванович Кідрук
Якщо говорити коротко, ранньої осені 2009-го моє життя складалося якнайліпшим чином. Все було добре. Навіть не добре, а класно. У мене настав повний дзен, чи феншуй, чи як там воно називається у китайців, коли почуваєшся абсолютно збалансованим, причому як морально, так і фізично. Життя нагадувало швейцарський годинник «Patek Philippe» або, ще краще, двигун спортивного «Porsche Cayman» — доладне й чудове ззовні, просте та надійне всередині. Я працював сам на себе, заробляв достатньо, аби вдовольняти свої невеликі потреби й потроху відкладати на наступні подорожі. Крім того, я багато писав, цебто, мав дещо, чого не мають значно заможніші й більш забезпечені люди, а саме — можливість самореалізації, хай невелике, та все ж поле для самовияву. На початку вересня вийшли у світ «Мексиканські хроніки», що започаткували велику мандрівну трилогію. Моє щасливе майбутнє яскраво палало й блискотіло перед очима, переливаючись, неначе полярне сяйво над Арктикою, причому, як ви вже зрозуміли, переважно рожевими кольорами.
Я навіть не припускав тоді, що менш ніж за півроку все — абсолютно все! — полетить шкереберть, і що найгірше — винним у тому стану я сам…
Однак це станеться аж за півроку, а поки життя текло м’яко й розмірено.
Свого часу, ще до того, як поїхати на навчання до Європи, податися у навіжені мандри Латинською Америкою та почати писати книжки, я досить довго працював у Києві програмістом, займаючись розробкою CAD-систем [4]. CAD-системи — це спеціальні комп’ютерні програми, які допомагають інженерам-конструкторам швидше і якісніше проектувати різні об’єкти, виконуючи замість них (замість інженерів, цебто) певну частину роботи. Чим більшу частину роботи проектанта виконує така програма, тим вона краща, і тим, відповідно, тупіший проектант. Три роки я докладав максимум зусиль, роблячи українських інженерів щодень тупішими й лінивішими, а потім вирішив покинути цю марудну справу. Сталося це головним чином через те, що одного дня я надибав сорокарічного чоловічка, який двадцять років пропрацював програмістом. Бідолаха виявився блідим, худим, затурканим і бородатим створінням, з розладнаними нервами, неадекватною перцепцією зовнішнього світу і незрозумілим баченням свого місця у ньому. Він безперестану барабанив ногою об підлогу з частотою 200+ ударів за хвилину, чухався під пахвами і час від часу бився полисілою головою об стіну. Я тоді, пригадую, подивившись на нього, зміркував, що не впевнений, ким хочу бути через двадцять років, зате точно знаю, що не маю ні найменшого бажання стати таким, як він. Так було покінчено з програмуванням.
Утім, трьох років роботи з програмними кодами вистачило, аби я відкрив для себе одну просту, але далеко не очевидну істину: за своєю суттю процес написання будь-якої комп’ютерної програми цілком і повністю відтворює процес становлення людського індивіда в суспільстві. Іншими словами, програмування — це наче дзеркало життя. Всі базові закони та правила, на основі яких створюються комп’ютерні програми, можна напряму, без змін та адаптації, застосовувати у житті.
Не буду заглиблюватись у філософію і не завалюватиму вас надокучливими програмістсько-світоглядними поняттями, ідеями та переконаннями. Якщо ви програміст або маєте хоч якийсь стосунок до програмування, ви зрозумієте мене без зайвих слів. Коли ж ви далекі від програмування, просто повірте мені на слово, а при нагоді попросіть знайомого програміста розказати вам про співвідношення між законами coding’у та головними житейськими принципами. Натомість перейду відразу до суті.
Одним із найголовніших законів, золотим правилом програміста, є аксіома: коли все працює — нічого не чіпай!
Поясню детальніше на прикладі з власного досвіду. Іноді «програмер» мусить не просто створювати «користувацькі» додатки та прикладні бібліотеки «з нуля», а й перероблювати чи виправляти програмні тексти своїх колег. Повірте, інквізиторські тортури — то ніщо, порівняно з намаганнями розібратись у чужому коді! Позаяк шляхів вирішення однієї проблеми безліч, то й алгоритми розв’язків, написані різними людьми, можуть бути абсолютно різними. Настільки різними, як арктична пустеля і тропічні джунглі. Через це іноді легше застрелити розробника, а потім застрелитися самому, ніж розбиратися у послідовності команд чужої програми.
Проте буває навпаки. Трапляються випадки, коли молоді недосвідчені програмісти з власної ініціативи беруться переробляти коди колег. Ось, скажімо, Вася, Петя чи Коля відкриває у debugger’і [5] відредагований і скомпільований код, написаний його товаришем, якимось Сашком, Славком чи Микитою, дивиться на виструнчену послідовність циклів, рекурсій [6] і підпроцедур та й каже:
— Ото вже цей Сашко (Славко чи Микита)! Хто ж так програми пише? Ай-яй-яй! От неекономне використання ресурсів! І чого його тільки в універі навчали? Це ж примітивна задача, зовсім простенький алгоритм, а він «роздув» програмний код до п’ятнадцяти тисяч рядків! Та тут можна все прописати, вклавшись максимум у п’ять тисяч…
Після таких слів Вася (Петя чи Коля), почісуючись від справедливого обурення, запасається пивом, закочує рукави і береться безжально правити вихідні коди, створені Сашком (Славком чи Микитою)… Днів так через три, маючи перед собою п’ятдесяттисяч хаотично переплетених рядків програмного коду і абсолютно неробочу кінцеву програму, марно намагаючись знайти помилку у рядку за номером 40243, Вася (Петя чи Коля) задумається над тим, що життя — то дуже інтересна штука, що з вибором професії можна було б не поспішати, і що Сашко (Славко чи, трясця його матері, Микита) не такий уже й дундук, яким видавався три дні назад.
Хворобою під назвою «патологічний потяг до оптимізації» страждають усі без винятку молоді програмісти. Потрібно щонайменше три роки стажу, щоби «програмер» нарешті розкумекав: код робочої програми (цебто, програми, яка працює відповідно до заданого алгоритму правильно і без збоїв), хай який недосконалий чи неоптимальний, нізащо, за жодних умов не