Све организације стартап тима које смо пробали (и зашто су се све распале)

Не постоји савршена структура тима, само различити начини да будете заглављени.
Прошлог месеца нас је један оснивач питао: „Како да организујемо наш инжењерски тим?“
Насмејали смо се. Не зато што је питање лоше. Него зато што смо гледали како тимови пробају сваки одговор и како се сви на крају распадну.
У Norveon-у нас је 14. Сви смо генералисти. Нама то одговара. Али радили смо са клијентом који је за две године порастао са 8 на 32 инжењера. Свака реорганизација одвијала се пред нашим очима. Ево шта се заправо десило.
Подела по технологијама
Кад нарасту до око 10 људи, већина тимова се подели по технологији. Фронтенд са фронтендом. Бекенд са бекендом. Мобилни заједно.
Овај клијент је то урадио у јуну 2023. Укупно 18 инжењера. React веб апликација, Swift и Kotlin мобилне апликације, Node.js бекенд. Три тима.
Радило је три месеца.
Зашто се распало
Свака функционалност је захтевала сва три тима.
Нови ток за увођење корисника? Бекенд прави API-је, фронтенд прави форме, мобилни ажурира апликације. Три тима морају да се усклађују због једне функционалности.
Фронтенд се жалио да API-ји нису спремни. Мобилни се жалио да су API-ји прављени за веб. Бекенд није имао појма зашто уопште прави половину тих ендпоинта.
Нико није био одговоран ни за један део производа. Сви су дирали све, па нико није заиста разумео како било шта ради.
До четвртог месеца, сваки стендап је био „чекамо бекенд“ или „блокирани смо изменама API-ја“.
Сквадови (као у Spotify-ју)
Следећи покушај: организација око области производа.
Сквад A: управљање корисницима. Сквад B: основне функционалности. Сквад C: наплата. Сваки сквад је добио фронтенд, бекенд и мобилне људе.
Деловало је много боље. Сваки тим је одговарао за своју област. Могли су да испоручују без чекања на друге.
Трајало је годину дана.
Шта је убило сквадове
Нико није радио на техничким стварима.
Надоградња React Router-а је стајала у беклогу осам месеци. Тестови су са 3 минута порасли на 55. Чији је посао био да то поправи? Ничији.
iOS програмер у скваду A није имао с ким да прича о iOS проблемима. Сквад B је изабрао једну библиотеку за стање, сквад C другу.
Технички дуг се гомилао. Сваки сквад се мерио по функционалностима, не по квалитету кода.
До једанаестог месеца, три инжењера су прегорела.
Додавање чаптера
Па су додали чаптере. Сви фронтенд људи у фронтенд чаптер. Сви бекенд у бекенд чаптер.
Вође чаптера су се изборили за 20% времена за технички рад. Ажурирање фрејмворка, дељење знања, техничке одлуке.
Прва два месеца су била сјајна. Ажурирања су завршили. Техничка предавања су се редовно држала.
Онда је почела свађа.
Проблем са чаптерима
Продакт менаџери против вођа чаптера. Сваки спринт.
„Зашто Alice ажурира зависности уместо да прави функционалности?“
„Зашто је Bob прескочио планирање спринта због састанка чаптера?“
Почели су да прате проценте. Alice: 23% времена у чаптеру. Bob: 11%. Сви су то мрзели.
Инжењере су вукли на две стране. PM сквада хоће функционалност до петка. Вођа чаптера хоће вас на радионици. Бирајте.
После шест месеци, људи су почели да дају отказ.
Платформски тим
Следеће: посвећен тим за технички рад.
Пребацили су бекенд лида, два мобилна инжењера и једног фронтенд инжењера.
Продуктним сквадовима су тако остале празне столице. Сквад A спао на једног бекенд инжењера. Сквад B изгубио половину мобилног капацитета.
Али свађа је престала. Платформски тим је радио технички посао. Продукт сквадови су правили функционалности.
Бар на папиру.
Нови проблеми
Бекенд лид никад није имао времена да помогне свом старом скваду. Сквад A је заостајао. Њихов једини бекенд програмер се давио.
Мобилне инжењере су стално враћали на рад на производу. Клијенти су се жалили да iOS и Android нису усклађени.
Фронтенд инжењер у платформском тиму је после три месеца хтео да да отказ. Ажурирање библиотека није забавно као прављење функционалности.
Најгори део: остали инжењери су престали да маре за квалитет кода. „Платформски тим ће то поправити“ постао је изговор за аљкав код.
Платформски тим је почео да додаје процесе. Између „архитеката“ и „људи који раде прави посао“ родила се огорченост.
Привремени пројектни тимови
Укинули су платформски тим. Нови план: привремени тимови за велике пројекте.
Пројекат Alpha: надоградња React-а. Троје фронтенд људи, два месеца.
Пројекат Beta: поновна изградња API-ја за мобилне. Двоје бекенд, двоје мобилних, два месеца.
Пројекат Beta је трајао четири месеца уместо два. Лоше процењен обим. Прекасно за отказивање.
Пројекат Alpha је после месец дана изгубио човека. Додали замену. Увођење трајало три недеље. Пројекат трајао седам месеци уместо два.
Инжењер који је остао свих седам месеци је прегорео. Дао отказ месец дана пошто је пројекат завршен.
Пројекат Beta је отказан у трећем месецу. Превише сложен.
Шест месеци касније требало је да промене нешто из пројекта Alpha. Тима више није било. Првобитни инжењер дао отказ. Нико није знао како ради.
Staff инжењери
Тренутна поставка: унапредили двоје људи у staff инжењере. Један бекенд, један фронтенд. Они круже. Помажу где треба.
Вратили чаптере. Правило 20% времена. Али овог пута без праћења. Само поверење.
Ради већ осам месеци.
Бекенд staff је помагао скваду A док нису запослили некога. Фронтенд staff је водио надоградњу React-а.
Staff инжењери воде месечне „дане ажурирања“. Неколико људи из сваког сквада проведе дан ажурирајући зависности и додајући тестове.
Чаптери се састају сваке две недеље. Дељење знања. Техничке одлуке. Без додељивања посла.
Није савршено. Staff инжењерима никад не достаје времена. Тешко их је запослити.
Шта смо научили
Свака структура се на крају распадне.
Технолошки тимови се распадају од терета координације. Сквадови се распадају кад се технички рад игнорише. Чаптери стварају сукобе. Платформски тимови се одвоје од стварности. Пројектни тимови пробијају рокове.
У Norveon-у нас је 14. Сви смо генералисти. За нашу величину одговара. За 50 људи не би.
Овај клијент је сада на 32 инжењера. Већ се виде пукотине у моделу са staff инжењерима.
Ако сте сада у тој ситуацији
Не копирајте Spotify. Не копирајте Google. Њихов контекст није ваш.
Поправите оно што је покварено сада. Не оно што би могло да се поквари на 100 људи.
Ако је координација проблем, не делите се по технологијама. Ако се технички дуг гомила, не користите чисте сквадове. Ако људи прегоревају, можда прескочите модел са чаптерима.
Пробајте нешто. Дајте му шест месеци. Пратите проблеме. Промените кад је јасно да не ради.
Структуру тима не решите једном заувек. Постоје само различити компромиси за различите величине.
Тренутно помажемо другом клијенту да ово разреши. Питајте нас за шест месеци да ли је упалило.


