Manifest organizovanog softverskog razvoja
Neretko razmišljam o postojanju obrazaca u razvoju softvera: na sličan način kao što postoje programerski obrasci, sigurno moraju postojati nekakvi obrasci samog softverskog razvoja i grupa koje učestvuju u njemu. Mislim na komunikaciju i, uopšte, interakciju između funkcionalnih timova organizacija.
Pre nego što momentalno napustiš stranu - priznajem, ovo više zvuči kao najava za ‘kako mali Igor zamišlja razvoj softvera’ - imaj na umu jedno: ovo je, možda, jedan od važnijih uvida u vezi softverskog inženjerstva.
Neki drugi koji su isto razmišljali na ovu temu su krenuli od ideje da se celine koje učestvuju u razvoju softvera posmatraju kao socijalne grupe. Organizovali su istraživanje raznolikih softverskih kompanija; uočili su izvesne obrasce i ono što izdvaja produktivne timove. G. Cain i Copien iz AT&T Bell laboratorija su predstavili rezultate istraživanja u radu “Social patterns in productive software development organizations”, objavljenom krajem 1996. (!) godine. Mala trivija: početkom iste godine je uveden Internet u tadašnju Jugoslaviju.
Neću prepričavati pomenuti rad, javno je dostupan i možete ga brzo naći pretragom; 20-tak strana neće uzeti puno vremena. Izdvojiću samo tri uvida koja nalazim ključnim za razvoj softvera, u vidu nekakvog manifesta (jer to zvuči tako dobro:)
Manifest organizovanog softverskog razvoja
- Software development is a predominantly social activity.
- The coder is a cutpoint of most design and implementation processes.
- If there is one consistent measure of successful organization, it is how well its members maintain relationships through communication.
Misliti & Uvrežiti
Čini mi se da, danas, najmanje vodimo računa o izrečenom. Fokus leži na veštinama softverskog razvoja - a ne i: ‘znanju’. Softverski obrasci (design patterns) su tek običan vokabular od koga smo napravili bibliju koje se slepo držimo. Glomazni programski okviri (da, SpringBoot), neskuvane biblioteke (da, React), a tek trivije poznavanja infrastrukture (da, AWS), čine osnov današnjeg softverskog razvoja; u kome se gotovo nipodaštavaju socijalna pitanja pod izgovorom da nisu ‘inženjerska’ - kao da gornje navedene veštine to jesu.
Svakako da su veštine i znanja neophodna za razvoj softvera - ali ne i za kvalitetan razvoj.
Socijalna aktivnost, čvorišna pozicija programera i odlična komunikacija. Uvrežiti.