Обложка Свой код

Свой код

Владимир Гарькаев

0% прочитано
Стандартный
Владимир Гарькаев

Свой код

Глава 1

Снова отказ.

Был серый и бессолнечный день, понедельник одним словом. Андрей толкнул дверь подъезда и поплелся к себе на четвёртый этаж. Руки были заняты сумкой с продуктами. Он зашел по дороге в магазин, чтобы хоть как-то оправдать этот день. За спиной осталось ещё одно собеседование, ещё один вежливый отказ, ещё одна фраза, которая въелась в память: «Вас учить надо, молодой человек».

Ремонта в подъезде не было уже давно. От того и пахло сыростью и краской. Он поднялся на четвёртый этаж, и каждый шаг отдавался глухой усталостью в ногах. Ключ провернулся в замке с привычным щелчком.

Квартира встретила его тишиной и идеальным порядком. Андрей ненавидел беспорядок — когда все на своих местах, то и искать знаешь где. Он поставил сумку на кухне и прошёл в комнату. На столе, как верный часовой, стоял старый системный блок — серый, пыльный, с поцарапанной крышкой. Рядом с ним застыла чашка, с недопитым кофе.

Андрей потрогал её пальцем — давно остыл. Как и его энтузиазм после утреннего собеседования. Он наводит себе новый кофе и вспоминает свои предыдущие собеседования. И каждый раз одно и тоже: отказы, отказы, отказы. А причина, так вообще неизменна: «У вас молодой человек опыта нет. Вас учить надо». Вот тебе и работа по специальности. Диплом есть, знания есть. Опыта нет. И это превращается в замкнутый круг.

Он взял телефон, чтобы отвлечься. В мессенджере висело сообщение от Льва — одногруппника, который уже полгода работал в аутсорсе:

«Ну чё взяли?»

Андрей помедлил, потом написал:

«Нет. Опыта нет.»

«Слушай… у нас тут стажёра ищут. Могу контракт скинуть. Платят немного, но хоть опыт»

«Давай»

«Держи»

Андрей открыл ссылку, посмотрел требования — все как всегда. Закрыл чат и отложил телефон. Диалог с Львом оставил неприятный осадок. Словно ему снова напомнили, что он новенький и ещё очень «зелёный».

Он сел за компьютер и открыл почту. Там нашёл новую тему. Тема скучная неинтересная. Но делать нечего. Деньги нужны.

Он открыл редактор начал писать статью. Вначале через не могу, с трудом подбирая слова. Неожиданно рутинная и скучная тема раскрылась с новой стороны— выявилась новая деталь. Пришлось ворошить документацию и нашел неочевидное решение. Незаметно он втянулся и проработал до самого вечера. Статья перестала быть просто работой. Статья захватила его целиком. Сохранил черновик и выключил компьютер.

Пошел на кухню. Готовить себе ужин. А затем отправился в душ. Горячая вода смывала усталость, но не мысли.

Все. На сегодня хватит — сказал он себе — Пора отдыхать. Завтра будет новый день.

Он лёг в кровать. И новое собеседование. И, скорее всего, новый отказ.

Андрей повернулся на бок и закрыл глаза. Но перед тем как провалиться в сон, мелькнула мысль: «А что, если не искать работу, а сделать что-то самому?»

Мысль пришла и ушла. Он уснул.

Точка невозврата.

Андрей проснулся от того, что за окном было так же серо, как вчера. Шторы он не закрывал — не видел смысла. Будильник прозвенел в восемь, но встал не сразу — пролежал ещё полчаса, глядя в стену. Мысли не шли. Просто пустота.

Потом встал, поставил кофе, приготовил бутерброд — всё на автомате. И пошёл загружать компьютер. Вентилятор гудел, жёсткий диск щёлкал. Через некоторое время старый друг ожил. Андрей открыл вчерашний файл. Текст был на месте. Он выдохнул и начал править — статья требовала завершения, редактор ждал.

