
Edukacija developera nije usmerena samo na programiranje, već obuhvata i šire teme, poput metodologija koje se koriste za organizaciju, praćenje i upravljanje projektima i zadacima. Cilj je da se developerima približi ceo proces razvoja softvera i njegovi različiti aspekti, od implementacije i kontrole kvaliteta do osiguranja kvaliteta i procesa isporuke.
Kako bismo sprečili da se isti problemi ponavljaju, odlučili smo da probni rad bolje organizujemo i damo mu jasniju strukturu. Umesto da zaposlene odmah „bacimo u vatru“, fokus smo stavili na učenje, obuku i pripremu kroz simulacije projekata i intervjua. Na taj način želimo da ih što bolje pripremimo za rad na različitim projektima, kao i za profesionalnu komunikaciju sa timovima i klijentima.
Cilj simulacije je da zaposlene pripremi za rad na stvarnim projektima, komunikaciju sa klijentima i timovima, kao i da im pomogne da sa više sigurnosti odgovore na tehničke i organizacione izazove.
Kontaktirajte nasMetodologije razvoja softvera i modeli životnog ciklusa
Budući da naši developeri učestvuju na sastancima sa različitim klijentima, važno je da poznaju različite metodologije razvoja softvera i modele životnog ciklusa, kao i njihove prednosti i nedostatke. To uključuje, između ostalog, Waterfall model, iterativni i inkrementalni razvoj, Agile metodologiju, Lean, Scrum i Kanban.
Upoređujemo kvalitet i nivo dokumentacije, preglednost aplikacije, obim razvoja, vreme potrebno da proizvod prođe kroz pojedine faze ciklusa, tehnički dug i druge važne aspekte razvoja.
Obrađujemo značenje i strukturu User Story-ja, Backloga, Acceptance Criteria-ja, Definition of Ready i Definition of Done, kao i statuse zadataka i Bug Report-e. Kroz radionice uče da procenjuju zadatke u story point-ima, planiraju Sprint i prate izveštaje i utrošeno vreme, koristeći alate namenjene za tu svrhu.
Aspekti razvoja softvera
Zaposlene upoznajemo i sa različitim aspektima razvoja softvera. To uključuje, između ostalog, Quality Control, Version Control, Code Review, DevOps, Environments, SysAdmin, Quality Assurance, Testing, UI/UX Design i Task Management.
Veze između ovih i drugih aspekata razvoja softvera prikazane su u nastavku.
Uloge članova tima
Članovi tima imaju različite uloge i odgovornosti u okviru pojedinih aspekata razvoja softvera. Važno je da zaposleni razumeju šta se od njih očekuje u okviru njihove uloge, ali i šta mogu da očekuju od drugih članova tima.
Obrađujemo uloge i poduloge Managera, QA-a, Dizajnera, Developera i članova Infrastructure tima, kao i uloge specifične za SCRUM, prikazane na slici ispod.
Simulacija projekta
Nakon edukacije zaposlenih, a često i paralelno sa njom, želimo da novo stečeno znanje primene na konkretnom projektu. Međutim, važno je da pritom imaju prostora za greške i mogućnost da dobiju povratnu informaciju u opuštenom okruženju, bez dodatnog pritiska. U suprotnom, na projektu koji je u toku ponovo bi se suočili sa problemima učenja u hodu i teško bi prevazilazili postojeće nesigurnosti.
Takođe, bilo bi im teško da procene da li se ono što su naučili zaista primenjuje, jer potrebe projekta mogu biti drugačije, a način organizacije prilagođen njegovim specifičnostima.
Zbog toga organizujemo simulaciju projekta.
Delovi i cilj
Kroz simulaciju projekta zaposlene uključujemo u sve aspekte rada na projektu, od analize specifikacije do deployment-a, kako bi stekli praktično iskustvo i lakše prepoznali šta im nedostaje kada se priključe drugom projektu.
Formiramo tim mentora koji preuzimaju različite uloge, uključujući i uloge klijenta, organizuju SCRUM sastanke i objašnjavaju svoju ulogu, kao i uloge samih učesnika. Nakon toga sledi praktično tehničko podešavanje alata, repozitorijuma, pipeline-ova i okruženja.
Učesnicima takođe ustupamo postojeći kod koji imamo i učimo ih kako da se kroz njega snalaze, kako da ga debaguju i analiziraju.
Fokus se zatim prebacuje na komunikaciju sa klijentom, davanje povratnih informacija o urađenom poslu i procenama, analizu grešaka, njihovo ispravljanje i pronalaženje načina da se ubuduće ne ponavljaju.
Testiramo funkcionalnosti i pronalazimo greške, a zatim kroz simulaciju nezadovoljnog klijenta vežbamo kako reagovati u različitim situacijama. Dajemo smernice za vođenje razgovora, posebno kada je zadatak pogrešno procenjen, funkcionalnost nije isporučena ili nisu uzeti u obzir određeni edge case-ovi.
Uvodimo i dodatne izazove, poput kontradiktornih zahteva u specifikaciji, nejasnih, nedovoljno definisanih ili hitnih zahteva, kako bismo pokazali kako se takve situacije mogu rešavati kroz komunikaciju sa klijentom.
Cilj simulacije je da zaposlene što bolje pripremi za različite situacije i probleme koji se mogu pojaviti u vezi sa projektom, kodom, komunikacijom ili klijentom. Želimo da budu spremni da se uključe u bilo koji projekat i da pritom sačuvaju sigurnost u sebe i svoje znanje, bez nepotrebne anksioznosti.
Naravno, Mentori i Leadovi su i nakon toga dostupni za podršku i konsultacije.
Koraci
Simulacija projekta počinje detaljnom analizom specifikacije projekta, koju mentori unapred pripreme. Zaposleni je čitaju, analiziraju i komentarišu, ukazuju na nedoslednosti, predlažu moguća rešenja i pripremaju pitanja za diskusiju sa menadžerima i mentorima.
Nakon toga organizuju se storytelling sesije, tokom kojih se pišu User Story-ji i definišu njihovi Acceptance Criteria, kao i Definition of Ready i Definition of Done. Ovi kriterijumi se kasnije mogu ažurirati ukoliko se za tim ukaže potreba.
User Story-ji se zatim grupišu u epike, na osnovu kojih se kreira roadmap.
Nakon toga sledi prioritizacija Backloga i njegova podela na Sprint Backlog-e, pri čemu svaki Sprint ima jasno definisan cilj koji treba ostvariti u roku od jedne nedelje, barem u početku.
Zadaci planirani za naredni Sprint detaljnije se razrađuju na Sprint Refinement sastancima. Za svaki od njih definišu se podzadaci, kao što su kreiranje ili ažuriranje strukture entiteta, implementacija, pisanje unit, integration i end-to-end testova, priprema QA test case-ova i njihovo izvršavanje.
Pre prvog Sprinta ili tokom njega podešava se lokalno razvojno okruženje, uključujući IDE-ove, editore, SDK-ove i Git. Nakon toga se podešava remote repository i dodatna okruženja, poput dev i test okruženja.
Na kraju se projekat inicijalizuje i podešavaju se linteri, alati za analizu koda, test runner-i i reporteri, kako bi mogli da se pokreću lokalno, ručno i putem pre-commit hook-ova, kao i u okviru CI build pipeline-a.
Nakon toga počinje razvoj, uz primenu style guide-ova, konvencija, best practices, principa i obrazaca. Kod se refaktoriše i optimizuje pre i nakon slanja izmena na review mentoru putem merge request-a.
Zaposleni se zatim upoznaju sa procesom manualnog deployment-a i CD pipeline-om. QA potom testira zadatke, evidentira rezultate testiranja i prijavljuje pronađene bugove, nakon čega se fokus prebacuje na debugging, analizu i snalaženje u kodu.
Priprema za intervju
Pre svakog intervjua sa klijentom, zaposleni obnavljaju tehničko znanje koristeći knjige, tutorijale, dokumentaciju i druge materijale za učenje, u fizičkom ili digitalnom obliku.
Najmanje jedan dan pre intervjua održava se bar jedna simulacija intervjua između zaposlenog i njegovog Leada, na engleskom jeziku. Simulacija obuhvata pitanja iz oblasti tehnologija, SCRUM-a, opšteg razvoja softvera, kao i pitanja koja su se ranije pojavljivala na intervjuima.
Na kraju svakog intervjua, zaposleni treba da zatraži povratnu informaciju od klijenta. Na taj način klijenta podstičemo da svoje utiske o intervjuu podeli direktno sa zaposlenim, a ne samo sa našom kompanijom.
Povratne informacije koje dobiju zaposleni i kompanija zatim se upoređuju i analiziraju kako bi se uočile eventualne razlike.
Nakon svakog intervjua sa klijentom, zaposleni treba da ga dokumentuje kako bi informacije ostale dostupne i drugim zaposlenima za buduće potrebe. Dokument sadrži lične utiske zaposlenog, povratnu informaciju klijenta, postavljena pitanja i date odgovore.
Dokument se zatim prosleđuje Leadu, koji ga arhivira i naknadno dopunjava informacijom o odluci klijenta, kada ona bude poznata.
Cilj simulacije je da zaposlene pripremi za rad na stvarnim projektima, komunikaciju sa klijentima i timovima, kao i da im pomogne da sa više sigurnosti odgovore na tehničke i organizacione izazove.
Kontaktirajte nasKategorije (tagovi):
- #Onboarding
- #SoftwareDevelopment
- #ProjectSimulation
- #Mentorship
- #CareerDevelopment
- #SoftwareEngineering


