Чланови развојног тима и њихове улоге
Софтверски производ, како је већ речено, ретко када настаје радом једне особе. Иза сваке озбиљније апликације или система стоји тим људи различитих профила, знања и одговорности, који заједно, кроз координисан рад, долазе до коначног производа.
Шта је развојни тим?
Развојни тим је група стручњака различитих профила која заједничким, координисаним радом планира, развија, тестира и одржава софтверски производ, при чему сваки члан тима носи јасно дефинисану улогу и одговорност.
Величина и структура тима зависе од величине пројекта - мали тим (нпр. 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 људи.
- Одабери шест улога из ове лекције које сматраш најважнијим за овај пројекат и укратко образложи зашто баш те улоге.
- За сваку одабрану улогу наведи бар једну конкретну активност коју би та особа обављала на овом пројекту.
- Размисли и опиши шта би се десило са пројектом ако би недостајала улога QA инжењера/тестера.