CTM #8 – SOLID u praksi

Svi znamo one top-shop reklame u kojima spiker “amerikanizovanim” glasom kaže: “KO JOŠ VOLI MASNO?“, a mi vas u istom stilu pitamo: “KO JOŠ VOLI LOŠE NAPISAN KOD?

Da ne biste više pisali loš kod, dođite na naše novo predavanje da čujete kako to možete da sprečite.

Kao loš kod često definišemo kod koji ne može da se održava. Ovakav kod neretko postaje ključni uzrok neuspeha projekta i vodi vas u propast. Da bismo izbegli da pišemo loš kod tu su određeni principi koje bismo trebali da poštujemo. Najpoznatije principe dobrog programiranja prikupio je i sastavio Robert C. Martin, među developerima poznatiji kao Uncle Bob. Nekoliko godina kasnije je Michael C. Feathers primetio da ako ove principe poređa u određenom redosledu, može da se dobije akronim SOLID. Od tada pa do danas ovaj akronim predstavlja pet opšte prihvaćenih principa dobrog programiranja.

Upravo su SOLID principi naša nova tema, a predavač koji će nam o njima pričati je Dejan Miličić, Software Craftsman u San Francisco startup-u Shyft. Tokom predavanja Dejan će ući u suštinu ove popularne skraćenice, razotkriti motive koji stoje iza ovih principa i pokazati kakve sve tragične posledice može imati njihovo nepoštovanje pri realizaciji projekta.

Neke od tema kojih će se Dejan dotaći u svom izlaganju su:

kratak istorijat i motivacije za nastanak SOLID principa,
– zašto je kvalitet bitan za uspeh jednog projekta,
– Agile razvoj pored metodologije obuhvata i tehničku stranu koja je često zanemarena
– objašnjenje SOLID principa
– demonstracija posledica nepoštovanja svakog od ovih principa.

Ako vas zanima kako da počnete da pišete dobar kod ili da unapredite svoj postojeći stil dođite da zajedno čujemo Dejana.

Čekamo vas u Poslovnom inkubatoru Novi Sad u sredu, 7. novembra 2018. u 18h.

Predavanje je besplatno, ali je potrebno registrovati se na događaj putem Meetup platforme na ovom linku.

NAPOMENA: primenljivo u svim programskim jezicima.

Knjige koje svaki programer treba da pročita

Svaki profesionalni programer ukoliko želi da bude majstor svog zanata, neophodno je da non-stop napreduje i usavršava svoje veštine. Jedan od koraka na ovom putu podrazumeva i edukaciju iz oblasti koje nisu samo pisanje mnoštva linija koda, nego i njihova organizacija, način pristupu rešavanja određenog problema, kao i kolaboracija sa kolegama iz tima.

Jedan od načina da se steknu nova znanja je čitanjem literature iz zadate oblasti i izučavanjem relevantne materija. Iz tog razloga mi ovde predstavljamo spisak knjiga koje nisu direktno vezane za tehnologiju u kojoj programer radi, nego kako on treba da radi. Znanje iz ovih knjiga može se primeniti u bilo kom programskom jeziku, a ono omogućuje da programer dobija novi ugao gledanja na njemu poznate situacije. Ovim znanjem otvara se put za nove ideje, koje jednostavnije i efektivnije mogu rešiti probleme sa kojima se neprestano susrećemo pri razvijanju softvera.

Na internetu se mogu pronaći razni tekstovi tipa 154 najbolje knjige za programiranje ili spisak od 129 esencijalnih programerskih knjiga. Kad vidim ovakve spiskove ja se zapitam: Kako 129 knjiga mogu da budu esencijalne u bilo kojoj oblasti i ko ima vremena da ih pročita i izuči u razumnom vremenu?

Da bih izbegao problem velikih spiskova knjiga i da bih vas što lakše uputio ka cilju da postanete pravi profesionalni programeri, odabrao sam nekoliko knjiga sa kojima možete započeti svoje putovanje ka profesionalizmu u svom poslu. Dok ih budete čitali, javiće vam se mnoga nova pitanja i problemi, ali tada ćete već znati kako da odaberete kvalitetne knjige za dalji napredak ka cilju koji sami sebi postavite.

Principi programiranja

Ova grupa knjiga objašnjava osnovne tehnike programiranja. Učenjem iz ovih knjiga naučićete da pišete smisleni kod koji i drugi ljudi posle vas mogu da nastave da razvijaju.

design-patternsDesign Patterns: Elements of Reusable Object-Oriented Software

Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm

Šabloni predstavljeni u knjizi daju nam gotova rešenja za probleme koji se obično javljaju prilikom razvoja softvera. Ovo je prva knjiga ove vrste i do dana današnjeg predstavlja jednu od najuticajniju knjigu u oblasti razvoja softvera. Predstavlja važan izvor informacija u objeknto-orijentisanog programiranju kako za teoriju, tako i za praksu.

refactoringRefactoring: Improving the Design of Existing Code

Martin Fowler

Refaktorisanje je proces ponovnog pisanja delova programa, bez promene načina njegovog funkcionisanja, u cilju unapređivanja čitljivosti koda, kao i prilagođavanja koda lakšem testiranju i održavanju. Knjiga je napisana sa fokusom na OOP, a struktuirana je kao katalog tehnika refaktorisanja.

