# Custom programiranje

Financijski isplativ softver onaj je koji nećete morati baciti i zamijeniti novim. Ako vam posao ovisi o softveru, nije svejedno koga birate da vam programira poslovne aplikacije.

## Tražite izvrstan softver?

### Tražite Scrum!

Svi tvrde da je baš njihov kod najkvalitetniji, no kako doista prepoznati i evaluirati tehnički izvrstan razvojni tim? Tehnička izvrsnost proizlazi iz izvrsnog procesa u kojem sudjeluju izvrsni ljudi. Naš odabrani proces, kao i proces brojnih iskusnih timova softveraša svugdje u svijetu, jest **Scrum**.

**Scrum** je moderan okvir (framework) za razvoj softvera na **agilan** način. Scrum je dizajniran tako da je programerima lakše nego ikada prije eliminirati sada već dobro poznate rizike razvoja softvera.

Za vaš biznis to znači da razvojni timovi koji prakticiraju Scrum isporučuju **poslovni softver koji je stabilniji, s manje bugova i u kraćem roku.**

## Kako Scrum dovodi do kvalitetnog softvera?

### Kako uopće definirati kvalitetan softver?

To je softver koji vama kao naručitelju stvara tržišnu prednost, s čijim ste razvojem i cijenom zadovoljni, i u koji se možete pouzdati.

### Obilježje kvalitetnog softvera

- Softver je izvor tržišne prednosti
- Kod je stabilan i bez bugova
- Custom softver je financijski održiv
- Isporuka novih značajki je brža
- Naručitelj softvera je zadovoljan

## Softver je izvor tržišne prednosti.

### Kako Scrum uklanja rizike?

Vi najbolje znate što vaši kupci žele i što im stvarno treba. Vi ste za upravljačem, mi smo motor, a zajedno smo tim koji vozi u pravom smjeru. Bit ćete cijelo vrijeme uključeni u razvoj softvera i to tako da prioritizirate značajke koje vama i vašim kupcima donose najveću korist u svakom trenutku. Nastavljamo raditi značajku za značajkom. I tako, prije nego što ste se nadali, vaš novi softver postaje glavni izvor konkurentske prednosti.

### Primjer u praksi

Dugogodišnjem klijentu u automobilskoj branši, tvrtki Autoto, pomogli smo realizirati njihove inovativne i hrabre ideje i pretvoriti ih u stvarnost. Radeći u fazama, klijent nam je komunicirao što kupci najviše traže, a mi smo te zahtjeve pretvarali u značajke softvera po mjeri.
U 3+ godine razvoja, klijent je od same nule razvio softversku platformu koja prodaje tisuće rabljenih automobila online godišnje, i koju sada širi na tržišta susjednih zemalja.

## Kod je stabilan i bez bugova.

### Kako Scrum uklanja rizike?

Scrum timovi prakticiraju specifične načine testiranja softvera (automatizirani testovi, unit testovi, UI testovi) koji bugove hvataju dovoljno rano, prije objave na webu klijenta.
Radi toga vi ste sigurni od 'pada sistema' i pogreški u softveru u najnezgodnijem trenutku. Kad vam softver radi Scrum tim, vaš softver dobro će raditi i nakon što se dodaju nadogradnje.

### Primjer u praksi

Velikoj stranoj tvrtki u industriji financija postojeći softver kvario se kod svakog upgradea novim značajkama, što je ljutilo njihove korisnike.
U strahu od novih bugova, tvrtka je prestala inovirati i razvijati značajke koje su njihovi kupci stalno tražili.
Otkako smo preuzeli održavanje njihovog softvera i uveli automatizirane testove, te tzv. regresijske pogreške više se ne događaju.

## Custom softver je financijski održiv.

### Kako Scrum uklanja rizike?

Zato jer vi prioritizirate značajke, a mi se brinemo za tehničku izvrsnost softvera, rezultat je da vašem kupcu isporučujemo najvažnije nove funkcionalnosti koje jednostavno rade.

Tada ni cijena inicijalnog razvoja i održavanja softvera ne dolazi u pitanje jer je odgovor uvijek isti: softver vam uvijek zarađuje puno više nego što ga plaćate.

### Primjer u praksi

Kod prvog susreta pristupili su nam s velikom skepsom i vidljivom zabrinutošću: 'do sad smo previše plaćali za razvoj i održavanje softvera, i tako više ne želimo.'

