Иди на текст

Чланови развојног тима и њихове улоге

Софтверски производ, како је већ речено, ретко када настаје радом једне особе. Иза сваке озбиљније апликације или система стоји тим људи различитих профила, знања и одговорности, који заједно, кроз координисан рад, долазе до коначног производа.

Шта је развојни тим?

Развојни тим је група стручњака различитих профила која заједничким, координисаним радом планира, развија, тестира и одржава софтверски производ, при чему сваки члан тима носи јасно дефинисану улогу и одговорност.

Величина и структура тима зависе од величине пројекта - мали тим (нпр. 3-5 људи) често покрива више улога по особи, док велике компаније имају десетине или стотине људи распоређених у специјализоване тимове. Без обзира на величину, одређене улоге се готово увек појављују, у некој форми, у сваком софтверском пројекту.

Улоге које дефинишу ШТА се гради

  • Заинтересоване стране (енгл. Stakeholders): Особе или организације које имају интерес у пројекту - наручилац, инвеститор, крајњи корисници, менаџмент компаније. Они дефинишу пословне циљеве и очекивања, али се обично не баве свакодневним техничким детаљима.
  • Власник производа (енгл. Product Owner): Особа која представља глас корисника и наручиоца унутар тима. Дефинише шта треба да се гради и којим редоследом (приоритети), управљајући списком захтева (backlog).
  • Бизнис аналитичар (енгл. Business Analyst): Особа која анализира пословне процесе наручиоца и претвара нејасне, често противречне жеље клијента у прецизне, разумљиве и мерљиве захтеве које развојни тим може да имплементира.

Улоге које дефинишу КАКО се гради

  • Софтверски архитекта (енгл. Software Architect): Особа која дефинише општу структуру система - које технологије се користе, како компоненте међусобно комуницирају и на који начин ће систем задовољити захтеве поузданости, безбедности и перформанси.
  • UX/UI дизајнер: Стручњак задужен за корисничко искуство (User Experience) и изглед корисничког интерфејса (User Interface). Брине се да апликација буде не само функционална, него и интуитивна и пријатна за коришћење.
  • Developer / Програмер: Особа која пише изворни код на основу дефинисаних захтева и архитектуре. У пракси се често деле на frontend програмере (кориснички интерфејс), backend програмере (серверска логика, базе података) и fullstack програмере (обе стране).
  • QA инжењер / Тестер (енгл. Quality Assurance): Особа задужена да провери да ли софтвер ради исправно, проналажењем и пријављивањем грешака, писањем тест сценарија и, све чешће, писањем аутоматизованих тестова.
  • DevOps инжењер: Стручњак који повезује развојни тим (Development) и тим за одржавање инфраструктуре (Operations). Задужен је за аутоматизацију процеса испоруке софтвера, окружења за тестирање и надгледање система у продукцији.

Улоге које организују РАД тима

  • Менаџер пројекта (енгл. Project Manager): Особа задужена за планирање, буџет, рокове и ресурсе пројекта. Комуницира са наручиоцем и управљом ризицима пројекта.
  • Скрам мастер (енгл. Scrum Master): У агилним тимовима, особа која не управља тимом директно, већ му помаже да ефикасно примени методологију, уклања препреке које успоравају рад и модерира тимске састанке.
  • Технички писац (енгл. Technical Writer): Особа која израђује документацију - корисничка упутства, техничку документацију за програмере, API документацију итд. У мањим тимовима ову улогу често преузимају сами програмери.
Да ли једна особа може имати више улога?

Да. У мањим тимовима и стартап компанијама уобичајено је да једна особа покрива више улога истовремено (нпр. програмер који је истовремено и тестер и делимично DevOps инжењер). У великим организацијама улоге су, насупрот томе, високо специјализоване и свака улога често представља посебно радно место, па чак и посебан тим.

Зашто су јасне улоге важне?

Када улоге и одговорности нису јасно дефинисане, долази до типичних проблема:

  • Дуплирање посла - више особа независно ради исти задатак.
  • Празнине у одговорности - неки задаци остају "ничији" ("мислио сам да то ради неко други").
  • Успорена комуникација - није јасно ко доноси коју одлуку, па се на одговоре чека предуго.
  • Пад квалитета - на пример, ако нико конкретно није задужен за тестирање, грешке лакше "прођу" у продукцију.

Добра организација тима, уз јасно дефинисане улоге и границе одговорности, директно утиче на квалитет производа (о коме смо причали у претходној лекцији) и на успешност пројекта у целини.

Задатак

Замисли да треба да развијеш мобилну апликацију за наручивање хране (слично Glovo или Wolt апликацији) и да имаш тим од 6 људи.

  1. Одабери шест улога из ове лекције које сматраш најважнијим за овај пројекат и укратко образложи зашто баш те улоге.
  2. За сваку одабрану улогу наведи бар једну конкретну активност коју би та особа обављала на овом пројекту.
  3. Размисли и опиши шта би се десило са пројектом ако би недостајала улога QA инжењера/тестера.