Он работал около часа. Чувство вчерашнего вдохновения ушло, осталась только необходимость дописать и отправить. Андрей уже подбирался к финальной части, когда курсор замер. На секунду. Потом экран погас — и загорелся снова. Зависла вся система. Никакая клавиша не реагировала. Ни Ctrl+Alt+Del, ни даже кнопка CapsLock не зажигалась.

— Ну давай, только не сейчас, — сказал он в пустоту.

Система не ответила. Она просто стояла, как вкопанная, и насмешливо показывала чёрный экран с белым курсором, который не двигался.

Андрей подождал минуту, другую. Ничего. Нажал кнопку перезагрузки на системном блоке — с силой, почти с яростью. Компьютер перезагрузился и показал рабочий стол.

Он открыл файл. Пустой.

Не повреждённый, не битый — просто нулевой размер. Вчерашние двадцать страниц исчезли. Как будто их никогда не существовало.

— Нет, — сказал он тихо. — Только не это.

Он проверил папку с бэкапами. Пусто. Автовосстановление не сработало. Залез во временные файлы — ничего. Текст ушёл в никуда.

Андрей откинулся на спинку стула и закрыл глаза. В груди разрасталась холодная пустота. Не просто злость. Что-то более глубокое, давнее. Он вспомнил, как эта же система съедала его курсовую на втором курсе. Как вылетала во время защиты диплома. Как тормозила в самые неподходящие моменты. Он терпел тогда. И сейчас терпел.

Внутри щёлкнуло. Не громко, не пафосно — просто переключатель. Словно наконец принял решение, которое давно назревало.

Андрей закрыл текстовый редактор. Открыл браузер и ввёл в поиск:

«Создание операционной системы с нуля»

Смотрел на результаты и чувствовал, как внутри разгорается что-то новое. Не злость. Не отчаяние. Упрямство. Если этот мир не даёт ему работу, если его система каждый день плюёт ему в лицо — он сделает свою. Свою. С нуля.

Он просидел за поиском до вечера, не замечая времени.

Первый шаг в пустоту.

Андрей не спал почти всю ночь. Он лежал, ворочался и переваривал вчерашнее решение. «Операционная система с нуля» — эти слова звучали и звучали в его мозгу. Это казалось чем-то нереальным, но мысль его не отпускала.

Утром он встал рано. Так рано, что даже опередил будильник. Не позавтракав, сразу сел за компьютер.

Первым делом открыл поиск. Статей было много — от поверхностных обзоров до электронных многотомников известных авторов. Андрей бежал по ним глазами, сохранял ссылки, делал закладки. Через час голова шла уже кругом: ядро, загрузчик, iso-файл, виртуальная память, драйверы. И он понял: нужен перерыв.

Он выбрал язык «Си». Единственный язык, который он знал достаточно серьёзно — его учили в колледже, и он даже писал на нем лабораторные и курсовые. «Сойдёт, для начала» — решил он. И после небольшого перерыва продолжил работу. Надо было найти, как скомпилировать ядро. То есть залить фундамент будущего небоскреба так, чтобы после того, как на него будут положены все этажи и коммуникации, он не рухнул. В первый день он просидел до двух ночи. На следующий день до трёх. А потом вообще лег спать утром. Ошибки лезли и лезли.

Через два месяца, когда отчаяние накатило с такой силой, что он чуть было всё не бросил. Компиляция прошла без ошибок. Вылезло всего одно предупреждение. «Потом поправлю»— решил Андрей. Он превратил архитектурный план, в осязаемый город, с улицами, домами и коммуникациями(собрал образ ОС). Записал на флешку, перезагрузил компьютер. Экран погас. Затем — просто чёрный экран. И на нём единственная строчка: Oasis OS Он смотрел на неё секунд десять. Боясь, что она пропадет. Потом медленно набрал: help Система ответила списком. И выдала команды, целых три штуки. Примитивно. Да. Убого. Да. Но это работало. Андрей откинулся на спинку кресла. Улыбнулся. По настоящему, быть может впервые за последние несколько недель. Он понял: Это только начало. Работы ещё непочатый край. Столько же ошибок, бессонных ночей. А вместе с этим всем — разочарований и сомнений. Но он сделал первый шаг. И уже не мог остановиться.