Brzo se pokazalo da problem ovog poznatog hrvatskog lanca hotela nije bila cijena razvoja i održavanja, nego financijska neodrživost softvera. Naime, zbog nejasnih prioriteta i kaotičnog procesa razvoja kod tadašnje agencije, klijent nije ostvarivao povrat investicije u web rješenje.
To je bilo 2018. godine. Klijent danas ima novi softver i novi pristup razvoju softvera s kojim je moguće svake nove turističke sezone investirati u nove napredne funkcionalnosti.

## Isporuka novih značajki je brža.

### Kako Scrum uklanja rizike?

Scrum timovi razvijaju nove značajke u tzv. sprintevima, tj. razvojnim ciklusima koji prosječno traju 2 tjedna. Svaki sprint obuhvaća sve aktivnosti nužne da bi nova značajka bila stabilna i tržišno vrijedna.

To znači da već **u samo 2 tjedna možete dobiti novu značajku** koja će vašem kupcu predstavljati korist, a vama generirati zaradu.

### Primjer u praksi

**Poznata turistička agencija**, naš postojeći klijent, zatražila je prilagodbe na samom početku pandemije COVID-19.
U trenucima neizvjesnosti klijent je tražio što bržu reakciju, ali bez kompromitiranja kvalitete koda.
Naš razvojni tim u skraćenom je sprintu isporučio važnu željenu prilagodbu u samo 7 dana, nakon čega klijent nije prijavio niti jedan jedini bug.

## Naručitelj softvera je zadovoljan.

Vi ste ključni akter u razvoju softvera i to ćete osjetiti na svakom koraku procesa razvoja, od prikupljanja zahtjeva preko prioritiziranja pa sve do isporuke nove značajke. Mi vodimo, vi odlučujete.

Zato jer u svakom trenutku vi upravljate razvojem softvera, imate uvid u njegov napredak. Nema neugodnih iznenađenja (tj. ima, ali ne za vas, nego za konkurenta, koji sve više digitalno kaska za vama).

### Primjer u praksi

Veliki e-commerce igrač mučio se s prethodnim dobavljačem: 'Tjednima ili mjesecima smo znali čekati da nešto naprave na našem shopu, a kad su bili gotovi, to nije bilo to što smo mi tražili.' Sada je custom programiranje transparentno. Nakon što prikupimo i razradimo klijentov zahtjev i pretvorimo ga u izvedive značajke, klijent sam bira značajku koja ide prva u razvoj, i dobiva je na kraju jednog razvojnog ciklusa (sprinta).

## Dobar proces odgovoran je za 50% kvalitete.

1. Prikupljanje i razrada zahtjeva
U Scrumu se jednoj osobi dodjeljuje uloga vlasnika proizvoda (PO, Product Owner). To je član našeg tima koji vaše zahtjeve komunicira našem poslovnom analitičaru (BA, Business Analyst). Cilj je postići potpuno razumijevanje zahtjeva i osigurati da nema poslovnih ni tehnoloških prepreka za razvoj nove značajke.

2. Prioritiziranje značajki
Naš Product Owner surađuje s razvojnim timom (Dev Team) koji pomaže prioritizirati tržišno najvažnije značajke koje se mogu odraditi u jednom sprintu.

3. Implementacija značajke
Odrađuje naš razvojni tim. Prosječno vrijeme trajanja jednog razvojnog ciklusa iznosi 2 tjedna.

4. Izrada automatiziranih testova
Kad je značajka ili funkcionalnost implementirana, naš razvojni tim pristupa izradi automatiziranih testova za tu značajku koji uklanjaju sve bugove.

5. Isporuka značajke ili aplikacije
Naš razvojni tim isporučuje značajku najprije na testni (staging) server gdje je Product Owner evaluira i odobrava za finalnu isporuku na produkcijski server, tj. na vaš 'pravi' web.

### Za custom razvoj biramo pouzdane i dokazane Microsoftove tehnologije za koje imamo stečenu Microsoft Silver Partner kompetenciju.

### Ostalih 50% kvalitete kreira tim dobrih ljudi

Dobro uigran tim radi čuda.

1 Scrum tim
4 poslovna analitičara
7+ developera

'Moj je posao pobrinuti se za ispravnu implementaciju Scruma i učinkovitost Scrum tima. Kad je to sigurno, sigurna je tehnička izvrsnost i zadovoljstvo klijenta.'

~ Mate Boban,
