Što se duže bavite razvojem softvera, sve više shvatate da ne postoje čvrsta i sigurna pravila koja garantuju uspeh. Međutim, postoji tri principa koji mogu biti izuzetno korisni za izgradnju uspešnog softvera:
- Dosadno je dobro
- Dizajnirajte tako da može da se testira
- Ništa nije zauvek
Možda ćete primetiti da nećemo pisati o mikroservisima ili bilo kojoj određenoj tehnologiji uopšte. To je zato što su ovi principi dizajna sistema na fundamentalnijem nivou. Oni vode vaš izbor tehnologije, a ne obrnuto. Proći ćemo kroz svaki princip posebno.
Dosadno je dobro
Biti dosadan je fundamentalno za dobar softver. To znači oslanjati se na akumulirano znanje svih koji su tu bili pre vas. Velike su šanse da niste prva osoba koja je naišla na određeni problem.
Istražite uobičajene obrasce i drugi uspešan softver. Pogledajte kako su drugi ljudi pre vas rešili određeni problem. Pronađite izveštaje o greškama i pogledajte kako su ljudi redizajnirali svoje sisteme kao odgovor. Ukratko, koristite znanje koje su skupili drugi, ma koliko vam to delovalo dosadno.
Programeri često imaju tendenciju da obnove stare stvari koristeći najnovije tehnologije, samo zato što su zanimljive. Neki programeri čak biraju svoj tech stack samo da bi mogli da dodaju nešto novo i “kul” u svoj rezime. Izbegnite iskušenje.
Ukoliko nešto pravite, budite pažljivi kada usvajate nove tehnike i tehnologije.
Dizajnirajte tako da može da se testira
Kako da znate da li vaš softver ispunjava sve zahteve? Pa, testirate ga. Kada ste vremenski ograničeni, iskušenje je da uradite što manje testiranja. Stvar je u tome što se testiranje uvek dešava - samo je pitanja da li to rade QA testeri ili vaši korisnici. Korisnici su odlični u pronalaženju svih bagova koje niste ni tražili. Onda shvatite da niste uštedeli nikakvo vreme, već da ste samo otežali sebi posao - jer sada morate da sredite problem, a softver su ljudi već počeli da koriste.
Čak i ako želite da izbegnete da vaši korisnici prvi pronađu greške, ne možete zauvek da testirate svoj softver pre nego što ga objavite. Dakle, morate da pronađete način da dizajnirate softver koji se lako testira. Mnogi ljudi preporučuju korišćenje Test Driven Development-a, ili TDD-a, kako bi se osiguralo da se softver može testirati.
Bez obzira da li koristite TDD ili ne, potrebno je da pišete kod koji se može testirati.
Ništa nije zauvek
Blagoslov i prokletstvo softvera je to što se lako menja. Mostovi su dobra analogija za ovaj princip, jer su sušta suprotnost od softvera. Promena fizičke infrastrukture je spora, bolna i skupa. Kada se most izgradi, niko neće doći šest meseci kasnije i reći graditelju da ima nedelju dana da ga spoji na drugi put koji je desetak kilometara niz reku. Međutim, svaki programer ima svoju priču o tome kako je svoj softver prilagodio za rad sa neočekivanom komponentom u poslednjem mogućem trenutku. Jedini softverski sistemi koji nisu modifikovani su oni koje niko ne koristi.
Morate da dizajnirate svoj softver za promene, jer nije pitanje da li će, nego kada će se od vas tražiti da nešto ključno promenite ili prilagodite.
Drugi razlog da imate promene na umu je taj što ćete možda morati da se vratite par koraka unazad. Svaki programer je iskusio ovo u jednom trenutku: objavi se ažuriranje i softver samo prestane da radi. Kada se to dogodi, potrebno je da se vratite na stariju verziju dok ne shvatite šta je pošlo po zlu. Ako pravite softver koji nije sposoban za tako nešto, nabacićete sebi mnogo više posla.
Kako biste osigurali da je softver fleksibilan na taj način, podržite stare API-jeve uz nove. Ako imate bazu podataka, postarajte se da sve promene mogu da se vrate tako što nećete redefinisati ili uklanjati kolone ili tabele.
Postoji još jedna promena za koju morate da budete spremni: eventualna zamena vašeg sistema. Pisanje softvera je takvo da često niko nije siguran šta je apsolutno tačan odgovor kada se nešto pravi. Ako neko zameni vaš kod nemojte to shvatati kao uvredi, ako ste napravili softver koji traje pet godina to je impresivno.
Jednog dana, svaki deo koda koji ste napisali će biti isključen i deo vašeg posla u dizajniranju softvera je da taj proces bude što bezbolniji. Možda u tome uspete ako budete imali ove principe na umu.
0 komentara