WordPress – mnogo više od samo bloga

WordPress je online, open source web stranica izgrađena u PHP-u. No, za one koji ne razumeju šta je PHP – WordPress je verovatno najlakši i najmoćniji sistem za upravljanje blogovima i web sadržajem (ili CMS-om) danas.
Od svog nastanka 2003. godine pa do danas, WordPress koristi impresivnih 25,8% svih dostupnih stranica na Internetu i ovo je broj koji će vremenom samo rasti. Pogledajmo i zašto je to tako.

Ko sve koristi WordPress?

Mnogi poznati blogovi, web stranice koje svakodnevno objavljuju vesti, web stranice sa muzikom, Fortune 500 kompanije, slavne ličnosti i mnogi drugi. Na primer, poznati blogovi poput Mashable i TechCrunch su na WordPressu. Popularne novinarske kuće kao što su New York Times i CNN takođe koriste WordPress. Ako vas je ikad zanimalo ko koristi WordPress kao sistem za svoju web stranicu pogledajte ovde. Verujem da ćete biti veoma impresionirani brojem poznatih web lokacija koje koriste ovaj popularni sistem za upravljanje sadržajem na svojim web stranicama.

wordpress_bicycle

Koje su prednosti korišćenja WordPress-a?

Jednostavan interfejs: WordPress platforma nudi jednostavan korisnički interfejs kada je reč o drugim sistemima za upravljanje sadržajem. Nakon prijave u WP doći ćete na početnu tablu. WordPress tabla vam omogućava da promenite mnoge elemente vašeg sajta, bez ikakve potrebe da znate ijednu liniju koda. Možete menjati/uređivati slike, stranice, poruke, sadržaj i razne druge funkcije prilično brzo i jednostavno.

User-friendly: WordPress je izuzetno user friendly. Ostali sistemi za upravljanje sadržajem hvale njihove beskrajne mogućnosti koji uopšte nisu komplikovane za korišćenje, te se lako prilagođava bez potrebne dodatne podrške. Da biste dodali novi post na svom blogu/web stranici morate jednostavno kliknuti “Stvori novi post”, prilagodite URL (ako se nije već sam prilagodio prema naslovu), uredite sadržaj i objavite ga. Mislim da jednostavnije od ovoga ne može.

Web biblioteka: WordPress ima veliku web biblioteku vizualnih tema (templates) i dodataka (plugins). Vizualne teme se, kako im ime i sugeriše, koriste za promenu izgleda i generalnog vizalnog utiska vaše WP web stranice. Online možete pronaći i skinuti bezbroj besplatnih i premium tema koji odgovaraju potrebama vaše web stranice.
S druge strane, besplatnim ili premium dodacima, koji su isto tako masovno dostupni online, možete lako povećati funkcionalnost svoje stranice: dodati joj Twitter i Facebook feed, ubaciti CAPTCHA funkciju, poboljšati SEO, automatski optimizovati slike i još mnogo toga.

Online zajednica: Čak i ako ne naiđete na probleme prilikom postavljanja platforme, nema razloga za brigu. WordPress ima vrlo jaku i čvrsto povezanu zajednicu spremnu da vam pomogne. Sve što trebate učiniti je pretražiti njihovu stranicu da biste pronašli odgovore na sva vaša pitanja.

Besplatno je: Ne morate platiti apsolutno ništa za korišćenje ove platforme. Jedino ako želite koristiti prilagođene WP šablone ili želite angažovati web dizajn kompaniju koja se bavi WordPressom za dizajn unikatne vizualne teme za stranicu.

Razvoj: WordPress je CMS koji će se menjati s vašom kompanijom. WP zajednica je posvećena konstantnoj izgradnji ove platforme, pa nije ni čudo da konstantno pomeraju granice WordPressa i nastoje pružiti korisnicima platformu koja je sposobna razvijati se kako bi se zadovoljila sva buduća očekivanja i potrebe.

Šta to sve znači ako ste programer?

Iako je ovo, teoretski, blogging platforma, mnogi programeri odabiru WordPress zbog niza razloga. Pre svega, radi velikog broja nezavisnih saradnika i volontera koji održavaju kod koristeći ovaj Open Source model. Nove funkcije, ispravke grešaka i sigurnosne zakrpe se rešavaju relativno brzo i vrlo često baš upravo zbog velike zajednice koja besplatno doprinosi razvoju ovog CMS-a. Drugo, postoji ogroman broj besplatnih kvalitetnih tema i dodataka koji omogućavaju programerima i developerima lako prilagoditi ne samo izgled već i funkcionalnost celog sajta te ga optimizirati za Google tražilice sa jednim klikom na instalaciju jednog od plaginova, bez svih dodatnih neprijatnosti koje inače loš SEO zna doneti. Ovo definitivno mnogo znači ukoliko radite na eCommerce trgovinama i blogovima uopšteno.

wordpress_blogger

A što ako niste programer?