Круг непонимания.

Прошло ещё три месяца. Андрей за это время практически не выходил из дома. Распорядок дня был один: вставал, садился за компьютер и работал до позднего вечера, а иногда и ночи. С небольшими перерывами на обед. Бывало, что засыпал прямо за столом, клавиатура была вместо подушки. Сначала это было интересно. Потом уже навязчиво. А теперь это ему было просто необходимо.

Он перестал отвечать на сообщения, пропускал звонки. Редактор звонил реже — статьи он сдавал в срок, но работал уже без интереса и азарта, лишь бы отвязались. Деньги капали, но с каждым разом их становилось всё меньше. Андрей этого не замечал.

Однажды вечером в дверь постучали. Он открыл — на пороге стояла Аня. Девушка, с которой он встречался уже больше года. Она смотрела на него устало и встревоженно.

— Ты трубку не берёшь уже неделю, — сказала она вместо приветствия — Я думала, с тобой что-то случилось.

— Извини, я закрутился, — Андрей отступил, пропуская её в коридор.

Она вошла в комнату и остановилась. На столе, как и прежде стоял монитор, но теперь вокруг него валялись распечатки, книги, флешки, мятые бумажки с записями. Да и сам монитор был увешан такими же. Чашки из под кофе громоздились на подоконнике в таком количестве, что напоить можно было полдома.

— Это что такое? — Аня обвела рукой комнату. — Ты что перестал убираться?

— Я работаю — ответил он.

— Над чем?

— Пишу свою операционную систему.

Она смотрела на него таким взглядом, словно он сказал, что завтра летит на Марс.

— Ты серьёзно?

— Абсолютно.

— Андрей, — голос стал мягче, но с металлическим оттенком — ты не находишь работу уже три месяца. У тебя денег нет, почти. И вместо того, чтобы искать работу, ты… играешься в компьютер?

— Я не играюсь — сказал он тихо. — Я создаю.

Аня покачала головой.

— Я не понимаю. Зачем тебе это? Тебе нужна ра-бо-та, а не хобби.

Андрей хотел всё объяснить. Что это далеко не хобби. Что у него получилось сделать то, на что способны немногие. Но как это объяснить человеку, который не имеет об этом не малейшего представления.

— Я просто прошу тебя, — сказала она. — вернись в реальность. Пока не поздно.

Они проговорили минут двадцать. И он чувствовал, как между ними растет, если не Великая Китайская Стена, то нечто подобное выросло точно. И название этому Стена непонимания. Аня ушла.

Следующим утром, не успел он ещё допить свой кофе, позвонила мать. — Сынок, как у тебя дела? Что с работой?

— Всё нормально — ответил он.

— Я вчера Аню встретила. Она сказала, что ты взрослый человек, а сидишь за компьютером и играешь в какую-то ерунду. Ты что бросаешь её? Да и всё тоже? А жить-то на что будешь? Андрей, ты взрослый человек, надо же о будущем думать. Вон соседка говорит, её сын в такси устроился, хорошо зарабатывает. Может и тебе тоже стоит?

—Мам, я не пойду в такси.

—А куда ты пойдешь? С твоим этим… компьютерным? Говорила же тебе, что не специальность это, а так.

— Всё будет хорошо. Мама я работаю.

— Ох. Надеюсь. — вздохнула она.

После разговора Андрей долго сидел, просто уставившись в экран. Система терпеливо его ждала. Он взял телефон и написал сообщение Льву:

«Как дела на работе?»

Тот ответил быстро:

«Нормально, тружусь потихоньку. А ты как? По тем ссылкам, что я дал, ничего?»

«Нет. Я решил заняться другим.»

«Чем?»

«Пишу свою ОС»

Только минуты через две пришел ответ.

«Ты серьёзно?»

«Да»

«Андрей, не трать время. Это сотни человеко-лет работы. Возьми любую альтернативу windows, поставь и не парься»

Андрей прочитал сообщение дважды. Потом ещё дважды. Потом отложил телефон. Он сидел и смотрел на экран монитора, где на черном фоне мигал белый курсор. Система терпеливо ждала. И он понял одну вещь: объяснять бесполезно. Особо его никто не поймет.

