Добавить в корзинуПозвонить
Найти в Дзене
Яна Соколова

Почему он не спросил, кто это сделал на самом деле

Антон Сергеевич поставил флешку на стол и сказал: — Молодец, Климов. Серьёзная работа. Денис кивнул и посмотрел в окно. Вот и всё, что было. Кивок и взгляд в окно. Но Антон Сергеевич вёл кружок одиннадцать лет, и за одиннадцать лет он видел, как дети реагируют на похвалу за своё. Они краснеют. Или улыбаются так, что видны дёсны. Или начинают объяснять — торопливо, сбиваясь, потому что внутри всё ещё кипит. Денис не сделал ничего из этого. Он просто кивнул. И посмотрел в окно. На флешке был проект — система визуализации сортировочных алгоритмов с интерфейсом, которому позавидовал бы второкурсник приличного технического вуза. Чистый React, комментарии в коде на английском, анимации через requestAnimationFrame. Антон Сергеевич провёл в программировании двадцать два года, из них восемь — в коммерческой разработке, прежде чем ушёл в школу. Он знал, что это такое. Денису было четырнадцать. — Откуда ты это знаешь? — спросил Антон Сергеевич. — Учил, — сказал Денис. — В интернете. — React? — Ну

Антон Сергеевич поставил флешку на стол и сказал:

— Молодец, Климов. Серьёзная работа.

Денис кивнул и посмотрел в окно.

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

Он просто кивнул. И посмотрел в окно.

На флешке был проект — система визуализации сортировочных алгоритмов с интерфейсом, которому позавидовал бы второкурсник приличного технического вуза. Чистый React, комментарии в коде на английском, анимации через requestAnimationFrame. Антон Сергеевич провёл в программировании двадцать два года, из них восемь — в коммерческой разработке, прежде чем ушёл в школу. Он знал, что это такое.

Денису было четырнадцать.

— Откуда ты это знаешь? — спросил Антон Сергеевич.

— Учил, — сказал Денис. — В интернете.

— React?

— Ну да.

Антон Сергеевич убрал флешку в ящик стола.

— Хорошо. На городской конкурс подаём в пятницу.

Денис снова кивнул и вышел.

Антон Сергеевич остался один в кабинете, где пахло старыми системными блоками и засохшим маркером. За окном была большая перемена, слышался топот в коридоре, чей-то визг. Он открыл ящик, достал флешку, повертел в руках.

Положил обратно.

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

Он достал телефон и написал Денису в мессенджер: «Завтра останься после кружка, разберём твой проект подробнее».

Денис прочитал. Не ответил.

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

Антон Сергеевич закрыл ноутбук.

Его зарплата в школе была тридцать восемь тысяч рублей. Плюс надбавка за кружок — четыре двести. В коммерческой разработке он получал в четыре раза больше, но там было другое, о чём он не хотел сейчас думать. Городской конкурс давал школе баллы в рейтинге. Директриса Валентина Юрьевна ему об этом напомнила в сентябре, в октябре и в ноябре.

Утром он пришёл на кружок и провёл занятие про циклы. Денис сидел в третьем ряду и правильно отвечал на вопросы. Правильно, но без интереса — как отвечают на вопросы о том, что давно известно.

После кружка остались двое: Денис и Маша Горелова, которая вечно забывала флешку и переписывала задание в тетрадь от руки.

— Маша, завтра, — сказал Антон Сергеевич.

Маша обиженно собрала тетрадь и вышла, стуча табуреткой о ножку стола.

Они остались вдвоём. Денис сидел прямо, руки на коленях.

— Объясни мне вот это место, — Антон Сергеевич развернул ноутбук с открытым кодом. Экран — на Дениса.

Денис посмотрел. Молчал секунд десять.

— Это рендеринг, — сказал он наконец.

— Я вижу, что рендеринг. Почему здесь useCallback, а не просто функция внутри компонента?

Пауза была длинная. Антон Сергеевич считал про себя: раз, два, три, четыре, пять.

— Оптимизация, — сказал Денис.

— От чего?

— Ну... чтобы не пересоздавалась.

— Что не пересоздавалось?

Денис смотрел в экран. Антон Сергеевич видел, как двигается его кадык.

— Функция.

— Хорошо. А когда это важно, а когда нет?

Тишина.

Антон Сергеевич закрыл ноутбук.

— Денис.

— Что.

— Кто писал этот проект?

Денис молчал. Смотрел на закрытый ноутбук.

— Я помогал, — сказал он наконец.

— Кто писал?

— Папа.

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

— Папа — программист? — спросил он.

— Тимлид, — сказал Денис тихо. — В Яндексе.

Антон Сергеевич кивнул.

— Иди, — сказал он. — Завтра поговорим.

Денис встал, застегнул куртку — молча, ни слова — и вышел. Дверь закрылась без хлопка.

Антон Сергеевич сидел в пустом кабинете. Системный блок под столом гудел, как всегда гудел — ровно, без перебоев, уже три года в таком режиме. Он достал телефон и нашёл переписку с Валентиной Юрьевной. Последнее сообщение было от неё, в прошлую пятницу: «Антон Сергеевич, напомните — Климов точно участвует? Мне для отчёта».