Iste stvari vrede i za one koji nisu programeri. Upravo zbog WordPress-ovih mogućnosti zaista ne morate da znate programirati i kodirati da bi ga koristili. Sve vam je omogućeno na dohvat ruke, samo ju trebate pružiti, a ako i naiđete na neki problem, WP zajednica je tu za vas.

Ako vas ovaj naš tekst još uvek nije uverio u korisnost i prednosti korištenja WordPressa samo zavirite u njihovu online zajednicu i pogledajte recenzije korisnika koji su ga probali, ili još bolje, probajte sami pa nam javite vaše mišljenje i iskustva koje ćemo rado podeliti.

Živeti i raditi kao freelancer

Zivot freelancera

Kao freelancer radim već nekoliko godina, a radnog iskustva imam i u velikom i u malom korporativnom okruženju, tako da se može reći da sam isprobao različite tipove zaposlenja. Iz razloga koje ćemo ubrzo navesti primetio sam da mi freelance način života najviše pogoduje i odlučio sam se držati toga. Ne mogu reći da je to za svakoga, treba biti izuzetno disciplinovan i vredan, takođe treba biti i vrlo strpljiv i moći podneti blage stresove prouzrokovane nestabilnim/neredovnim poslom. Ko uspe da izađe na kraj sa tim moći će zaista da ubire velike pogodnosti samostalnog zaposlenja.

Šta znači biti freelancer?

Vrlo jednostavno, umesto da ste zaposleni u nekoj firmi i u njoj radite poslove za neke klijente, kao freelancer imaćete direktnog kontakta sa klijentima, izuzećete firmu kao “posrednika” i direktno isporučivati rezultat svojeg rada krajnjem korisniku. Kao freelancer takođe proširićete skup svojih aktivnosti, i umesto striktnog fokusiranja na kreiranje i isporuku vašeg proizvoda, morećete i da vodite komunikaciju sa klijentima, potražujete nove poslove, vodite računa o pravnim obavezama i slično. Banalno posmatrajući – vodićete malu firmu za sebe i u isto vreme bićete njen direktor i jedini zaposleni radnik.

Koje su prednosti rada kao freelancer?

Freelancerski život nudi mnoge pogodnosti koje će, sasvim sigurno, svima zvučati vrlo primamljivo, no nemojte zaboraviti da i one dolaze sa cenom.

    Freelancer

  • Samostalnost i samostalan rad – freelanceri su u mogućnosti da organizuju svoje vreme i život na način koji im odgovara, a kojim će moći da ispune sve poslovne obaveze. Opštijim terminima rečeno to znači klizno radno vreme, mogućnost baratanja slobodnim danima po volji, mogućnost odabira načina realizacije projekta i slično. Naravno, pri ovome uvek treba paziti da klijent bude zadovoljan i obaveze prema njemu ispunjene.
  • Recimo, jedna od čestih pojava koje kompanije praktikuju, po mom iskustvu, je nedovoljno dobra organizacija i uposlenost svojih radnika. To ume da dovede do pojava poput praznog vremena radnika (zbog loše organizacije) tokom kojeg on mora da sedi u kancelariji čekajući formalni kraj radnog vremena, ili često ostajanje za prekovremeni rad.
    freelanceri su, najčešće, u mogućnosti da kotrolišu to i time maksimalno efikasno iskoriste svoje radno vreme, ostavljajući dovoljno vremena i za vanposlovne aktivnosti.

  • Radno okruženje – freelanceri mogu da biraju po želji. Neko voli da radi sam, neko voli da bude okružen ljudima (za to postoje HUBovi), neko voli da sedi napolju, poenta je da možete svoje radno okruženje da organizujete onako kako vam najviše prija, uz naravno ograničenja koja se tiču vaše profesije. Takođe, radna okruženja možete i periodično menjati, što takođe ume da razbije monotoniju svakodnevnog posla.
  • Rad van kancelarije – usko povezano sa prethodnom stavkom, moguće je svoj posao organizovati i van kancelarije. Parkovi, kafići, planine, plaže, kolibe su sve mesta gde biste mogli odraditi svoj posao. Internet i povezanost koju on omogućuje danas ljudima pruža sposobnost da rade sa udaljenog radnog mesta, a da se njihovo fizičko odsustvo praktično ne primeti.
  • Putovanje – neretki su freelanceri koji spakuju svoja sredstva za rad, bio to laptop, foto-aparat, alat ili nešto treće, i otputuju negde na određeni period, bio on par dana, nedelja ili meseci. Promena sredine uglavnom ljudima prija, novo okruženje vam pruža nova iskustva i provode, a pri svemu tome svoj posao obavljate na isti način kao da ste kod kuće ili u svojoj kancelariji.
  • Prosečno veća zarada po odrađenom projetku – kada radite kao freelancer često ćete biti u mogućnosti da ugovorite posao kojim biste dobili više novca nego kroz platu u nekoj firmi, a razlog za to je što se firma izuzima kao posrednik između vas i klijenta.
  • Eksperimentišite – niko vam ništa neće nametati, imaćete punu slobodu u izboru načina vašeg profesionalnog rada. Isprobavajte nove stvari, menjajte radno okruženje, alate, usmeravajte se ka drugim, zanimljivijim oblastima rada, menjajte radno vreme, periode odmora itd. Praktično, šta god vam padne na pamet možete da pokušate jer, na kraju krajeva, vi ste sami svoj šef.