«Может они правы? — закралась к нему мысль — «Может я действительно зря трачу время?».

Он почувствовал пустоту. Захотелось всё забыть, остановиться. Но рука сама потянулась к клавиатуре. Он открыл файл и начал править.

Не потому, что верил в успех. А потому, что остановиться уже не мог.

Форум. Чужие голоса.

Прошло ещё полтора месяца. Андрей довел систему до состояния, в котором она более-менее стабильно работала в эмуляторе. Система загружалась и выполняла свои первые, пусть и простые, команды. Она не спотыкалась на первом же круге, а уверенно продолжала бег. И это была его очередная маленькая победа.

Следующий шаг, который необходимо было сделать. Это собрать образ. Он нажал «собрать», и на экране поползла полоска прогресса. Спустя час вся его сложная, хрупкая система, которую он настраивал неделями, сжалась в один небольшой бинарный файл. Словно это был карточный домик, который сложили и положили в упаковку. Он зарегистрировался на форуме, где когда-то читал чужие обсуждения и написал короткий пост. Тему озаглавил просто: «ОС с нуля(Си,х86). Образ для тестирования.» Он долго не решался нажать кнопку «Отправить». Пальцы дрожали, но не от страха, а от волнения. Это было страшнее, чем любое собеседование. Там просто отказывали — здесь могли в грязь втоптать. Даже не задумываясь. Наконец он решился и нажал. Первые ответы пришли через час. И они были именно такими, которых он боялся больше всего.

«Очередной велосипед» «А зачем? Есть же Windows, Альт и другие»

«Скопировал из туториала и говоришь теперь, что своя?»

Андрей читал и чувствовал, как все внутри сжимается. Прочитав последнее сообщение, он подумал: «Я не использовал шпаргалку. Я до всего доходил сам». Он уже хотел было ответить: «Я делал это сам, с нуля». Но вовремя вспомнил разговор с Аней и мамой и понял: начать оправдываться — сделать только хуже. Вечером он зашел опять. Увидел новые сообщения. «Попробовал запустить. Вылетело через минуту, когда ввёл Is. Ошибка в менеджере памяти».

«Говорю же — кривой код».

«Умник. Зачем ты вообще это выложил?»

Андрей закрыл вкладку. Потом открыл и пробежался по ветке. Один троллинг. Он еле нашел сообщение, где было сказано про ошибку в менеджере памяти. Хоть кто-то оставил замечание по делу. Это было полезно. Он сидел и смотрел на экран монитора. Зачем открылся людям, которые только и ждут, чтобы кого-нибудь унизить? У него не было ответа на этот вопрос. Рука уже двигала мышку к кнопке «Удалить тему» и как раз в этот момент пришло новое сообщение. От пользователя с ником tech_observer.

«Странно, но меня заинтересовало. Ты пишешь, что используешь одноуровневую схему управления памятью. Почему выбрал именно её? В стандартных подходах обычно используют двухуровневую, для гибкости. Что заставило тебя отказаться? Это действительно нестандартное решение. Можно подробнее?»

Андрей перечитал сообщение раз пять, а то и больше. Не веря своим глазам. В сообщении не было и намека на насмешку. Только любопытство. При чём настоящее, профессиональное любопытство. Он сглотнул, потому что в горле пересохло так, словно он перешёл через пустыню Сахару. Он выпил воды и начал печатать ответ. Объяснял, почему выбрал эту схему, какие преимущества увидел, где могут быть, возможные, слабые места. Он писал долго, стараясь быть точным. Не раз переписывал ответ. Когда ответ был готов, он его перечитал ещё раз и отправил. В груди разлилось что-то тёплое. Это было новое чувство. Маленькое, почти незаметное, но оно у него было. Его заметили. Пусть не все, но хотя бы один человек. Пока один. Он выключил компьютер и впервые за долгое время лёг спать с чувством, что время потрачено не зря.

Первый свет.