Knjigu je bitno pročitati, zato što se idealan kod ne može napisati iz prve ruke, ali ga zato primenom objašnjenih principa refaktorisanja možemo dovesti u optimalnu formu.

working-effectively-with-legacy-codeWorking Effectively with Legacy Code

Michael C. Feathers

Vremenom postaćete iskusni developeri, a tada će se od vas očekivati da nastavite rad na projektu koje su pre vas započeli i na kojima su radili neki manje iskusni developeri. U ovakvim situacijama, može se desiti da taj kod nije napisan po svim pravilima o kojima ste učili i često ne postoje nikakavi testovi koji validiraju ispravnost tog koda.

Kako onda napraviti neku izmenu u tom kodu, tako da posle te jednostavne izmene budemo sigurni da će ostatak softvera i dalje funkcionisati ispravno?

Martin Fowler definiše Legacy Code, kao kod za koji nisu pisani testovi. U knjizi nam objašnjava tehnike refaktorisanja koje možemo da primenimo na ovakav kod, kako bi smo njegove najbitnije delove (delove koje upravo pokušavamo da izmenimo) podveli pod testove i da na taj način budemo sigurni da će oni funkcionisati i posle naših izmena.

clean-codeClean Code: A Handbook of Agile Software Craftsmanship

Robert Cecil Martin

Skoro svaki loše napisan kod može da radi. Problemi nastaju onog trenutka kada tako loše napisan kod treba proširiti s novom funkcionalnošću. Dodavanje nove funkcionalnosti uzrokuje da neke stvari koje su ranije radile, prestanu da rade i ceo dalji razvoj programa postaje horor priča.

Da do ovoga ne bi došlo, Robert C. Martin se udružio sa kolegama iz firme Object Mentor, kako bi predstavio najvažnije principe agilnog razvoja softvera. Primena ovih principa na ispravan način obezbeđuju da do predstavljenog scenarija ne dođe.

Software Craftsmanship

Odavno je poznato da programiranje nije umetnost, nego veština. Zato se tako i trebamo odnositi prema ovom poslu. Programiranje se do neke granice može naučiti, ali usavršiti se može jedino vežbanjem. Knjige predstavljene u ovoj oblasti ukazuju nam koje su to vežbe i znanja neophodni da bi smo postali pravi majstori svog zanata.

the-pragmatic-programmerThe Pragmatic Programmer

Andy Hunt and Dave Thomas

Ovo je prva knjiga koja je iznela stav da programiranje nije umetnost, nego veština koja se može uvežbati. Knjiga je napisana pre skoro 20 godina, a mnoge napisane stvari i dan danas važe. Razlika u odnosu na ono vreme je što danas imamo kvalitetnija razvojna okruženja za programiranje i verzionisanje koda, ali sve ostalo napisano i danas jednako važi kao i tada.

the-clean-coderThe Clean Coder: A Code of Conduct for Professional Programmers

Robert Cecil Martin

Robert C. Martin je programer i jedan je od ko-osnivača Agilnog manifesta, a takođe je i autor nekoliko knjiga i kurseva koji propagiraju agilni način razvoja softvera.

U ovoj svojoj knjizi iznosi discipline, tehnike, alate, kao i vežbe koje čine jednog developera pravim majstorom svog zanata – software craftsman-om.

the-software-craftsmanSoftware Craftsman

Sandro Mancuso

Biti software craftsman autor u ovoj knjizi podiže na viši nivo. Kada se u razvoj softvera uključe ponos, profesionalizam i ljubav prema poslu, kada se teži kvalitetnom i izvanrednom rešenju tek tada počinje da se prepoznaje rad pravog profesionalaca.

Knjiga pokriva neke od aspekata profesionalizma koje nisu obuhvaćene u prethodno opisanoj knjizi, a činjenica da je Robert C. Martin uvrstio ovu knjigu svoju seriju knjiga, samo joj još više podiže vrednost i daje dodatni razlog za čitanje.

the-mythical-man-monthThe Mythical Man-Month: Essays on Software Engineering

Fred Brooks

“Biblija razvoja softvera”, knjiga koju svi citiraju, neki je i pročitaju, ali samo nekoliko ljudi se pridržava činjenica iz knjige.

Ovako je autor opisao svoju knjigu 20 godina posle njenog izdavanja. Knjiga je napisana, sada davne, 1974. godine i predstavlja prvu knjigu koja je napisana na temu razvoja programa iz menadžerskog ugla. U knjizi je predstavljen i objašnjen razlog zašto dodavanje još ljudi u tim koji kasni s isporukom softvera, unosi još više kašnjenja u isporuku istog. Knjiga važi za klasično delo o uticaju ljudskog faktora na razvoj softvera.

zen-and-the-art-of-motorcycle-maintenanceZen and the Art of Motorcycle Maintenance: An Inquiry Into Values

Robert M. Pirsig

Za kraj predstavljamo jednu knjigu koja nema nikakve direktne veze s programiranjem, ali je jako bitna za posao kojim se bavimo. Ova knjiga nas tera da razmišljamo o stvarnim životnim vrednostima i predstavlja filozofsko delo koje istražuje metafiziku kvaliteta, koja inkorporira aspekte Istočno-Azijske filozofije i pragmatizma.

Ako tek počinjete sa svojom karijerom profesionalnog developera, možda ovu knjigu i preskočite za sada, ali definitivno je trebate imati pri ruci, jer svako od nas se u jednom trenutku u životu zapita šta su to istinske vrednosti.