Koje su mane rada kao freelancer?

Kao što je već pomenuto, freelancerski posao donosi i pojedine nepogodnosti koje mogu prouzrokovati stres. Naravno, postoje načini kako se izboriti sa svim tim, i o tome će biti reči malo kasnije.

    Freelancer

  • Nestabilnost i nesiguran posao – retki su profesionalci koji mogu sebi da priušte da rade kada požele i da odmaraju kada im se odmara. Najčešća pojava je da se ljudi prihvataju posla kada ga bude (a nekada ga bude i previše), a odmaraju onda kada ne rade ni na jednom projektu. Poslovne prilike freelancerima (mada se ovo može odnositi i na kompanije) umeju da dolaze u talasima, što znači da nekih meseci možete imati puno posla i zaraditi dosta novca od toga, dok drugih meseci nećete imati puno prilika za rad i živećete od ušteđevine. Zbog ovoga je izuzetno bitno da pažljivo baratate svojim finansijama, i da sa te strane uvek budete spremni na mesec-dva-tri praznog hoda.
  • Izolovanost – često freelanceri koji samostalno rade postanu izolovani od svojih kolega i radnog okruženja njihove profesije. Profesionalne kolege umeju da budu sjajan izvor novih, zanimljivih stvari, novih pristupa vašem poslu, tehnologija, alata itd. Ukoliko ste izolovani od njih, morate na drugi način da se informišete o novitetima iz oblasti vaše profesije, da biste se konstantno usavršavali i napredovali kao profesionalac.
  • Prekomerni rad – ovo ume biti direktna posledica kliznog radnog vremena i preopterećenosti projektima. Često freelancerima se desi da rade i više od klasičnih osam sati dnevno, jer se unesu u previše projekata i posao ih uvuče u sebe. Uvek će biti još jedan task da se uradi, još jedna slika da se obradi, još jedan problem da se reši, i osim u retkim situacijama kada je to izuzetno hitno, treba paziti na ovu pojavu jer će negativno uticati na vaš privatni život, a moguće i na zdravlje.
  • Dodatne aktivnosti – kao freelancer morate misliti na neke stvari koje niste puno mislili do sada. Recimo, morate štedeti novac za godišnji odmor, pošto tokom odmora nećete imati primanja (za razliku od rada u firmi), štedeti novac za periode bolovanja, skoro konstantno biti angažovani na traženju novih projekata i novih klijenata i slično. Takođe, recimo socijalno i zdravstveno osiguranje morate sami za sebe organizovati, morate voditi računa i poboljšavati svoju opremu itd.

Šta je izuzetno bitno ako se krenete da radite kao freelancer?

    Freelancer

  • Štedite novac – ne mogu dovoljno da napomenem koliko je ovo bitno. Ušteđevina će vam pomoći da prebrodite periode bez posla bez pretrpljenog stresa, a takođe omogući će vam i da birate projekte koji vam se sviđaju i na kojima želite da radite, jer najčešće kad je problematično stanje sa finansijama niste baš u prilici da odbijate ponude. Budite racionalni, svoja primanja ravnomerno raspoređujte i uvek sačuvajte deo.
  • Samousavršavajte se – ovo je nešto o čemu bi vodio računa HR odeljak firme u kojoj ste zaposleni. S obzirom da freelanceri nemaju nekoga ko će tako paziti na njihov profesionalni razvoj, morate sami da se pobrinete za to. Istražujte nove alate, metode, tehnologije, pratite dešavanja, posećujte konferencije, sajmove i okupljanja drugih vrsta vezanih za vašu profesiju.
  • Disciplina – vrlo je bitno da ste disciplinovani i predani u svom pristupu vašim profesionalnim obavezama. Kada radite kao freelancer ne postoji niko ko će vam stajati nad glavom, nadgledati šta radite i kako, što ume da vas uljuljka u lažnu sigurnost, po principu “lako ćemo”, a što se onda najčešće završi kao nešto što nam je dosta poznato iz studentskih dana – kampanjski rad nekoliko noći pre zadatog roka. Organizujte svoje obaveze, raspodelite ih ravnomerno tokom roka koji ste zadali i ispunjavajte ih redovno pa takvih problema nećete imati.
  • Strpljenje i ljubaznost prema klijentima – uvek budite ljubazni i korektni u komunikaciji sa klijentima. Desiće se da vas izbace iz takta, no ovim pristupom smanjujete mogućnost da izgubite klijenta zbog konflikta, što se može loše odraziti na vaš finansijski plan, ali i rezultovaće povratnom reakcijom u kojoj će vaši klijenti biti ljubazni i obraćaće vam se sa poštovanjem. Kada su odnosi takvi mnogo je lagodnije poslovati i sarađivati.
  • Zaštitite sebe – ukoliko sklapate dogovor sa nepoznatim klijentima (dakle, ne preko neke konekcije), uvek gledajte da obezbedite sebe i svoj rad, bilo da to podrazumeva avansnu uplatu, ili isplatu honorara na nedeljnom nivou, ili neki drugi vid dogovora. Imajte na umu da klijent ne zna ništa o vama lično, ali i da vi ne znate ništa o njemu, pa sa te strane budite obazrivi da bi ste izbegli slučaj gde ćete utrošiti vreme i trud radeći nešto za šta na kraju nećete dobiti novac.

