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 стандартні, бежево-помаранчеві, точнісінько як у мільйоні таких самих ігор в інтернеті.
Тьома подумки ставить собі плюсик за день і вже приміряє перемогу: здасть лендинг з таким обличчям, ніби пітнів над ним цілий тиждень, зловить шанобливі погляди старших колег, а там, дивись, і до кальяну в офісі недалеко — давня мрія.
Він захлопує кришку, не закінчивши власну думку. А рахунок сьогодні й справді на його користь: майстерня стала своєю, робочий лендинг поїхав у редакторі, а в галереї завелася перша гра, яку він зібрав не дивом, а розумно.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