Утром он снова перечитал сообщение от tech_observer, а затем свой ответ. Он отметил, что вопрос был умным, профессиональным. Андрей понял, что нужно ещё для полноты ответа. Он отредактировал свой ответ, приложив к нему кусок кода для наглядности и отправил отредактированный ответ. Через два часа пришло новое сообщение:

«Нестандартно. Я бы сделал иначе, но у твоего подхода есть своя логика. Интересно. Удачи с проектом»

Андрей улыбнулся. Один человек заинтересовался и не просто заинтересовался, а исследует его работу. Этого достаточно, чтобы не бросить. В тот же день он зашёл на форум ещё раз, ближе к вечеру. И нашёл ещё одно сообщение от tech_observer: «Кстати, заметил, что у тебя в коде есть одно странное место с обработкой прерываний. Если хочешь, могу показать, как это обычно делают. Но если это твоё осознанное решение — тогда любопытно, почему именно так».

Андрей перечитал сообщение несколько раз и понял: человек не троллит, он реально пытается ему помочь или понять, как работает его ОС. Это было новое чувство — когда кто-то не смеётся и издевается, а хочет разобраться. Он думал над ответом. Составил его и отправил. «Это было осознанное решение. Я подумал, что при такой схеме меньше накладных расходов, хотя понимаю, что могут быть сложности с расширением. Если я ошибаюсь — скажите».

Ответ пришёл очень быстро: «Я бы сказал, что ошибаешься. Просто это неочевидный путь. Если у тебя это работает — значит ты сделал всё правильно».

Андрей встал и подошёл к окну. Через общение с tech_observer он увидел, что его проект перестал быть «очередным велосипедом». Теперь его рассматривали всерьёз. Следующие несколько дней он активно правил код. Ошибку, на которую указали на форуме, он нашёл и исправил. Система стала стабильнее. Теперь она уже бежала не только первый круг без сбоев, но и среднюю дистанцию совсем не спотыкаясь. Андрей ощутил, что она готова. Готова к чему? К настоящему тесту. В пятницу вечером он наконец решился. Достал флешку и записал образ. Выключил компьютер, вставил флешку и включил снова. Экран погас, затем загорелся — и на нём появилось приглашение загрузчика. Андрей выбрал систему. На секунду экран полностью погас. Тишина в комнате была абсолютной. Он затаил дыхание — сердце колотилось где-то в горле, пальцы непроизвольно сжались в кулаки. Он чувствовал, как каждая клетка его тела напряглась.

Чёрный экран. Затем. Белый курсор. И… надпись.

Oasis ОS Андрей смотрел на приглашение и не мог поверить. Дышать получалось через раз. Он подошёл к окну и приоткрыл его. Вернулся за компьютер и набрал: help Система ответила списком команд. Все работали. Ни одного сбоя.

Андрей откинулся в кресле и закрыл глаза. Он просидел так несколько минут — просто дышал, стараясь унять дрожь в руках и выровнять ритм дыхания. Ему не хотелось кричать, чтобы слышал весь дом. Ему не хотелось прыгать так, чтобы пришли соседи и сказали, что у них люстра отвалилась. Он просто сидел и дышал. Дрожь в руках постепенно уходила. Он открыл глаза и посмотрел на монитор. Всё работало. Его система. С нуля. Он был в квартире один, но не чувствовал одиночества. Он сделал то, что казалось невозможным. Посмотрел в окно — за ним начинался рассвет. Медленный, тихий, золотистый. Андрей не спал всю ночь, но усталости не было. Только лёгкость и ощущение, что он пересёк какую-то невидимую черту. Он снова улыбнулся повернулся к монитору. Система ждала.

Письмо.

Прошёл ещё месяц. Андрей жил с ощущением тихой победы. Система работала, форумчане перестали троллить. Появилось несколько человек, которые задавали вопросы по делу. Tech_observer писал редко, но всегда по существу. Иногда он указывал на узкие места, на своего рода мины замедленного действия, которые сработают при значительном увеличении нагрузки. Иногда хвалил за нестандартные решения.