Na kraju, napomenuo bih možda i samu suštinu freelancerskog posla – niko ne treba da gleda šta radite, kako radite, kad i gde radite. Jedino što je bitno je rezultat koji isporučite, budite profesionalni, odadite ga na najbolji mogući način i klijent će biti zadovoljan. A zadovoljan klijent može značiti i dugotrajniju saradnju ili preporuku, što dalje dovodi do konstantnijeg priliva posla čime bi se iskorenila možda i glavna negativna stavka freelancerskog tipa poslovanja. Ako se time vodite verujem da nećete imati problema.

Kako da postanem programer?

Kako da postanem programer

Iz razloga u koje nećemo sad ulaziti, ali koji su uglavnom svima jasni, sve više prijatelja i poznanika me u poslednje vreme pita jedno naočigled jednostavno pitanje – “Kako da postanem programer“?

Pre svega, neophodno je da razjasnimo neke stvari pre početka – programerski zanat je težak i komplikovan, često ni akademski školovani programeri nisu odmah u stanju da se uhvate nekog posla u nekoj od aktuelnih tehnologija bez dodatnog usavršavanja i doučavanja. Učenje programiranja je dug i mukotrpan proces, pogotovo ako do sada niste imali nikakvih dodirnih tačaka sa nekim oblikom programerskog koda. Iz tog razloga budite spremni da uložite izuzetan napor za savladavanje programerskog umeća. To znači da morate biti spremni da izdvojite i po nekoliko sati dnevno za učenje, da ćete često udarati u zid iz razloga koji vam neće biti jasni i da će to učenje iziskivati velike mentalne napore i koncentraciju. Ukoliko niste u mogućnosti to sebi da priuštite, zbog redovnog posla ili nekih drugih razloga, razmotrite mogućnost da svoje obaveze preorganizujete tako da vam to bude moguće. U suprutnom rizikujete da izgubite puno vremena, doživite velike frustracije jer vam nešto nije jasno i zbog njih izgorite u procesu i prestanete sa daljim radom. Onoga trenutka kada prestanete sa daljim radom gurnuli ste sebe dva stepenika unazad, i to dva stepenika koja ste savladali velikim naporom i posvećenošću.

S druge strane, ako se odlučite na ovaj korak i uspete da istrajete, što dalje odmaknete sve lakše će vam ići, i kad savladate neke osnove korišćenjem istih savladaćete i sledeće lekcije, sve dok se jednog trenutka ne osetite dovoljno sposobnim da se prihvatite nekog stvarnog posla. Tog trenutka vaše učenje zaista počinje 🙂 jer nove tehnologije, paradigme i metodike se pojavljuju svaki dan, i što ih više savladate bićete sposobniji i kvalifikovaniji programer. No, u tom trenutku ćete se programiranjem već baviti profesionalno tako da vam bilo kakvo doučavanje neće teško padati.

Druga stvar koju bih želeo da napomenem je, s obzirom na to da danas postoji veliki broj dostupnih tehnologija u svetu programiranja, da ne postoji tačan i jedinstven put kojim treba pristupiti učenju programiranja. Svaki programer će vam reći, na osnovu svog nekog iskustva i škole koju je prošao, da treba da se prvo prihvatite ovoga ili onoga iz tog i tog razloga, i svaki će delom biti u pravu. Na taj način ću pristupiti i ja – plan koji ću izneti dalje je po mom mišljenju najbolji za početnike u programiranju iz razloga koje ću dodatno objasniti. Ovo, naravno, ne znači da je to jedini način, ima drugih, možda će vam neki više odgovarati, biti lakši ili zanimljiviji, na vama je da izaberete jedan pravac i da ga se držite.

Programer

Web za početnike

Tehnologija koju vam ja preporučujem je PHP + HTML/CSS. Razlog je jednostavan – PHP je još uvek najrasprostranjenija web tehnologija danas, bilo da planirate da radite kao freelancer ili da se zaposlite u nekoj firmi, kao programer početnik, bez portofolioa, najlakše ćete naći posao u PHPu jer ga ima puno na tržištu. Druga bitna stvar je to što se pomenute tehnologije koriste najčešće za izradu web sajtova, a to su najmanji i najjednostavniji projekti od kojih bi početnici trebalo da krenu. Takođe, to su i projekti koje jedan programer može samostalno da odradi, tako da vam za to nije neophodna pomoć i tim ljudi. Naravno, postoje i mnogo složeniji i kompleksniji sajtovi koje pojedinac ne može sam da obuhvati, ali o tome nećemo ovom prilikom.

