in Code

Nije programer svako ko kodira [en]

Svi znaju da ako se bavite informacionim tehnologijama morate stalno da učite kako vas vreme i nove tehnologije ne bi “pregazile”. Lako možete pretpostaviti da su programeri ljudi koji stalno uče i rade na sebi i svom profesionalnom usavršavanju. Ne, to zapravo nije tako kao što se čini na prvi pogled. Mali je broj onih koji napreduju i uče dovoljno brzo da bi mogli da kažu za sebe da jesu programeri.

Šljaker ili Programer

Slika preuzeta sa http://codesoftly.com/2010/03/ha-code-entropy-explained.html

Programeri koji rade u firmama, pritisnuti rokovima, i konstantnim nedostatkom vremena zapravo nazaduju, jer tehologija nema vremena njih da čeka. Njima je zapravo dobro, oni su zadovoljni svojim znanjem, oni uspešno ispunjavaju zahteve koji se postavljaju ispred njih, klijenti će dobiti željenu funkcionalnost, a da li je to dovojno ?

Situacija u praksi sa kojom sam se ja susreo je zapravo takva da firme ne ulažu u znanje svojih programera, a programeri ne mogu da vide koliko je zapravo njihovo neznanje, i koliko je veliki spektar znanja koje čeka na njih.

Ono što nedostaje programerima jesu predavanja, posećivanje konferencija, međusobna razmena znanja. Konferencije i predavanja ljudima će dati usmerenje, ideje i osnovne informacije. Najvažnije od svega “otvoriće im oči” i nove horizonte. Benefit za firmu premašuje uložen novac, kvalitetni ljudi gladni znanja su neprocenjiv resurs.

Razmena znanja među članovima tima je odličan početak i dobar put do boljeg tima i kvalitetnijeg koda. Važno je razumeti da dobar kod znači brži razvoj, lakše reagovanje na promene i u krajnjem ishodu bolji proizvod za klijenta.

Mrzim svoj kod !

Pogledajte prethodni projekat koji ste radili, pogledajte kod koji ste pisali pre godinu dana. Da li vam se dopada kod koji ste vi pisali ?

Ako vam kod koji ste pisali pre godinu dana deluje dovoljno dobar, možda i savršen, onda ne samo niste napredovali, vi ste zapravo nazadovali. Svaki kod je prepun nedostataka i u svakom kodu ima mesta za refaktoring. Dobar programer prosto mrzi kod koji je pisao prošle nedelje, jer kod je loš niste vi loši, ne shvatajte vaš kod suviše lično.

Refaktoring

je ulepšavanje koda, proces u kojem ćete kod bolje organizovati učiniti ga logičnijim, čitljivijim i takvim da ga svaki programer može ponovo upotebiti i razumeti bez potrebe da se udubljuje u kod.

Refaktoring je proces koji se mora ponavljati svakog dana. Vašem kodu je svaki dan potreban refaktoring. Vaš šef želi da sve bude gotovo danas, i prosto nemate vremena za refaktoring, jel tako ? Nije tako, vi samo pogrešno posmatrate situaciju. Ovo je trenutak kada treba da shvatite da ćete i kasnije vi i vaš tim održavati taj “musavi” kod. Čineći kod lošim, nečitljivim vi zapravo upadate u bunar bez dna, jer će vam za održavanje trebati sve više i više vremena, i dodirnućete tačku u kojoj vam za jednostavno promenu potrebno suviše vremena. To je situacija u kojoj niko nije zadovoljan, ni vi, ni vaš šef, ni vaši klijenti. To sigurno ne želite.

Zato morate svakoga dana refaktorisati vaš kod, i dati mu veliki prirotet, čak i nad zacrtanim rokovima.

Napred punom brzinom

Daću vam nekoliko saveta kako da unapredite sebe, svoje znanje i svoj kod.

  • Naučite SOLID principe objektno orijentisanog dizajna i primenjujte ih svakodnevno. SOLID prinipi će vaš kod učiniti boljim, i verujte mi zamrzećete kod koji ste juče pisali. Najvažniji princip jeste DRY princip, koji nas uči da ne ponavljamo kod, ali ne samo kod već i da se informacija ne sme ponavljati, i ona se u arhitekturi sitema ili bazi sme nalaziti samo na jednom mestu.
  • Pročitajte kljigu Design Patterns, koju su napisali čuveni Gang of Four. Dizajn paterni koji su opisani u ovoj knjizi su osnovni paterni koji će vam biti potrebni u svakodnevnom radu. Timovi koji koriste dizajn paterne se brže i lakše sporazumevaju, a njihov kod je prelep.
  •  Nisu svi dizajn paterni opisani u GOF knjizi, pa će vaš sledeći korak biti upoznavanje sa GRASP paternima.
  • Koristite standarde u pisanju koda, imenovanja promenjivih klasa i metoda. Dogovorite standarde sa vašim timom i poštujte ih. Neka metoda radi ono što se očekuje od njenog naziva i neka radi samo to. Objektno orijentisani dizajn je veština koja se uči, naučite je.
  • Internet je prepun korisnih videa sa konferencija i predavanja. Odvojite vreme za svoju edukaciju i pogledajte najmanje jedan video u nedelju dana. Pročitajte najmanje jednu knjigu u tri meseca, i svakodnevno pratite novosti u oblasti tehnologija koje koristite ili želite da koristite u budućnosti.
  • Društvene mreže su koristan izvor informacija, i ako ih koristite na pravi način ne moraju biti samo gubljenje vremena i laka zabava. Twitter je idealna i savršna mreža ako želite da budte u toku sa nekom od tehnologija. Potrebno je samo da pratite odabrane ljude ili određen heštag i prave informacije će doći do vas. Filtrirajte informacije na pravi način i budite u toku.
  • Birajte okruženje koje čine ljudi koji su gladni znanja koje žele da podele sa svojim timom i one koji koriste najnovije tehnologje. U timu morate imati nekoga ko je daleko ispred vas u znanju i ko će vam biti “tutor”. Ta osoba će vam pomoći da brže učite i napredujete. Isto tako i vi delite nova saznanja sa ostalim članovima tima.

