Что такое спринты в программировании

Когда вы попа­дё­те на рабо­ту в ИТ-компанию, вы обя­за­тель­но услы­ши­те одну из этих фраз:

  • Что ты дела­ешь в сле­ду­ю­щем сприн­те?
  • Возь­мём это в сле­ду­ю­щий спринт
  • Сле­ду­ю­щий спринт уже занят, возь­мём в бэк­лог

Раз­бе­рём, что это за сприн­ты такие и зачем они нуж­ны.

Ситуация

У коман­ды раз­ра­бот­чи­ков есть боль­шой про­ект, где нуж­но сде­лать мно­го раз­ных вещей:

  • при­ду­мать архи­тек­ту­ру все­го сер­ви­са,
  • напи­сать сер­вер­ную часть,
  • сде­лать вёрст­ку и дизайн для мобиль­ных при­ло­же­ний,
  • выпу­стить сайт, кото­рый может делать то же самое, что и при­ло­же­ния,
  • преду­смот­реть инте­гра­цию с дру­ги­ми сер­ви­са­ми,
  • сде­лать авто­ри­за­цию через попу­ляр­ные соц­се­ти.

Вре­ме­ни на всё — 6 меся­цев, и кажет­ся, что это­го доста­точ­но. Но это может быть обман­чи­во, пото­му что коман­да рас­слаб­ля­ет­ся, каж­дый начи­на­ет делать что-то своё, а за месяц до фина­ла выяс­ня­ет­ся, что вме­сте эти отдель­ные части рабо­тать не будут. Напри­мер, сер­вер не отда­ёт дан­ные в нуж­ном фор­ма­те для веб-страницы, при­ло­же­ния хра­нят дан­ные толь­ко у себя и не уме­ют отправ­лять их на сер­вер, а авто­ри­за­ция в соц­се­тях рабо­та­ет толь­ко на Андро­и­де.

Что­бы это­го не про­изо­шло, исполь­зу­ют сприн­ты.

Что такое спринт

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

Зада­ча сприн­та — что­бы по его ито­гу что-то рабо­та­ло. Напри­мер, если мы взя­ли в спринт еди­ную авто­ри­за­цию в сер­ви­се, то к кон­цу сприн­та она долж­на рабо­тать и быть про­те­сти­ро­ван­ной. Нель­зя к кон­цу сприн­та ска­зать «Ой, ну ниче­го, в сле­ду­ю­щий раз доде­ла­ем». К кон­цу сприн­та долж­но быть гото­во.

Что делают в спринте

Цели у сприн­та могут быть общи­ми для всей коман­ды. Напри­мер:

  • сде­лать еди­ную авто­ри­за­цию и про­те­сти­ро­вать её на всех плат­фор­мах,
  • настро­ить син­хро­ни­за­цию меж­ду устрой­ства­ми,
  • выра­бо­тать еди­ную систе­му сооб­ще­ний об ошиб­ках.

А могут быть для каж­до­го свои:

  • вер­сталь­щик: соби­ра­ет маке­ты стра­ниц в одном сти­ле;
  • фрон­тенд: пишет скрипт реги­стра­ции;
  • бэкенд: дела­ет так, что­бы сер­вер мог полу­чать дан­ные с это­го скрип­та;
  • вто­рой бэкенд: настра­и­ва­ет систе­му, что­бы она мог­ла одно­вре­мен­но обра­бо­тать тыся­чу запро­сов;
  • тести­ров­щик: пишет тесты для функ­ции резерв­но­го копи­ро­ва­ния.

Кто имен­но и что дела­ет — это опре­де­ля­ет кто-то из руко­во­ди­те­лей, напри­мер, тим­лид или мене­джер про­ек­та. У него в голо­ве цель­ная кар­тин­ка про­ек­та, кото­рую он рас­кла­ды­ва­ет на кон­крет­ные малень­кие шаги. Мене­джер отве­ча­ет за кор­рект­ную поста­нов­ку задач, а раз­ра­бот­чик — за то, что­бы эта зада­ча была выпол­не­на в срок.

Что после спринта

После сприн­та про­во­дят ретро­спек­ти­ву — это встре­ча, на кото­рой коман­да сама оце­ни­ва­ет свой резуль­тат. Напри­мер, они могут обсу­дить такое:

  • Что не сде­ла­но? Поче­му?
  • Как сде­лать так, что­бы мы пла­ни­ро­ва­ли луч­ше?
  • Что мы не учли на стар­те сприн­та?
  • Как рабо­тать эффек­тив­нее?
  • Что заня­ло боль­ше все­го вре­ме­ни?
  • У кого какие пред­ло­же­ния по сприн­там?

Цель ретро­спек­ти­вы — под­ве­сти ито­ги сприн­та и понять, как луч­ше стро­ить рабо­ту в сле­ду­ю­щем сприн­те, что­бы всё полу­ча­лось луч­ше и инте­рес­нее, чем в этом.

После ретро­спек­ти­вы всё по новой.

Где нужны спринты

Сприн­ты при­ме­ня­ют для слож­ных или дол­гих про­ек­тов — там, где на стар­те непо­нят­но, что кон­крет­но по шагам нуж­но сде­лать, что­бы полу­чить резуль­тат. Если про­ект слож­ный, сприн­ты помо­га­ют упро­стить его, раз­би­вая зада­чи на более понят­ные, что­бы каж­дая зада­ча зани­ма­ла один спринт.

В дол­гих про­ек­тах сприн­ты дер­жат в тону­се всю коман­ду и не дают рас­слаб­лять­ся в самом нача­ле, когда кажет­ся, что вре­ме­ни ещё очень мно­го. Тогда цель каж­до­го сприн­та — пла­но­мер­но улуч­шать то, что есть, и посте­пен­но добав­лять новые воз­мож­но­сти в сер­вис или при­ло­же­ние.

Если же зада­ча реша­ет­ся за пару дней или пару недель, то сприн­ты не нуж­ны — нуж­но про­сто собрать­ся и сде­лать.