Korak prvi – HTML/CSS

HTML i CSS su tehnologije putem kojih se vrši vizuelni prikaz sadržaja na web sajtovima. Svaki sajt koji otvorite u svom browseru (kao i ovaj koji trenutno čitate) je iskodiran putem HTML i CSS direktiva.
HTML je skraćenica za Hypertext Markup Language, i u suštini to je koderska sintaksa putem koje se pozicioniraju i ispisuju elementi na web stranici.
CSS je skup pravila i direktiva kojim se dizajniraju elementi neke web stranice. Putem CSSa se formatiraju tekstovi, bira font i veličina teksta, postavljaju margine, boje elementi itd. HTML i CSS su vrlo usko povezani, praktično ne mogu jedno bez drugog, i iz tog razloga učenje i svi materijali i kursevi im pristupaju kao jednoj celini.

Korak drugi – PHP

Web programerSkoro svaka web stranica sadrži statički i dinamički sadržaj. Statički sadržaji su oni koji su uvek isti za sve posetioce sajta, na primer uvek isti logo se prikazuje u vrhu stranice, uvek isti tekst u futeru i slično. Dinamički sadržaj je ono što se menja od posetioca do posetioca. Primera radi, to može biti nešto vrlo prosto poput današnjeg datuma (gde će danas pisati jedan tekst, a sutra drugi), do onih kompleksnijih stranica poput korisničkog profila (ukoliko neki sajt ima opciju registracije i prijavljivanja), raznoraznih anketa, korisničkih korpi kod e-commerce sajtova itd.

Dinamičkim sadržajima na webu se upravlja putem PHPa (ili nekog drugog programskog jezika, opcije su zaista brojne). Možemo kao primer uzeti stranicu rezultata pretrage nekog sajta, pošto je ona uvek stranica sa dinamičkim sadržajem jer zavisi od toga koje ključne reči pretražujemo. Kako to najčešće ide, korisnik ukuca ključne reči i pritisne “Pretraži”, nakon čega PHP program prihvata te ključne reči, kroz svoju implementiranu logiku pretražuje bazu podataka i nakon toga sortira i formatira rezultate pretrage tako da se oni mogu lepo ispisati kroz HTML/CSS. Uopštenije govoreći, PHP služi za sve moguće vidove izračunavanja i postavljanja logike funkcionisanja sajta, upravljanja korisnicima i njihovim sesijama.
S druge strane, PHP je jedan sasvim prosečan programski jezik u kojem postoji 90% komandi i akcija koje postoje i u drugim programskim jezicima, te ako naučite logiku i principe programiranja u PHPu, to znanje moći ćete da iskoristite i u drugim jezicima.

Korak treći – Javascript

Što nas dovodi do JavaScripta. Odmah da razbijemo iluzije – JavaScript nema veze sa programskim jezikom Java, iako delimično dele ime. JavaScript je interni programski jezik svakog web browsera putem kojeg se mogu vršiti neke opreacije na stranici bez kontaktiranja servera. Primera radi, JavaScript se koristi za sve one fine vizuelne efekte na web stranicama, slideshow, pop-up prikaz fotografija, validaciju podataka pri registraciji, dropdown meni funkcije i slično. Naravno, on se može koristiti i za mnogo naprednije stvari, ali će svima za početak biti dovoljno jednostavno poznavanje JavaScripta za implementaciju nekih već gotovih rešenja, kojih ima puno. Danas postoji veliki broj gotovih JavaScript biblioteka, među najpoznatijim su jQuery i Prototype, putem kojih možete implementirati neko od rešenja dosta jednostavnim pozivima u JavaScript kodu. Vremenom ćete, kako sve više budete stasavali kao programer, pisati i neka sopstvena rešenja, a ono što je verovatno najbitnije – znanje koje ste stekli tokom učenja PHP-a će vam dosta koristiti i ovde jer su, kao što je već pomenuto, neke osnovne sintaksni i logički konstrukti isti za skore sve programske jezike.

Front end” i “back end” programer

ProgramerU web programiranju, onako dosta generalizovano posmatrano, programerski posao i zadatke možemo podeliti u dva dela – “front end” i “back end“.

Front end” developeri najčešće imaju jedan tipski posao, a to je kreiranje web stranica na osnovu izdizajniranih rešenja. Drugim rečima, web dizajner nacrta prototipove stranica, kako one treba da izgledaju i taj materijal dostavi front end developeru koji od toga kreira HTML/CSS kod, time praktično spremajući dizajn za web sajt.

