1. Без ТЗ результат ХЗ
«Так стоп, — соображает Тёма. — Если оно так для антоновского лендинга работает, то сработает и для всего остального». Не нужно ждать милостей от природы - взять их у нее - вот наша задача!
Он открывает панель агента и, не продумав ничего, на голом азарте пишет Сане:
— Саня, напиши мне игру 2048.
И ждёт, что Саня сейчас все сделает. Игра-то легче лендинга. Или нет? Но Саня выбрал третий вариант, будто из вредности:
— Без ТЗ результат ХЗ.
Тёма даже не поверил сначала:
— Саня, ты серьёзно? Ты же только что лендинг написал. Зачем тебе ТЗ?
— Лендинг я написал по ТЗ, — спокойно отвечает Саня. — Ты его утром с Лёхой собирал, файл TZ_LANDING.md. Я его прочитал и сделал ровно то, что там было. А сейчас ты мне дал два слова и цифру.
— Ну так игра же проще лендинга!
— Прежде чем написать код, нужно написать Техническое Задание.
Тёма даже фыркает:
— Да ладно. Это же игра 2048, все знают, что это такое. Поле, плитки, двигаешь, складываешь. Чего тут описывать?
— «Все знают» — это у тебя в голове, — отвечает Саня. — А в задаче, по которой я работаю, этого нет. Какое поле — 4×4? Откуда берутся новые плитки и когда? Какие сливаются и во что? Когда победа, когда конец? Для тебя «2048» — целая картинка. Для меня — пустое слово, пока не разложено на правила.
Тёма открывает рот возразить — и осекается.
— Да, ладно — говорит он медленно. — Один в один как утром. С лендингом думал — главное собрать страницу, а оказалось — добыть все детали. Сейчас думал — главное назвать игру, а оказалось — разложить на правила.
Вроде и вредничает Саня, а вроде и нет. Тот же урок, только с другого боку: ИИ-агент блестяще пишет код по инструкции и встаёт без неё. «Без ТЗ результат ХЗ» — уже не просто придирка, а правило, по которому тут, похоже, вообще всё устроено.
2. Как рождается техзадание
Делать нечего — Тёма идёт к Лёхе. И на этот раз он уже не растерян, как утром с лендингом. Он понял схему: если надо разложить смысл на части — это к Лёхе.
— Саня требует ТЗ на 2048. Поможешь сформулировать?
Лёха не угадывает правила из воздуха — он их аккуратно проговаривает, по полочкам:
# ТЗ: 2048
ПОЛЕ: сетка 4×4
ПЛИТКИ: при старте и после каждого хода появляется новая плитка (2 или 4)
ХОД: игрок двигает все плитки в одну сторону (вверх/вниз/влево/вправо)
стрелками клавиатуры или свайпом по полю
СЛИЯНИЕ: две одинаковые плитки, столкнувшись, сливаются в одну с суммой
ПОБЕДА: на поле появилась плитка 2048
ПОРАЖЕНИЕ: ходов больше нет — поле забито, слить нечего
— Слушай, это же та же утренняя история, только наоборот, — говорит Тёма. — Утром ты лендинг разбирал на части: продукт, аудитория, блоки, кнопка. Сейчас игру: поле, плитки, слияние, победа, конец. Одно и то же.
— Одно и то же, — соглашается Лёха. — Моя работа — взять расплывчатое «хочу 2048» и превратить в список требований, по которым уже нельзя сделать ерунду.
Тёма смотрит на список — и вдруг видит не одну эту возню, а всю картину разом.
— Что-то такое уже было сегодня, — говорит он. — Саня без детального ТЗ тормозит. Ты раскладываешь хотелку на правила. Я несу инструкции обратно Сане. Три шага — и работает оно одинаково что на антоновском лендинге, что на моей игрушке.
Хорошо, хоть код самому писать не приходится. Это пока магия ИИ-агента, и сегодня Саня с этим отлично справляется. Надеюсь так будет всегда.
3. Игра по готовому ТЗ
Тёма копирует ТЗ и скидывает его обратно Сане — теми же словами, что и на лендинге. Только теперь не простое «хочу игру 2048», а полноценное ТЗ.
— Саня, собери браузерную игру 2048 по правилам: поле 4×4, появление плиток, слияние одинаковых, цель — собрать плитку 2048, экраны победы и поражения. HTML/CSS/JS, без билда.
Жмёт Enter и видит, как Саня начинает работу. Пять минут — и в дереве файлов лежит готовая игра.
Тёма щёлкает по ней правой кнопкой, выбирает Run.
Секунда.
Пустое поле 4×4 — и на нём проступают две плитки. Тёма жмёт стрелку влево: плитки едут, две двойки сталкиваются и сливаются в четвёрку, сверху выскакивает новая. Бежит счёт.
— О-па, — выдыхает он и тыкает ещё. Четвёрки в восьмёрку, восьмёрки в шестнадцать. Всё ровно по тем правилам, что он час назад диктовал Лёхе, — как заказано.
День, похоже, сегодня результативный и очень интересный. А что? Пробную версию лендинга он уже сделал. А финальные данные Антон ещё не принёс. Работа стоит не по его, Темы, вине.
А 2048 под занавес — личный бонус. Он задумчиво смотрит на вкладки. Вчерашний кликер, сегодняшняя 2048. Маленькая, но уже своя полка с победами — рядом с рабочей. Один конвейер, две полки, и сегодня он наполнил обе.
И раз уж полка своя — почему она должна выглядеть как у всех? Плитки в 2048 стандартные, бежево-оранжевые, точь-в-точь как в миллионе таких же игр в интернете.
Тёма ставит себе за день мысленный плюсик и уже примеряет победу: сдаст лендинг с таким лицом, будто корпел всю неделю, словит уважительные взгляды старших коллег, а там, глядишь, и до кальяна в офисе недалеко — давняя мечта.
Он захлопывает крышку, не закончив свою же мысль. А счёт сегодня и впрямь в его пользу: мастерская стала своей, рабочий лендинг поехал в редакторе, а в галерее завелась первая игра, которую он собрал не чудом, а по уму.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