Андрей обновил резюме. В графе «Опыт работы» написал: «Разработка собственной операционной системы с нуля(Си,х86). Реализовано ядро, управление памятью, базовая файловая система». Строчка была короткой, но внутри стояла целая жизнь. Он разослал резюме по новым вакансиям. Однако, ответов не последовало. Однажды утром он зашёл на форум и увидел сообщение от tech_observer. Оно было не таким, как всегда: «Привет. Меня зовут Валерий. Я старший разработчик в компании «Интеграл-Софт». Мы занимаемся системным программированием. Я слежу за твоим проектом с самого начала. Твой подход к управлению памятью и обработке прерываний показывает, что ты мыслишь нестандартно. Это редкость. Особенно для самоучек без опыта.

Кратко: Я показывал твой код нашему техническому директору. Он тоже заинтересовался. Если ты всё ещё ищешь работу — напиши мне на почту. Обсудим детали. Контакты внизу». Андрей прочитал сообщение один раз, а затем ещё раз и ещё раз. И ещё раз… и ещё. Он и сам бы не смог точно ответить сколько раз он его перечитал. Он сидел неподвижно и смотрел на монитор. «Старший разработчик», «компания «Интеграл-Софт»», «показал код техническому директору» — эти слова звучали как из другого мира, ранее ему недоступного. Мира, в который его не пускали почти целый год. Он открыл почту. Написал письмо Валерию. Короткое, но очень тёплое. Отправил и отключил телефон — чтобы не проверять каждые пять минут. Ответ пришел на следующий день. Он содержал предложение о работе. С испытательным сроком, но с чётким окладом и перспективами. Содержал условия о компенсации мобильной связи, ДМС, отпуске и % оплаты больничных листов. Андрей перечитал письмо несколько раз. Потом отложил телефон и посмотрел на монитор. Oasis OS мигала на чёрном фоне экрана монитора. Его система. Его пропуск в мир, который ещё вчера казался запертым навсегда.

Он не стал никому звонить. Просто сидел и смотрел в окно — серый, но уже не безнадёжный день сменялся вечером. Замкнутый круг, наконец-то, разомкнулся.

Проект с нуля в команде.

Прошла ещё два месяца.

Андрей сидел в переговорной компании «Интеграл-Софт» за длинным столом, уставленным ноутбуками. Вокруг шестеро разработчиков и тимлид. Этакий дирижёр оркестра разработчиков. Который сам, может пишет код и мало, зато его самые сложные части. И команда под его руководством работает, как хорошо слаженный оркестр мирового уровня. Они обсуждали архитектуру нового продукта: корпоративный мессенджер для крупного заказчика. — Итак, — сказал тимлид, открывая схему на проекторе, — требования известны. Нужна надёжная система обмена сообщениями, шифрование, интеграция с документами. Срок — полгода. Команда собрана, все — профи. Андрей слушал и чувствовал, как внутри разгорается знакомое чувство. Он был здесь не главным. Он — стажёр. В команду его взяли, потому что увидели в нем непросто самоучку, а человека, который довел свой проект до конца. — Андрей, — обратился к нему тимлид, — ты подключаешься к модулю аутентификации. Задача небольшая, но важная. Разберёшься? — Да, — ответил он. — Без проблем.

Он открыл ноутбук. На рабочем столе мигал курсор: Oasis OS. Система, которую он написал сам, теперь работала на рабочем компьютере. Компания разрешила — после того, как он показал код и доказал на тестах, что она надежная. Андрей посмотрел на экран и улыбнулся. Девять с половиной месяцев назад он писал статьи в интернет-журналах, чтобы оплатить аренду. Он пытался объяснить Ане, что это не игра, а работа. Девять с половиной месяцев назад он впервые ввёл в поиске: «Создание операционной системы с нуля». Он перевёл взгляд на окно. За ним — тот же серый город. Но теперь он знал, что внутри него есть место, которое он создал себе сам. Он закрыл ноутбук и посмотрел на коллег. Впереди — первый серьёзный проект в его жизни. Он не знал, чем всё закончится. Одно он знал точно: он на своём месте.

Спасибо за чтение

Вернуться к книге