Back end” developeri, s druge strane, su oni koji su fokusirani isključivo na PHP i one akcije i operacije koje se dešavaju “iza kulisa”, uglavnom rade sa gotovim izdizajniranim web stranicama koje samo pune podacima koji su rezultati njihovih programa.

Ovo je sve bitno znati jer vi već nakon savladavanja znanja iz HTML/CSSa i nekih osnova JavaScripta možete da prihvatite jedan “front end” posao, i da se kroz njega dalje usavršavate, ali i da počnete da stičete nagradu za uložen trud. Profesionalno iskustvo je izuzetno bitan deo procesa učenja i sazrevanja jednog programera, pa vam ovaj “međukorak” može dodatno koristiti – pored toga što ćete zaraditi nešto novca, steći ćete iskustvo rada sa klijentima, osetićete šta to znači i kako to izgleda kada vam neko šalje web development zahteve, i kako je raditi pod pritiskom i imperativom rezultata, koji umeju biti ponekad malo stresni, ali su izuzetno efikasni u vašem procesu učenja. Stvari koje tada postignete i naučite tom prilikom pamtićete jako dugo i primenjivaćete ih bez muke u budućim projektima.

Materijali

S obzirom na popularnost ovih tema materijala za učenje ima neograničeno puno. Mnogi su i besplatni, neki se plaćaju, neki su samo pisani, neki interaktivni, izbor vam je zaista širok i možete odabrati opciju koja vam najviše odgovara.

Moj savet vam je da uzmete po jednu knjigu za obe oblasti (HTML/CSS i osnove JavaScripta najčešće idu u komadu, PHP ide zasebno), i da radite po njima paralelno uz neke od interaktivnih kurseva na webu.
Pri izboru knjiga konsultujte Amazon i pročitajte iskustva kupaca, to će vam pomoći pri odabiru one prave, a sužavanje izbora možete uraditi u Google pretragama.

Interaktivnih kurseva takođe ima veliki broj, moj prvi predlog će uvek biti CodeSchool koji ima odvojene kurseve za HTML/CSS i JavaScript, a organizacija kursa im je jako zabavna i jednostavna. Tutsplus sajt je takođe opcija gde možete naći veliki broj besplatnih kurseva, a recimo Pluralsight je opcija koja se plaća ali sadrži ogroman broj oblasti koje nisu isključivo sužene na IT. Codecademy je još jedna od opcija koja takođe nudi besplatne kurseve.

O kursevima i školama programiranja

Kursevi i škole programiranja mogu da vam pomognu u celom ovom procesu, ali nisu neophodni, i pre svega, nisu dovoljni! I pored kurseva, časova i vežbi najveći deo napora morate vi sami uložiti u samostalan rad i vežbanje. Bez toga ne postoji kurs koji će vas spremiti za ono što želite.
Sa te strane, ja nisam pobornik takvih kurseva jer koštaju puno a većinu materijala imate dostupno online, neke čak i u vidu video tutorijala i vežbi, organizovanih u kurseve. No ako mislite da bi vam školski rad sa tutorom pomogao, pohađanje nekog kursa je dobar način da se učvrsti kontinuitet u vašem radu i učenju, a to je opet bitna stavka za konačan uspeh.

Ukoliko se ipak odlučite za pohađanje, birajte kurseve koji pokrivaju što veći broj oblasti i koji su dugotrajni. Po mojoj proceni, osobi koja nema programerskog predznanja će trebati oko godinu dana i mnogo sati rada da bi postala programer sposobna da odradi neki posao samostalno. Kursevi koji zbijaju gradivo u kratak rok ne pokrivaju dovoljno široko oblasti koje obuhvataju i iz njih ćete izaći sa nekim vrlo ograničenim znanjem, nedovoljnim za bilo kakav profesionalni rad.

Scrum

Scrum

Scrum je još jedna od metodologija agilnog razvoja softvera, koja se kao i ostale metodologije iz iste grupe odlikuje adaptibilnošću i lakim unošenjem projektnih promena u letu. Posebno je pogodna za dugotrajne i kontinuirane razvoje, gde je česti slučaj da se nakon godinu dana razvoja inicijalni zahtevi izmene usled promena na tržištu ili pojava novih tehnologija.

Princip Scrum-a se ogleda u sledećem – umesto dugotrajne izgradnje velikog sistema u kom će učestvovati veliki broj ljudi, organizacija posla će se razbiti na manje i kraće segmente sistema i manje timove. Svaki segment će biti kao mini-projekat za sebe, na njemu će raditi određen broj ljudi iz razvojnog tima i po završetku njihovog rada isporučiće završenu jedinicu koja će se uklopiti u celokupan sistem.


Scrum princip

Plan aktivnosti u Scrum-u se definiše putem sprintova. Sprint je jedan određeni period vremena (najčešće se meri brojem nedelja, i u zavisnosti od potreba projekta iznosi između 1 i 4 nedelje) tokom kojeg će razvojni tim odraditi jedan zahtev projekta i isporučiti ga naručiocu. Nakon svakog završetka ciklusa voditelj projekta planria aktivnosti za naredni sprint i na osnovu njih dodeljuje zadatke razvojnim timovima.