Probudite se

Može vam se desiti da vas pregazi vreme, tehnologije i znanje ako se ne prodrmate, ako ne počnete da učite i da se igrate sa novim tehnologijama i novim znanjima. Kažem igrate, jer programiranje može biti zabavna i izazovna igra.
Ako niste spremni za izazove, i mislite da kao programer možete raditi od 9 do 5, onda ste zalutali. Mnogo je onih koji za sebe kažu da su programeri, a kada pročitaju ovaj tekst shvatiće da im nedostaje ono što se zove “strast”. Bez strasti prema kodu i programerskim veštinama, da li možete da kažete “Ja sam programer” ?

 

 

Write a Comment

Comment

13 Comments

  1. Istina ziva, znam iz iskustva, evo ako mi vjerujes gledacu da svaki slobodan dan odgledam neki snimak, i da procitam barem u mesec dana jednu knjigu imam ih kuci bas dosta za php, c++, visual, a nisam ih citao do kraja. Pre nego sto sam dosao do tvoje adresa sam odgledao jedan snimak vezan za bootstrap i bukvalno radim sa njim duze vreme i tek sad otkrivam neke cake koje su bile na tom snimku, a trebale su mi.

  2. Špageti kod je stalna pojava. Radim u US firmi i vodim tim programera. Verovali ili ne imao sam problem da objasnim ljudim zašto moraju da koriste OO umesto proceduralnog. Trenutno tim troši 50% vremena na ispravljanje bagova zbog lošeg koding standarda, a 50% na novi developement (I ovo je uspeh verujte).
    By the way ako neko ko čita ovo ima iskustva sa symphony2 components može da se javi za posao na nebojsha.matic@gmail.com.

  3. Ispred interpunkcijskih znaka ne ide razmak!

    “Mrzim svoj kod !” => “Mrzim svoj kod!”
    “da kažete “Ja sam programer” ?”

    Tesko da ce neko ozbiljno shvatiti tekst o programiranju i standardima u pisanju koda koji je napisao neko ko ne zna osnovna pravila o internet pismenosti 🙂

  4. Tekst je odlican. Medjutim, u nekim situacijama od rokova, pritisaka i ostalih cuda, prinudjeni ste na kompromise koje unazadjuju kod. Problem je i u svesti poslodavca i u svesti programera. Poslodavac je zadovoljan ako zaradi pare i ako software radi to sto treba da radi. Njega ne interesuje da li je kod “lep” ili ne. S druge strane, programer se bori se nerealnim rokovima i pritiscima i u takvim situacijama je prinudjen na trule kompromise. Pricam iz licnog iskustva. Refaktorisemo kod svakih 6 meseci, zbog sitnih zahteva koji “moraju” da se urade “za sutra”. Trudimo se da u svakoj refaktorizaciji dodamo neku novu tehnologiju koja bi nam olaksala zivot. S druge strane, i tu moze da nastane problem, ako se ta nova tehnologija ne poznaje dovoljno a stigne zahtev da se nesto uradi sto i nije bas moguce sa novim kodom onda nastaje veliki problem. Sve u svemu, zivo blato i ne postoji dobro resenje. Idealno je da se svaki novi projekat pocinje sa dobrom specifikacijom zahteva, dobrim “brainstormingom” etc… I da se na taj nacin uce nove tehnologije… Sve ostalo je sviranje k….., jer mogu ja da odgledam 1000 snimaka, da uradim 1000 tutorijala, ali ako to znanje ne primenim na ziv projekat dzaba…

  5. Potpuno se slažem. Ja na formalno obrazovanje gledam kao na dobru podlogu. Uspeh zavisi od interesovanja, konstantnog rada. Sve to je lakše kada volite to što radite.

  6. Odličan tekst. Shvatio sam da sam šljaker i da nemam strasti prema programiranju. Programiram isključivo zbog novca, nekad se iznerviram pa bih bacio laptop kroz prozor, al valjda je to u opisu posla 🙂 Google mi pomaže da rešim sve “probleme”, u kojima pravi programeri uživaju. Ne razumem kako – još manje zašto. Ko još voli da bude u problemu !?

  7. Mogu da kažem da bez strasti ja jesam programer. Jedno je biti u toku sa vremenom i prilagođavati se tehnologijama koje su efikasne za rešavanje potrebnih problema a drugo je imati manje strasti zbog toga što radite sa ljudima koji glume strast i vređaju vašu intelegencij zato što ne dajete isti značaj stvarima koje su za vas podrazumevane gde u njihovim očima niste programer jer nemate dovoljno elana iako vaša aplikacija radi absolutno podjednako tačno i sa istim kvalitetom kao što to radi kod ljudi koji proglase da imaju ekstremnu strast prema programiranju. Stvari nisu tako crno-bele inače se slažem sa svim što se tiče promene koda u ovom postu.