Issue #2
“Третья неделя. Команды набрали ход — одни штурмуют деплой, другие ещё выбирают между Firebase и собственным бэкендом. Наш обозреватель выделил героев, грабли и неожиданные открытия.”
3 марта 2026 г. в 1638 teams
Герой недели
Архитектор невидимого, или Как построить фундамент, пока все ещё рисуют чертежи
yermekyerdenTypocalypse
Пока большинство команд обсуждали стек и распределяли роли, yermekyerden уже выстроил инфраструктуру целого проекта. Три ветки — main, develop, diary — с protection rules и PR-only workflow. README, готовый к чекпоинту. И — внимание — полная документационная система: глоссарий, гайдлайны по домену и UI, спецификация терминального движка, правила детерминизма, модель песочницы, ADR-фреймворк. Всё это — до того, как команда написала первую строку продуктового кода.
«Маленький, но строгий baseline делает командную работу проще, чем устные договорённости», — пишет он в дневнике. И тут же, через четыре дня, честно признаётся: выгорание, мотивация на нуле, желание бросить. Но не бросает — вместо этого поднимает CI/CD, настраивает GitHub Pages, собирает фронтенд-скаффолд с hash-роутингом.
Это редкий случай, когда тимлид не просто раздаёт задачи, а строит среду, в которой команда сможет работать. Даже когда самому тяжело.
Highlights
- yermekyerden: docs map, glossary, ADR framework, 5+ спецификаций — за первую неделю
- Branch protection + CI/CD (GitHub Actions) настроены до первого продуктового PR
- Честно описал выгорание в дневнике — и продолжил работать
Грабли недели
Восемь файлов вместо одного, или Как SRP превратился в SPR
PeccopaNova
Peccopa из Nova решил навести порядок в BaseComponent. Декомпозиция, менеджеры, фасад — всё по учебнику. Целый день ушёл на разделение ответственности, и результат выглядел безупречно. «Сначала сидел довольный, — признаётся он, — а потом пришло понимание, что ничего не изменилось, никаких новых фич, просто теперь вместо одного файла — восемь».
Но это было только начало. На следующий день архитектурная хирургия дала осложнения: связи между компонентами посыпались. Его отчёт за 21 февраля читается как медицинская карта: «Сломал связи. Искал, где сломал связи. Восстанавливал связи. Починил всё, кроме головы».
Два дня работы — ноль новых фич и один важный урок: рефакторинг без цели превращается в перекладывание мебели. Код не становится лучше от того, что его стало больше. Прежде чем дробить — спроси себя: а что изменится для пользователя?
Highlights
- Peccopa: целый день на декомпозицию BaseComponent — 8 файлов, 0 новых фич
- Сломал связи между компонентами при рефакторинге, чинил весь следующий день
- Команда Nova: Codenames на ванильном JS, собственный ComponentsAPI + StateAPI
Кейс недели
Бутылочное горлышко, или Как шестеро котят выбрали свободу
«Много вещей может пойти не так с тем, кто разрабатывает бэк — метеоритом прибьёт, мало ли», — AlexGorSer формулирует проблему с инженерной прямотой. Команда ngKittyDebug стояла перед классической развилкой: амбициозный Codenames с жёсткими зависимостями между компонентами или каталог мини-игр, где каждый работает автономно.
Риск-анализ оказался на удивление зрелым. Codenames требовал готового бэкенда до старта фронта — единая точка отказа. Если выпадает бэкендер, встаёт вся команда. Если выпадает кто-то из фронтенда — его задачу некому подхватить, потому что компоненты «сильно повязаны друг на друге». Каталог же позволял каждому двигаться независимо: отвалится один — приложение живёт.
Команда проголосовала и развернулась. Alena1409 уже за ночь до голосования набросала прототип Word Merge Associations — «пол ночи без сна, мозг начал накидывать варианты». pavelkuvsh1noff искал вдохновение в текстовых квестах Космических Рейнджеров и нашёл его в игре Decrypto. kozochkina82 выбрала «Виселицу» — «достаточно жестоко для обучения». Oksi2510 взяла вариацию «Городов» с программистской лексикой. WhaleisaJoy занялась профилем пользователя и инфраструктурой.
А AlexGorSer, который сам и обозначил бутылочное горлышко, добровольно стал тем самым бэкендером — NestJS, Prisma, Supabase, JWT. Разница в том, что теперь, если метеорит всё-таки прилетит, остальные пятеро продолжат работу над своими играми, а данные просто останутся на фронте.
Урок для всех команд: выбор «попроще» — это не слабость. Это архитектурное решение, которое покупает устойчивость.
AlexGorSerngKittyDebugИнициировал риск-анализ, стал бэкендером (NestJS + Prisma + Supabase), настроил CI/CD
Alena1409ngKittyDebugWord Merge Associations с AI-проверкой ответов, страница логина
pavelkuvsh1noffngKittyDebugКлон Decrypto, header, i18n через Transloco
kozochkina82ngKittyDebugГлавная страница, игра «Виселица», страница 404
Oksi2510ngKittyDebugСтраница регистрации, игра «Города» с IT-терминами
WhaleisaJoyngKittyDebugUser profile, кастомизация Taiga UI, конфиг Netlify
Aha! Moments
Aha! Moments
sevasmithTeam42Фокус вместо всезнания
я не должен понимать абсолютно всё и разбираться во всём, но должен в первую очередь разобраться со своей задачей
Звучит просто — но до этого нужно дойти руками, через двадцать часов задач, где хочется разобраться во всём сразу. sevasmith сформулировал это как главный урок финального проекта, и Tandi с ним согласна.
ZhdkoДрим ТимПереоткрытие Observer через Angular signals
Хочу еще раз и более детально изучить сигналы... Насколько я сейчас понимаю, это работает по аналогии с паттерном Observer: мы условно подписываем компонент на обновление.
Не из документации, а из собственных рассуждений о том, как должен работать change detection. Когда студент переоткрывает классический паттерн самостоятельно — это уже не использование фреймворка, а понимание архитектуры.
sunyuna00Team42Кастомный хук как инструмент мышления
Круто, что теперь можно вынести повторяющуюся логику и просто использовать хук в любом месте, где нужна анимация при скролле — код стал гораздо чище и проще поддерживать
От копипасты к абстракции — путь, который sunyuna00 прошла сама, написав useIntersectionObserver. Момент, когда дублирование начинает раздражать — это и есть точка роста.
katerynamoskalenkoAuto-Team 7Модули, которые не знают друг о друге
setupCheckLogic does NOT know which option the user selected and does NOT store the state. It queries QuizScreen for the state using the getSelected function.
Разложить экран на модули, где каждый не знает о состоянии соседа, — это не абстрактный принцип из учебника, а конкретное решение, к которому katerynamoskalenko пришла через реальную декомпозицию квиза.
yermekyerdenTypocalypseСтрогий минимум бьёт устные договорённости
A small but strict baseline (rules + process) makes team execution smoother than ad-hoc agreements.
Инсайт, который обычно приходит после третьего провального спринта. yermekyerden дошёл до него раньше — и сразу зафиксировал как принцип, а не как жалобу.
Teams
21ok
17caution
0alert
/
ngKittyDebug
ok▶
Typocalypse
caution▶
RainbowUnicorn
caution▶
RSSAgents
caution▶
Legendary frontend developers
caution▶
Team42
ok▶
Джунгли зовут!
caution▶
GrowLab
caution▶
Strict Mode
caution▶
Дрим Тим
caution▶
JSGods
caution▶
Алекс и его друзья
caution▶
VueJS Tandem
caution▶
Tuple Trouble
caution▶
asyncmind
ok▶
Nova
ok▶
DevCraft
ok▶
Outstanding Alex And Smeshariki
ok▶
Gang of Four
ok▶
Devtones
ok▶
404 Skill Not Found
caution▶
OrangeCats
caution▶
DevBand
ok▶
JustBuildIt
ok▶
Auto-Team 3
ok▶
Auto-Team 4
ok▶
Auto-Team 5
ok▶
SAA Cat
ok▶
Auto-Team 7
ok▶
Т-8
ok▶
Auto-Team 9
ok▶
Auto-Team 10
caution▶
Unexpected Case
ok▶
TetraTeam
ok▶
111 Blind Kittens
ok▶
CodePain
caution▶
Dev Journey
ok▶
SkillsZen team
caution▶