Tipična Scrum organizacija podrazumeva i određene uloge dodeljene pojedincima koji rade na projektu. Te uloge su sledeće:

vlasnik projekta je, kao i uvek, predstavnik naručilaca projekta. Njegov zadatak je da konstantno prenosi viziju željenog rezultata razvojnom timu, kao i da nadgleda i odobrava rezultate prikazane nakon svakog sprinta. U većim projektima/organizacijama njegove aktivnosti se dodatno proširuju, no krajnja suština je da je on spona između razvojnog tima i naručilaca projekta – on postavlja zahteve i njemu se isporučuju rezultati.

razvojni tim podrazumeva manje ili više grupa ljudi koji su u mogućnosti da funkcionišu kao samoorganizujuća celina. Obično u timu bude jedan predvodnik (team leader) i nekoliko članova drugih profila, od developera do dizajnera, inženjera, QA analitičara itd. Tokom svakog sprinta svaki tim je obavezan da uvidi na koji način će zadovoljiti zahteve projekta za taj sprint, organizuje aktivnosti i na kraju isporuči željeni rezultat.

Scrum master je osoba koja se ponaša kao posrednik između vlasnika projekta i razvojnog tima. On sagleda širu sliku i stanje celokupnog projekta, radi na otklanjanju potencijalnih problema koji bi onemogućili razvojni tim da isporuči zacrtani rezultat, time garantujući efikasnost i produktivnost razvojnog tima. On takođe i servira rezultate vlasniku projekta i savetuje ga o daljim planovima i aktivnostima koje mogu poboljšati rezultate razvoja ili konačnog proizvoda.

Gde se ogleda adaptibilnost Scrum-a?

Prvo i najosnovnije – novi plan se formira nakon svakog sprinta, što znači da je u tom trenutku moguće menjati stare planove, stavljati prioritet na određene segmente i forsirati ih zbog njihove važnosti. Ovo je takozvana Ahilova peta starih metodologija razvoja softvera (poput Waterfall modela) čijim se pridržavanjem nakon višegodišnjeg razvoja dobija kao rezultat zastareo proizvod, ili dolazi do prekoračenja roka i budžeta usled letećih promena unetih u zahteve u toku izrade sistema.

Scrum developmentPored toga, slično Kanbanu, Scrum omogućava fina podešavanja unutar same organizacije projekta. Na primer, dužina sprinta je nešto što se bira na početku ali i što se vremenom može menjati ako se proceni da će druga vrednost doneti bolje rezultate. Isto važi i za količinu posla dodeljenog za jedan sprint (u Scrum-u nazvano velocity). Takođe, Scrum razvojni tim je uvek multifunkcionalan, što znači da sadrži ljude različitog profila. Ko će pripadati kojem timu određuje menadžment na početku projekta, ali je i to nešto što se može menjati tokom projekta sa ciljem podizanja efikasnosti i produktivnosti.

Dodatno, Scrum kao obaveznu uvodi i jednu zanimljivu tehniku – dnevne standup sastanke tima. Ti sastanci se obično održavaju u isto vreme i na istom mestu, vrlo su kratki (do 15min) i nazivaju se standup zato što je zamisao da svi učesnici stoje (baš kako bi se stavio akcenat na što brži i efikasniji tok sastanka). Na tim nalaženjima obično svaki od članova tima ukratko obavesti ostale na čemu će raditi tog dana, kakav mu je plan i da li ima nekih problema u postizanju zacrtanog cilja. Ovo je vrlo pogodan način za praćenje toka razvoja i vrlo često se praktikuje, ne vezano za to da li se koristi Scrum metodologija ili neka druga.

Odakle potiče naziv Scrum?

Vervali ili ne, naziv Scrum potiče iz ragbija. Ko je nekada gledao taj sport biće mu jasnije, no u ragbiju postoji jedna faza igre u kojoj se svi igrači oba tima okupe na gomilu i zajedničkim snagama pokušavaju da osvoje bolju poziciju na terenu i loptu, i ta faza se upravo naziva scrum. Tvorcima Scrum metodologije se svideo ovaj pristup u kom postoji jedan tim ljudi različitih profila i sposobnosti koji zajedničkim snagama rade na ostvarivanju zacrtanog cilja, pa su stoga odlučili i da upotrebe naziv iz popularnog sporta.

Ukoliko želite da saznate više o Scrum metodologiji, preporučujemo vam e-knjigu “Kanban and Scrum” u kojoj možete naći više detalja o jednoj i drugoj metodologiji. Knjiga je besplatna i možete je preuzeti ovde.

Kanban

Kanban