Он набрал: «Валентина Юрьевна, по проекту Климова есть вопросы. Можем завтра поговорить?»

Она ответила через минуту: «Конечно. Всё в порядке с проектом?»

Он написал: «Разбираемся».

Отправил. Закрыл телефон.

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

Думал о том, что конкурс — это баллы. Что баллы — это рейтинг. Что рейтинг — это финансирование, кабинет информатики, новые компьютеры взамен этих, которым по восемь лет.

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

В семь утра он встал, сварил кофе и написал Денису: «Приходи в восемь, до уроков».

Денис пришёл в восемь пятнадцать — явно не спал, под глазами синева.

Антон Сергеевич налил ему чай из термоса. Денис взял кружку обеими руками.

— Ты понимаешь, что это нечестно? — спросил Антон Сергеевич.

— Понимаю, — сказал Денис сразу, без паузы. Значит, думал об этом.

— Тогда зачем?

Денис смотрел в кружку.

— Папа сказал, что все так делают. Что это просто помощь. Что в реальной жизни всё равно командная работа.

— В реальной жизни — да. На конкурсе от твоего имени — нет.

Денис молчал.

— Что ты умеешь сам? — спросил Антон Сергеевич.

Денис поднял голову.

— Ну... циклы. Функции. На Python могу написать простое.

— Можешь написать что-нибудь своё за три недели? Что-то настоящее, по силам?

— До конкурса три недели?

— Да.

— Нет. Не успею сделать такое же.

— Не такое же. Своё.

Денис думал. Антон Сергеевич ждал, не торопил.

— Может, — сказал Денис наконец. — Я хотел сделать штуку, которая считает, сколько шагов до подъезда от метро по разным маршрутам. Я ходил и считал сам, просто интересно было.

Антон Сергеевич посмотрел на него.

— Ты ходил и считал шаги?

— Ну да. Глупость, наверное.

— Нет, — сказал Антон Сергеевич. — Не глупость.

Они помолчали. За окном двор начинал заполняться — первые ученики, ранние, с огромными рюкзаками.

— С папиным проектом мы на конкурс не идём, — сказал Антон Сергеевич. — Я скажу Валентине Юрьевне, что проект не готов.

— Она расстроится.

— Да.

— Вы из-за меня проблемы получите.

— Это мои проблемы, — сказал Антон Сергеевич. — А твои — вот: три недели. Пишешь про шаги и маршруты. Всё сам. Я помогаю только когда совсем не знаешь как, и каждый раз объясняю почему так, а не иначе. Идёт?

Денис смотрел на него.

— А если не успею?

— Тогда не идём на конкурс. Но напишешь своё.

Разговор с Валентиной Юрьевной случился в тот же день, после третьего урока. Он пришёл к ней сам, в кабинет с фикусом и грамотами в рамках. Она сидела за столом и смотрела поверх очков.

— Проект Климова снимаем, — сказал Антон Сергеевич. — Он не готов.

— Как не готов? Вы же сказали — сильная работа.

— Я ошибся.

Она смотрела на него долго. Потом сняла очки, протёрла стёкла платком. Надела.

— Антон Сергеевич. Это единственный проект на конкурс от школы в этом году.

— Я понимаю.

— Рейтинг. Финансирование.

— Я понимаю.

— Может быть, доработать? Ещё неделя есть.

— Нет.

Она смотрела на него. Он не отводил взгляда — не из упрямства, а потому что устал отводить. Это он понял прямо сейчас, в её кабинете, с фикусом и грамотами: устал отводить взгляд. Восемь лет назад в коммерческой разработке он отводил взгляд, когда надо было говорить вслух неудобное. Ушёл в школу — думал, здесь по-другому. Здесь было то же самое, просто за другие деньги.

— Хорошо, — сказала Валентина Юрьевна. — Ваше решение.

Три недели Денис приходил на кружок раньше всех и оставался позже всех. Антон Сергеевич смотрел, как он пишет, — медленно, с ошибками, иногда всё удалял и начинал снова. Один раз сказал: «Не получается». Антон Сергеевич не стал говорить, что получится. Сел рядом и спросил: «Где конкретно?»

За день до дедлайна Денис прислал файл.

Это была простая программа. Никакого React, никаких анимаций. Консоль, ввод адреса, вывод таблицы с маршрутами и шагами. Данные Денис собирал сам — ходил, считал, записывал в таблицу. Комментарии в коде были смешные: «# здесь я сначала сделал по-другому но так лучше» и «# это работает не знаю почему но работает, разобраться».

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

Они не пошли на городской конкурс.

В декабре Валентина Юрьевна при случае сказала ему в коридоре: «Жаль, конечно». Он кивнул.

В феврале Денис записался на онлайн-курс по Python и показал Антону Сергеевичу сертификат за первый модуль. Антон Сергеевич сказал: «Хорошо». Денис ушёл — и на этот раз у него было другое лицо. Не то, что было в ноябре у окна.

На флешке с папиным проектом было написано маркером «Денис К.» и дата: октябрь.

Антон Сергеевич достал флешку, подержал и выбросил в мусорную корзину под столом.

Системный блок гудел ровно.

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