Kanban je jedna od danas vrlo popularnih i često korišćenih metodologija agilnog razvoja softvera, a glavni fokus Kanbana se zasnva na fleksibilnosti i kontinuiranim promenama tokom razvoja. Kroz Kanban principe, koji nisu komplikovani, razvojni tim je u mogućnosti da lakše upravlja svojim resursima, prati trenutno aktivne zadatake i time jasnije sagleda trenutno stanje projekta i bolje planira buduće aktivnosti.

Suština Kanban metodologije je tabla (board) podeljena u šest vertikalnih sekcija (broj sekcija nije striktan i može se menjati u zavisnosti od dogovora). Svaka od sekcija predstavlja stanje jednog razvojnog zadatka (task), a ideja je da svaki task, kako bude napredovao ka svom završetku, prelazi iz jedne sekcije u drugu, i to sekvencijalnim putem, bez preskakanja.

Tipična Kanban tabla sadrži sledeće sekcije:

  • backlog – izvor taskova, kojim najčešće upravlja naručilac projekta. On generiše zadatke i smešta ih u ovu sekciju
  • readytaskovi koji su u potpunosti jasni razvojnom timu i spremni su za početak njihovog rešavanja
  • codingtaskovi koji se trenutno rešavaju
  • testingtaskovi čija se rešenja trenutno testiraju
  • approvaltaskovi koji su uspešno prošli proces testiranja i čekaju na odobrenje za puštanje u produkciju
  • donetaskovi koji su uspešno pušteni u rad. Ovo je izlazna sekcija i krajnje stanje svakog zadatka


Kanban tabla

Kako radi Kanban? Prosto, generisani taskovi se stavljaju u prvu sekciju, sortiraju se po želji znajući da će task sa vrha uvek prvi biti preuzet u narednu sekciju. Svaki od zadataka prolazi kroz sva stanja svojim tempom, s obzirom da su neki taskovi mali i mogu se brzo završiti, dok su neki drugi širi, obimniji i za njih je potrebno više vremena.

Ideja Kanbana je da se ograniči broj taskova koji se mogu naći u svakoj od kolona Kanban table (takozvani Work In Progress parametri – WIP). Multitasking je ubica efikasnog rada, zato što iziskuje konstantne napore i vreme utrošeno na promenu konteksta rada (praktično za skakanje sa zadatka na zadatka), i zbog toga se Kanban fokusira na ograničavanje maksimalnog broja zadataka na kojima se radi.

To prosto znači da ako imamo limit na nekoj sekciji i ako je on trenutno ispunjen – da nijedan task iz prethodne sekcije (iako je možda spreman za prelazak) ne može preći u tekuću dok se u njoj ne oslobodi mesta. Ovo može zvučati problematično i kao neka pojava koja će gušiti i usporavati rad na projektu, međutim u realnosti je sasvim druga priča – time se sprečava preopterećenje članova razvojnog tima, a i forsira se kontinuiran rad kroz projekat. Drugim rečima – ako su neki zadaci zaglavili i blokiraju resurse, treba učiniti dodatan napor oko njih i rešiti problem, a ne ostaviti ga da se razvija svojim preterano sporim tokom i nastaviti rad na drugom mestu.

Magija Kanbana

Upotrebom Kanbana razvojni tim može doći do vrlo bitnih statistčkih podataka i saznanja koja mogu iskoristiti kako bi unapredili efikasnost. Praćenjem nekih osnovnih parametara poput vremena potrebnog za svaki zadatak da prođe kroz sve sekcije (cycle time), zatim vremensko praćenje broja zadataka u svakoj od sekcija, razvojni tim može videti koji deo razvoja je najproblematičniji i šta usporava rad. Te informacije se zatim mogu upotrebiti u baždarenje – povećavanje ili smanjivanje limita (WIP parametara) za svaku od sekcija, čime će se razvojni proces manje ili više izmeniti, a kao glavni cilj baždarenje traži se minimizacija prosečnog vremena potrebnog za završetak jednog zadtka. Kroz ovu optimizaciju razvojni tim će biti u stanju i lakše da predvidi vreme neophodno za završetak nekog novog zadatka.


Kanban analitika

Još jedna koncepcijska razlika kod Kanbana, u odnosu na druge metodologije razvoja softvera, je to što nema striktno definisanih uloga i jasno definisanih rokova, već se uloge raspodeljuju dinamično, i po trenutnom stanju na tabli, dok se rokovi mogu, ali i ne moraju zacrtavati, s obzirom da se dobrim planiranjem i preciznom analizom statističkih podataka mogu predvideti vremenski trenuci završetka svakog zadatka.

Kako isprobati Kanban

Postoje razni task-management alati koji podržavaju Kanban metodologiju, a ukoliko sami želite da isprobate i dalje istražite Kanban principe mi vam preporučujemo Kanbanery, koji je besplatan za projekat sa samo jednim korisnikom. Takođe, preporučujemo vam i e-knjigu “Kanban and Scrum” u kojoj možete pročitati više detalja o jednoj i drugoj metodologiji, njihove međusobne sličnosti i razlike. Knjiga je takođe besplatna i možete je preuzeti ovde.

loading