Slazem se sa ovim... ima dosta starih programera koji znaju raditi samo ono sta su naucili kroz zadnjih 10 godina i kunu se u to da je Clipper i dan danas bog bogova ili npr ne zele cuti za .Net framework "jer je spor" a zapravo rade neki knjigovodstveni program koji ne da nema veze sa brzinom nego ono...
Kako se programira u Hrvatskoj?
- poruka: 232
- |
- čitano: 84.850
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
Slazem se sa ovim... ima dosta starih programera koji znaju raditi samo ono sta su naucili kroz zadnjih 10 godina i kunu se u to da je Clipper i dan danas bog bogova ili npr ne zele cuti za .Net framework "jer je spor" a zapravo rade neki knjigovodstveni program koji ne da nema veze sa brzinom nego ono...
Interesantno kako ovakvi threadovi uvijek odu u smjeru "a moj je veći od tvoga"
Evo ja sam napisao prvu web banking aplikaciju u RH, jel se to računa?
a) vanjski debugger (citaj gdb) koristim samo kad trebam naci SIGSEGV-like pogresku
b) ako je neka druga pogreska - printf je puno prakticniji
Ne znam kako debugger može rezultirati neurednijim kodom? Molio bih te neki konkretan primjer?
leads to various maladies:
- you crash when something goes wrong, and you fsck and it takes forever
and you get frustrated.
- people have given up on Linux kernel programming because it's too hard
and too time-consuming
- it takes longer to create new features.
And nobody has explained to me why these are _bad_ things.
...

http://www.sampioni.com/hr/Sampionski_manifest.htm
a nije loše i pogledati:
http://en.wikipedia.org/wiki/The_Office_%28UK_TV_series%29
Segregator poanta je u tome da ako tehnologija ide dalje, ako firma prati tehnologiju, onda ce ovaj koji pise u assembleru vjerovatno biti zamjenjen jer nece imati posla. Neznam u kakvoj ti firmi radis, di rade samo fikusi koji zive na staroj slavi (mozda radis u nekoj drzavnoj firmi) ali moderan kapitalizam ne priznaje ljude od kojih nema koristi, ako razumijes sto ti hocu reci.
Samo mala degresija na debugger (sorry da se opet vraćam na to). Ja sam dijete nove generacije, znači debugger je oduvijek bio dio moje programerske prošlosti a valjda bude i moje budućnosti. Ja programiram nekih 10 godina, zadnjih 7 profesionalno (znači da čak i nešto zaradim svojim radom), u mojem poduzeću rade ljudi koji programiraju već 20 godina i više, cijeli svoj život. I samo prema tome da li ta osoba koristi debugger moguće je razaznati "dobrog" od "savršenog" programera.
Možda je riječ "savršen" prejaka riječ, ali imam jednog radnog kolegu (koji je sad već na višoj poziciji, recimo "middle managment") kojeg još nisam vidio da koristi debugger, sve logira, nekad čak i toliko da mu je kod nemoguće čitati koliko ima printf-ova. Recimo da je on dobar programer. Isto tako imam kolegu kojeg nisu bacili u managment(već 30 godina programira), ali ima plaću skoro pa duplu od ovog koji je na višoj poziciji, ali je savršen programer. Još nisam vidio da nešto nije znao riješiti ili optimizirati. Njegov kod je milina čitati koliko je jednostavan, a opet rješava s njime napredne stvari. Čovjek radi u svemu od Assemblera do Jave i u svemu je jednako dobar (dobro istina je da dok svladaš programersku logiku, lagano se switchati među jezicima). Sad da se vratim na debugger. On ga koristi po potrebi. Ako ima dobar debugger pri ruci za neki alat (VS, Eclipse...) onda debuggira, ako nema, onda logira. I mislim da je to njegova najveća prednost, jer se čovjek zna prilagoditi tehnologiji i prednostima koje donosi, a ne da želi da se tehnologija prilagođava njemu i da uvijek radi na neki već od njega prihvaćeni način. Mislim da bi to trebali svi mi, jer tehnologije se mijenjaju praktički na dnevnoj bazi i mi se trebamo prilagođavati i učiti nove stvari, koristiti prednosti novih tehnologija, a ne da ostajemo u "špiljskom dobu programiranja" dok takve stvari (napredni debuggeri) nisu postojale.
My point exactly...

http://www.sampioni.com/hr/Sampionski_manifest.htm
a nije loše i pogledati:
dakle...složili smo se da je šampionizam dio naše stvarnosti...istina je da postoje firme koje su tako da kažem...svjetlo na kraju tunela...ali to ne mijenja stvarnost...kakvi poslodavci...takav je i sistem...takav će i ostati...sve do promjene trenutne garniture političara...vlast, oborba...isti klinac...a riba smrdi od glave...
šampiona će biti uvijek...kao i "štefica" koje će čupati živce...treba sačuvati bistru glavu...ne pasti u letargiju...ignorirati uvlačenje (koliko god možeš naravno)...i učiti...sve se to jednog dana naplati...bitno je da se ne izgubi zadovoljstvo...dobro obavljenog i završenog posla...a tehnologija u kojoj se radi...who cares...samo mijena stalna jest
Ja radim par godina ko programer, prije kao asp/php sada iskljucivo .net. Znaci ima:
- x64 podrska out of the box. Meni je svejedno vise-manje
- multithreading koristimo uglavnom za asinkrone procese, ne radi vece brzine nego zbog blokiranja klijentskih threadova. Brzina je obicno problem kod baza i ludih sql upita
Iskustva:
- zastupljeni jezici: .net, java, oracle, php, nesto manje c/c++
- primat managed programskih jezika. Postali su brzi kao native
- place: od 3/4k kn do cca 15k kn (aki si stvarno senior guru)
- vrijeme potrebno za pronalazak posla (za junior programere): mjesec-tri. Za senior: 1 dan :)
- svi sve vise traze poznavanje izrade Web aplikacija. Vecina domacih poslovnih aplikacija ima ili ce imati web sucelje. Znaci, Flex, Flash, Silverlight, AJAX pozeljno
- svi danas moraju znati raditi sa jednom od baza; oracle, mssql, mysql
- dobro je uciti stalno nove, drugacije tehnologije. Npr ako radis u c#/java/php, dobro je nauciti neki funkcijski/dinamicki programski jezik, poput rubya. Daje dobro iskustvao i prosiruje vidike i znanje onog jezika/alata u kojemu svakodnevno radis
Uglavnom, bez obzira sto znas raditi, ako si strucan i specijaliziran u odredzenom podrucju, siguran sam da nece biti problema sa profesionalnom karijerom. Jedina zapreka koju sam primjetio je tesko prihvacanje kontinuuiranog ucenja kod odredzenog broja programera. Od nas 15-tak developera u firmi, jedino smo mozda nas dvojica (u biti ja sam) koliko-toliko u koraku s izdavanjem novih alata, i upotrebom istih u produkciji.
Jel treba netko gurua za Powerbuilder, Sybase SQL Anywhere, Enterprise Application Server...?
Jel treba netko gurua za Powerbuilder, Sybase SQL Anywhere, Enterprise Application Server...?
Opa...
Malo sam preletio preko teme i izgleda dosta dobro. Kad se u jednoj temi spominje HDZ, dasm, državne firme, debugging i cobol... mislio sam da sam na indexu!
Uglavnom. Radim u jednoj užasno maloj firmi. Iz nje sam došao iz nešto veće firme - to valjda sugerira da ću u slijedećoj firmi biti posve sam? Nego, ima nas vrlo malo i radimo software za jednu banku. Radimo u C# (vs 2008), koristimo devexpress kontrole, csla framework i sql kao bazu. U nekom od postova je naxeem spomenuo neki projekt koji košta par milijuna kao "velik". Mislim da to u sferi informatike i nisu neki novci. Nas par smo sklopili ovaj projekt za cca 5-6 mjeseci a isto je milijunska cifra u pitanju. U prošloj firmi sam radio za jednog domaćeg internet providera - sve živo što su radili - radili su kroz naš sustav napisan u (pazi sad ovo) - VB.NET!!! Da... I sve je radilo! Ljudi su dobijali račune, modemi su se aktivirali kad su trebali, djelatnicima su se obračunavale plaće... a iza svega je bio grozan i neugledan VB kod. Od kad radim u C# dosta toga se u mom radu promjenilo ali i dalje ne smatram VB inferiornim jezikom u nekim sferama. Zato se pomalo naježim kad ljudi sasvim nepotrebo pljuju po njemu. Naravno da ima idiotsku sintaksu, ali može se u njemu napraviti dobroga posla (pa makar i u tim knjigovodstvenim aplikacijama o kojima se tako posprdno priča...).
Da, malo sam uletio u digresiju pa ću se vratiti na temu. Nije danas potrebno biti neki uber c++ programer koji poznaje 500 različitih tehnologija da bi se dobro živjelo od programiranja. Baš naprotiv! Savladaj ono što ti treba za projekt i ajmo dalje!
A one gluposti oko korištenja/nekorištenja debuggera... Mislim, i dalje ne vjerujem da sam pročitao kako neki ljudi ne koriste debugger. Slušao sam prije par dana vrlo dobro predavanje na tu temu na windays-ima. Čak je netko i napisao da korištenje debuggera stvara neuredan kod... HELLOOOOO????
Siemens je u Hrvatskoj počeo sa otpuštanjem radnika (po informacijama koje sam dobio od relativno pouzdanog izvora). To su uglavnom C/C++/JAVA programeri. I uglavnom su svi u gabuli jer je teško zaposliti se ako ne znaš napisati faking SELECT query na sql-u, a većina njih ne zna. Većina njih voli drviti o kernelu, pointerima i šta-ja-znam-čemu i zbog toga se smatraju odličnim programerima a za sql su ČULI nekada od nekoga.
Tu se vraćam na ono što sam već napisao - ne moraš znati sve bitno da bi bio dobar programer. Ja sam nekada prije u dasm-u crackirao programe (natjerao ih da prime krivi serijski broj za aktivaciju), ali nisam nikada programirao u c++-u, ne znam štošta toga što neki drugi programeri znaju... Ali znam ono što moram znati da bih odradio svoj posao. Znam riješiti probleme koje pred mene postavi direktor i/ili klijent. Znam komunicirati sa klijentima, izvući "ono bitno" od njih da im napravim kvalitetnu aplikaciju. Znam si posložiti bazu i objekte (sa child kolekcijama koje imaju child kolecije...). Ima puno sitnih stvari koje treba znati dobar programer a te sitne stvari se mijenjaju od slučaja do slučaja. Meni trenutno ništa ne bi značilo da znam neku dobru caku u c++ jeziku. Isto tako nekom c++ programeru možda ništa ne bi značili triggeri, stored procedure, funkcije i view-ovi na sql-u. Meni znače sve.
Sad sam već razvukao na sve strane pa ni sam više ne znam jesam li pogodio ono što sam htio reći. Poanta je valjda da svi koji zarađuju od programiranja JESU programeri. Hamilton je vozač isto kao i neki stari kamiondžija koji vozi šleper već 30 godina - obojica zarađuju od vožnje, ne? Samo se razlikuje ono što njih dvojica znaju i za što imaju osjećaja. Prije cca mjesec dana je jedan vrlo iskusni programer (koji je microsoft-ov MVP) bio iznenađen generičkim načinom na koji sam ja riješio undo/redo sa neograničenim brojem nivoa u svim user kontrolama koje koristi naša aplikacija (a ima ih oko 400). To mi je zapravo dalo do znanja da je dovoljno biti dobar u onome što radiš - ne treba ti dodatno perje!
CSLA.net, expert bussines objects kazes? Bas zanimljivo, jako bi volio da malo napises o tom frameworku, mozda opis primjene u praksi i slicno. Mogli bi cak otvoriti novi thread za to.
Danas se skoro svatko moze nazvati programerom, s cime ja u biti nemam nista protiv! Ali cinjenica je da ima dobrih, osrednjih i ispodprosjecnih i na firmi da bira prilikom zaposljenja. Kako nase firme, barem prema onome sto sam primjetio, nemaju nekakav razvijen sustav code reviewa i propisanih standarda, producirani kod zna jako varirati u kvaliteti. Cak je i primjetan utjecaj samog alata, programskog jezika: npr. Java programer ce se brzo susreti sa pojmovima tipa agilno programiranje, AOP, TDD, DDD, ORM i slicno, a pitas nekog iskusnog .NETasa, nece uopce znati sto znace ove kratice. Vjerojatno je i PHP stack u ovome isto svojstvem, kao i Ruby, Python i ostali.
Koliko je stvar individualna ili vezana za alat/tehnologiju u kojoj se radi, neznam, ali primjetim da ti neki alati jako namecu spoju apstrakciju i udaljavaju od srzi problema (primjer iz .net: asp.net ajax, datasetovi, webforms,...), sto IMHO na kraju ima kontraproduktivni efekt (cisto moje iskustvo, ne namecem ovo misljenje nikome!)
Ali siguran sam da i veliki utjecan u ovome ima i hrvatsko školstvo koje te ne nauci bas nicemu korisnim za ovaj posao.
Na kraju smatram da bez obzira u kojoj tehnologiji radio, ako vec radis to, zivis od toga, e onda bogami moras se malo i interesirati o stvarima koje se zbivaju, prosiriti znanje, i biti svjestan da iz dana u dan izlaze nove stvari i ako zelis i sutra raditi isti posao moras se znati i moci prilagoditi. Najgore je probuditi se ujutro i mrziti cijeli svijet jer moras ici raditi posao koji ne volis. Jedna od osnovnih karakteristika programera bi trebala biti zelja za ucenjem. To za sobom donosi i spremnost na promjene stavova, nacina i misljenja.
Bojim se da 70-80% developera ne bi prepoznalo opisane karakteristike u sebi :(
Jezik određuje način programiranja; zato i jest nastao mit o "(groznim) VB programerima".
Imam baš ovih dana i jedan "problem" vezan uz to. Kolegu učim .NET-u i prilično truda moram uložiti da mu objasnim zašto je važno da web ne "gradi" koristeći dijalogiće, datasourceiće, login paketiće i sl. nego da ga piše liniju po liniju ADO.NET-a prateći što se dešava.
On čita tutoriale i tech demoe uz forumaše koji ga uvjeravaju da je dovoljno gurnuti grid view na formu i povezati ga bindovima na datasource.
To što veze neće imati što se događa i zašto i što neće znati napisati niti vlastiti diplomski, a kamoli ga objasniti, to je sasvim druga priča.
Programer mora znati kako i zašto nešto radi da bi sebi mogao dopustiti luksuz korištenja "crnih kutija". U suprotnome se ne stvara programer-inženjer, nego vikend-programer kakve smo nekoć zvali i još zovemo i "VB programeri-šampioni".
Neki dan me jedan naš "lead web dev" pitao u čudu dali se kako može preko javascripta promjeniti sadržaj DIV elementa (innerHTML funkcija inače). Ja sam ostao zaprepašten, pošto tip već 7-8 godina radi web stranice, i razvio je sva čudesa od kada je u firmi. Koristi samo gridview i rucno pisanje sqla koje puni u "stare" framework 1.1 datasetove. Nedavno je prešao na .net 2, ali ne koristi niti jedan novi feature koji je izašao u dvojci, niti ga me se čini zanima.
Teško je sada reći dali je on dobar ili nije, ako se mene pita nije, ali tip je produktivan, završava projekte u roku i kvalitetno, i direktor je zadovoljan. Usput, ima neki čudan način rada gdje ne koristi standardni debuging u VS nego programira direktno na web serveru i onda gleda kojekakve logove. Užas.
Dali je on pravi inženjer ili vikend programer? Ja neznam.
Ali činjenica stoji da velike i poznate kompanije poput Applea i Microsofta su tu gdje jesu danas upravo zbog činjenice što tamo rade izrazito pametni ljudi, najbolji inženjeri su svojoj struci (bez obzira na kvalitetu pojedinih OS-ova :). Zato bi ja čak prešao preko činjenice da je ovaj tip u moj firmi produktivan i natjerao ga da se uhvati malo učenja, jer onako grozan kod kad-tad mora puknuti. Ali ja nisam šef, i srećom ne moram raditi s njime...
Kada te "lead web dev" pita takvo pitanje, vrijeme je da se zapitaš o svojoj poziciji i plaći i onda o njegovoj.
Međutim, iako je ručno pisanje SQL-a po mom mišljenju sasvim OK, korištenje GridViewa odavno je dokazano glupo. Web koji na sebi ima GV ne može biti dobar ako sadrži ozbiljne podatke; na takvom se webu generira toliko smeća da je to strašno.
Ne-korištenje debuggera sam već opisao kretenskom odlukom, a logovi na IIS-u, iako dobri, nikako ne mogu zamijenti debugger jer jednostavno nemaju informacija korisnih za taj stadij razvoja.
Može li se on nazvati inženjerom? Valjda može jer je barem pitao ono što ne zna, a to mnogine rade, nego kažu "to je nemoguće" (jer oni ne znaju).
Mišljenja sam da programer mora brinuti o svom kodu.
Radio sam nedavno na jednom komadu softwarea i zbog "agilnih metoda" i praktički nikakvog dogovora o coding standardu, uz kratke rokove i bez ikakve dokumentacije i kontakta s naručiteljima, bio sam prisiljen pisati smeće od koda i to me toliko iritiralo da sam valjda podsvjesno bježao od rada na tome i kasnio s tim.
Dodaj k tome i nevjerojatnu sklonost poslodavca cjepidlačenju oko pozicije form elemenata u pixel, dok ih s druge strane uopće ne interesira kakav je kod i sami pišu ružne konstrukcije, ja sam, naviknut na neku "razinu" i detaljnu dokumentaciju uz direktnu komunikaciju s klijentom, puknuo. Valjda ne mogu raditi kada ne znam krajnji cilj i nemam feedback.
Na kraju projekt nisam završio, zahvalio sam se na suradnji i rekao da ne trebam nikakav novac za do sada obavljeni dio posla i preuzeo krivnju za kašnjenje projekta bez obzira bio ja kriv ili ne, ali tek toliko da ne moram ništa imati s tim.
Što se tiče "nekih OS-ova", mislim da su ti OS-ovi odlični s obzirom što sve trpe i na čemu sve rade.
Što se kolege tiče, ako već radi kao "lead web..." onda je valjda sasvim očekivano da zna osnove web tehnologija. Sva sreća da s pitanjem nije došao šefu, jer u današnje vrijeme nekako imam osjećaj da je rizično priuštiti sebi tako nešto.
Zamisli da te kirurg koji vodi operaciju operira i u jednom trenutku upita mlađeg kolegu-asistenta - "A što je ovo?" - pokazujući na bubreg...
Covjeku koji je pro programer je apsolutno jasno da napisati program moze svatko, u bilo kojem jeziku.
Problem je sto ako prodajete software kao ozbiljna firma ili pojedinac, ocekuje se da iza tog softwarea stojite u vezi odrzavanja: korisnicka podrska, dodavanja novih mogucnosti i opcija, patchanje bugova, ovisno o tome vec kako klijent zahtijeva. Moj zadnji HR posao je bio u jednoj od najjacih HR firmi koja razvija software za hotelska poduzeca, razvijao sam sa kolegom POS aplikaciju, i moram priznati da je posao pravo krenuo tek onda kad smo aplikaciju launchali. Trebalo je dodati podrsku za ogromnu paletu raznih uredjaja, i aplikacija se pocela koristiti cak i u trgovini (cisto za razjasnjenje, racunanje poreza u trgovini i restoranu je razlicito ko nebo i zemlja), wellnesu, a normalno dodali smo support i za handheld uredjaje (palm PCi, Orderman, etc)...
Tek tada se vidi zbog cega praksa "Ma napravi da radi, pa cemo kasnije to refactorirati" ne funkcionira, jer to "kasnije" ne dodje nikad, ili dodje kada se na tom dijelu koda treba raditi. A obicno se to onda tako intertwina i entanglea sa ostatakom da cijela aplikacija postane primjer fragilnosti: promjenis nesto na jednom dijelu sistema, a odjednom drugi pocne stekati. Katastrofa.
Uglavnom, takva iskustva su dovela do toga da me moji kolege danas zovu 'code nazi'. Valjda je naziv dovoljno samo-deskriptivan.
Nakon gore recenoga, u vezi debuggera konkretno za tebe komentar, naxeem:
otkako sam se 'skinuo' s C++ i presao profesionalno na Javu (otprilike pred jedno 7-8 godina), koristim debugger samo u slucajevima kad mi jos uvijek nije jasno kako radi neki opensource library s kojim se moram koristiti, jer je autor u dizajnu svojeg librarya odlucio da pojesti exception, vratiti null ili skrsiti aplikaciju u slucaju loseg unosa - nije tako lose.
U globalu, kad koristim librarye koje vec poznajem, ili kad pisem komponentu ground-up, debugger mi uistinu nije potreban; kod se sam stiti od zlouporabe. Vidi http://en.wikipedia.org/wiki/Design_by_contract, deda Meyer ima jos zanimljivih ideja, ali definitivno DBC je nacin za kodirati a ne koristiti debugger, i u mojem iskustvu pokazao se u zadnjih 7 godina kao princip vrijedan poput design patterna.
@Sampioni, five stars ;-) Vec pred par godina, procitao, naucio napamet, i sirim mantru okolo :-)
Edit:
jos nesto sam zaboravio. Agilne metode rade i funkcioniraju savrseno, ako se koriste pravilno. Kad sam pisao driver za uredjaj koji radi preko serial porta, jedno sto me spasilo od debugiranja byte streamova jesu Unit testovi. Ne mogu se ni sam sjetiti koliko puta bi mozgao nad nekom gluposti po pola sata, i onda zvao kolegu da mi bude par i pomogne, i nakon 10 minuta izmozgali bi rijesenje nabadajuci po tipkovnici oboje. To je sto se tice dijela developmenta.
Sto se tice managementa i rokova, planning poker, dvotjedne iteracije i team velocity je sistem managementa tima u kojem mozes sa puno vecom sigurnoscu odrediti koliko brzo se kreces naprijed, kada bis mogao biti gotov i ono najbitnije: u startu ti daje opciju da odrezes neke featureove ako ih ne mozes izvuci do krajnjeg roka, i to se statisticki vidi vec nakon 3-5 mjeseci rada. U krajnju ruku, vec bi mi bilo dovoljno samo to sto napokon dolazi odgovornost na mene kao developera da odlucim koliko ce mi vremena trebati za neki task. Puna mi je kapa imati project managera koji misli da je GNU namaz za na kruh, ali koji je siguran da ja mogu nesto zavrsiti u tjedan dana.
To kasnije ćemo sredit' je ono čega se ja užasavam. Pisanje lošeg i "napiši da radi/kako ti je lakše" koda je jezivo loš potez i kada mi netko tako kaže ja se sav pogubim.
Što se debuggera tiče, ja ne znam kako bih bez njega radio na nečemu velikom. Evo ti jedan primjer iz razvoja jedne .NET web aplikacije, vrlo jednostavne, ali razvijane pod plaštom "agile razvoja" i bez dokumentacije, uputa, komunikacije s klijentom i jednom jedinom direktivom šefa: "napravi kako ti je lakše".
Razvija se web aplikacija koja koristi TreeView kontrolu i XmlDataSource. Inače nemam običaj koristiti taj tip podatka jer sam pristalica konkretnih struktura podataka, a ne "kontrola" pa su moji programi kolekcije u jeziku koje serijaliziram po potrebi.
Uglavnom, upotrijebim ja taj vražji source i kontrolu i pri "štelanju" kontrole i njenog osvježavanja nailazim na problem. Kontrola se ne updejta.
Proveo sam sat vremena tražeći problem zašto se stablasta kontrola ne želi osvježiti, a bez debuggera nema teorije da bih prodro u 3-4. razinu dubine kontrole i seta podataka. Na kraju ni s debuggerom nisam našao problem jer je glupa kontrola, za razliku od svih ostalih kontrola tog tipa, imala po defaultu uključen cache podataka koji se jednostavno ne osvježava.
Debugger je bio nužan jer je u stablastoj strukturi problem tek na 4. dubini, što je nemoguće pronaći ručno. Tu sam uvidio i problem MS-a i njihove glupave prakse da im ugrađene kontrole nisu konzistentne, već se različito ponašaju po defaultu.
Debugger ti treba i kada imaš problem s castanjima, kada imaš kompleksne strukture i prijenose podataka između više slojeva.
Od agilnih metoda dize mi se kosa na glavi. Kad god dodje do toga lako cemo ili poslije cemo, na kraju to ispadne veca komplikacija nego da se sve u startu uzimalo u obzir, da je sve definirano u startu. Na kraju se vise rok produzi na taj nacin nego da je sve radjeno kako treba.
Uh.
Agilno != bez dokumentacije, uputa.
Agilno != napravi kako god
Agilno !!!!!!!!!!!!!!!!!============ komunikacije s klijentom.
Agilno == konstantna komunikacija
Agilno == konstatno refactoriranje i redizajniranje bottleneckova koda
Agilno == konstantno automatsko testiranje
Shef je bas sampion :-D
U agilnom planiranju i razvoju _sve_ se vrti oko poboljsavanja komunikacije: izmedju developera, developera i managementa, managementa i klijenta i na kraju svih skupa zajedno. Iako je agilno planiranje samo jedan od dijelova Xtreme Programminga, moram priznati da je cijela praksa ustolicena da bi se izbjeglo ovo http://www.dlevel.com/blogs/alex/images/software_development.jpg i po mojem iskustvu, zaista u tome i uspijeva. Naravno, sve se moze zlouporabiti i onda dovodi do katastrofalne degradacije; nema niceg osjetljivijeg nego kad ljudi mijenjaju ustoliceno razmisljanje na nesto novo, ali nakon pocetnog 2-3 mjesecnog roka zbunjenosti, tako sam se naviknuo na ovaj nacin rada da bi tesko se vratio natrag. Cijeli problem inzenjeringa softwarea je sto, za razliku od gradnje mostova, software je ekstremno jednostavan za mijenjati. Kad jednom zeznes u gradnji mosta, cijeli projekt je otisao kvragu. Kod pisanja software, milijun puta zeznes i opet ides dalje.
Zbog toga je agilno planiranje savrseno, jer je nemoguce predvidjeti kako ce projekt teci i kad ce biti gotov. Sa agilnim planiranjem, ne moras. Ako ga pravilno koristis, naravno.
Jos jedna bitna stvar, u vezi toga 'napravi kako god'.
Ljudi cesto brkaju "napravi kako god" sa "napravi da radi samo to sto treba". Najbolje komponente su one koje rade samo ono za sto su predvidjene, i nisu svicarski noz. Agilan razvoj se oslanja na to da je kod uvijek vrhunske kvalitete i zbog toga vrlo jednostavan za mijenjaje, i zbog toga ne nalaze da se komponenta napravi cim korisnijom. Nalaze da komponenta mora obavljati tocno onaj minimum koji joj je potreban. To rezultira s manje posla == manje koda za odrzavati i cistiti == manje dependencya == manje bugova.
Ovo sto si mi opisao, mogu te samo samilosno zaliti :-)
Ako jos uvijek nisi promjenio firmu (shefa?), evo, da te naucim jednu odlicnu tehniku koju sam ja naucio od kolege i koja mi je pomogla:
dok ti shef ili tko vec nesto prica sto 100% znas bolju soluciju, samo zatvori oci i pomalo odmahuj glavom lijevo-desno i cmokci usnicama "c-c-c", tu i tamo dodaj "ne-ne-ne" i kad shef zavrsi, reci "Necemo to tako." Cijelo vrijeme drzi prekrizene ruke na prsima.
I napravi po svome.
Dobit ces ugled arogancije, sto je zanemariv drawback, ali ako to radis samo onda kad si 100% siguran da znas bolje, ljudi ce te pustit na miru da radis jer ce znati da ti mogu vjerovati. Dodatni bonus (ili drawback, ovisi kako gledas), kolege ce trazit tvoj savjet prije nego idu prckati po codebaseu.
I za kraj, naravno da se slazem za debugiranje kontrole.
Kao sto sam napisao i u svom postu, kad radim s libraryem koji ne poznajem, debugger je neophodan alat.
Nekako iz iskustva mi se cini da je agilni jedini pravi nacin rada, naravno ako se provodi kako treba. "Napravi da radi" je mozda u grubo agilna metoda, ali 1) iskusni dev nece napraviti los kod, 2) refactoring je jedna od bitnih agilnih metoda, znaci ono "napravi da radi" se na kraju refactorira i producira kvalitetan kod.
Odlican set video tutoriala o agilnom razvoju:
(malo pili previse na pocetku, ali lijepo objasni, onako americki, for dummies)
Takodjer, nekoliko blog postova zasto pisati funkcionalnu i tehnicku specifikaciju:
http://www.joelonsoftware.com/articles/fog0000000036.html
a sto se tice SQLa, svakako da dev mora znati pisati SQL, napraviti store procedure, funkcije, triggere i sl., ali mora i znati sto je to ORM alat i barem imati neka minimalna iskustva sa jednim. Pa cak je i MS izdao ORM sa frameworkom 3.5, TOLIKO je to vazno danas....
Nazalost, moja placa je osjetno manja od ovog "dev leada", jer je on u firmi vec sto godina i radi na "vaznim" projektima. Stvar je da se samo on zna snaci u svome kodu, pa mu se svi drugi boje prigovoriti. Ima tu gomile web servisa koji nepotrebno pozivaju jedni druge, gomile "magic stringova" (naprimjer: ako neka metoda ili web servis vrati "1" onda je sve uredu, ako vrati "2" znaci da nesto nije u redu sa XY sproc., ako vrati "6876" onda....). Šampion na djelu :)
Nazalost, moja placa je osjetno manja od ovog "dev leada", jer je on u firmi vec sto godina i radi na "vaznim" projektima. Stvar je da se samo on zna snaci u svome kodu, pa mu se svi drugi boje prigovoriti. Ima tu gomile web servisa koji nepotrebno pozivaju jedni druge, gomile "magic stringova" (naprimjer: ako neka metoda ili web servis vrati "1" onda je sve uredu, ako vrati "2" znaci da nesto nije u redu sa XY sproc., ako vrati "6876" onda....). Šampion na djelu :)
Uh.
...
Jos jedna bitna stvar, u vezi toga 'napravi kako god'.
...
Ovo sto si mi opisao, mogu te samo samilosno zaliti :-)
Ako jos uvijek nisi promjenio firmu (shefa?), evo, da te naucim jednu odlicnu tehniku koju sam ja naucio od kolege i koja mi je pomogla:
dok ti shef ili tko vec nesto prica sto 100% znas bolju soluciju, samo zatvori oci i pomalo odmahuj glavom lijevo-desno i cmokci usnicama "c-c-c", tu i tamo dodaj "ne-ne-ne" i kad shef zavrsi, reci "Necemo to tako." Cijelo vrijeme drzi prekrizene ruke na prsima.
I napravi po svome.
Dobit ces ugled arogancije, sto je zanemariv drawback, ali ako to radis samo onda kad si 100% siguran da znas bolje, ljudi ce te pustit na miru da radis jer ce znati da ti mogu vjerovati. Dodatni bonus (ili drawback, ovisi kako gledas), kolege ce trazit tvoj savjet prije nego idu prckati po codebaseu.
I za kraj, naravno da se slazem za debugiranje kontrole.
Kao sto sam napisao i u svom postu, kad radim s libraryem koji ne poznajem, debugger je neophodan alat.
Nekako iz iskustva mi se cini da je agilni jedini pravi nacin rada, naravno ako se provodi kako treba. "Napravi da radi" je mozda u grubo agilna metoda, ali 1) iskusni dev nece napraviti los kod, 2) refactoring je jedna od bitnih agilnih metoda, znaci ono "napravi da radi" se na kraju refactorira i producira kvalitetan kod.
Odlican set video tutoriala o agilnom razvoju:
(malo pili previse na pocetku, ali lijepo objasni, onako americki, for dummies)
Takodjer, nekoliko blog postova zasto pisati funkcionalnu i tehnicku specifikaciju:
http://www.joelonsoftware.com/articles/fog0000000036.html
a sto se tice SQLa, svakako da dev mora znati pisati SQL, napraviti store procedure, funkcije, triggere i sl., ali mora i znati sto je to ORM alat i barem imati neka minimalna iskustva sa jednim. Pa cak je i MS izdao ORM sa frameworkom 3.5, TOLIKO je to vazno danas....
Nazalost, moja placa je osjetno manja od ovog "dev leada", jer je on u firmi vec sto godina i radi na "vaznim" projektima. Stvar je da se samo on zna snaci u svome kodu, pa mu se svi drugi boje prigovoriti. Ima tu gomile web servisa koji nepotrebno pozivaju jedni druge, gomile "magic stringova" (naprimjer: ako neka metoda ili web servis vrati "1" onda je sve uredu, ako vrati "2" znaci da nesto nije u redu sa XY sproc., ako vrati "6876" onda....). Šampion na djelu :)
Ja od kad znam za sebe pokušam raditi agilno. Uvijek si napravim neki određeni framework (ako ga već nemam) koji radi već neke određene stvari koje znam da mi trebaju za svaki projekt (pozivanje forma i njihova translacija, pozivanje kontrola i njihova translacija, provjera ovog unosa, onog, socket komunikacija, bla bla ). Sve je to sadržano u nekoliko dll datoteka tako da svako nadograđivanje programa mi je praktički sitnica. Ne igram se više sa funkcionalnosti (ako naravno nema poboljšanja ili nekih novih mogućnosti u tom pogledu), a igram se većinom s dizajnom (jer to je ipak informatički "nepismenima" najbitnija stvar). Sve mi radi stari framework, tako da je dogradnja aplikacije dosta lagana. Istina da onda ponekad i vućem "veliki" framework za neki manji projektić kojem ne treba sve to, ali tako sam siguran da mogu sve pokriti (ako dođe neki novi zahtjev) ili unaprijediti postojeće.
Sad ovo što je govorio naxeem, takvi su svi moji "kućni" (sastrane uz posao) projekti. Uvijek radim sa nekim polupismenim informatičarom iz neke poluinformatičke tvrtke koja treba neki informatički proizvod. Za dokumentaciju nisu nikad čuli, za definiranje potreba još manje. Odem do njih, pitam ih ko malu dijecu o svemu i svaćemu, ali naravno niti oni sami neznaju što bi taj proizvod morao raditi. Nakon toga im crtam neke dijagrame (workflow, dataflow itd), jer smatram da bi informatičar to morao znati "pročitati". Naravno oni se sa svime slažu, ja to tako napravim i onda daljnjih 3 mjeseca ili duže ispravljam sve što sam napravio, jer na kraju nije to ono "što su htjeli". Najveći problem su im naravno izgledi forme i reportova koji se printaju, a ovo ostalo ih ništa ne dira. Kad je već sve gotovo (recimo, jer kad se jednom obvezuješ održavati takvu aplikaciju, bar jednom mjesečno nešto treba "dograditi", popraviti itd), onda me zovu u 12h u noći da im sve radi sporo. Ja odem da pogledam i vidim da si je tip na database server stavio dekodiranje dvd-a (naravno za piratsku kolekciju), i naravno da ubija bazu, koja mora filati par tisuća row-ova podataka prema distribuiranim aplikacijama. Ja to napomenem, a on se čudi "ko picek glisti", jer je on mislio da je to "slobodno" računalo, a to je onaj isti tip kojem su svi dijagrami bili jasni (na kojima je bilo lijepo napisano što je koje računalo). Na takve ljude se treba priviknuti jer je takva situacija u HR svugdje. Istina da radim u poduzeću u kojem je sve dosta dobro dokumentirano i gdje treba puno dokumentacije za sve (nekad i previše), tako da se bar tu malo odmorim od takvih "informatičara"
Ja također radim agilno, kao što sam rekao, ali sam samo ilustrirao kroz kakvo sam iskustvo upoznao taj pojam jer do tada nisam znao da zapravo radim "agilni razvoj". Iskustvo je bilo u najmanju ruku čudno jer nisam imao kontakt s klijentom, radio sam nešto što je u svojoj glavi Šef zamislio slično kao i Stipica i bio izgubljen u njihovim glavicama i dezorijentiran u potpunosti.
To ti je isto kao i prvi seks: ako prođe dobro, sjećaš ga se u dobrom svjetlu, ako ne prođe dobro, dobiješ averziju prema seksu iako je realno seks sam po sebi super.
@dado
Moja zena radi u Zavodu za zaposljavanje. Situacija u HR je takva zbog toga sto ljudi koji znaju upaliti racunalo i znaju pokrenuti Word i pisati u njemu, sebe zovu programerima. Na zavodu se savjetnici cesto mijenjaju medju raznim strukama, tako da mi je i zena dosla na mjesto gdje je drzala informaticare. Kaze da bi joj dosao Covjek, ona ga pita sta je po struci, On opali "programer". Ona ga pita (zena developera, pa ima profesionalnu deformaciju hehehe) u kojem programskom jeziku radi, koje tehnologije poznaje, da li radi Web, rich client aplikacije... a Covjek ispali "Ma ja to sve u Windowsima IksPe i sa Word i Excel".
Pa nek si covjek misli da li je danas developer deficitarno zanimanje ili nije. Po meni nije ni priblizno. Koliko ljudi su danas 'programeri' i 'developeri' i koliko je visoka strucnost u firmama koje iste zaposljavaju, lokalni susjed hacker ima vise sanse dobit posao od mene jer mu nije bed lagati u svom CV-u a manager ionako nema pojma koga je zaposlio.
@naxeem
Ko da si isao raditi poster za koncert Britney Spears, a ne GUI. Trebao si implementirati prvo org.acme.StipicaLayoutManager ;-)
Valjda svi mi to moramo proci, to ti je ko vatreno krstenje. Sve te to opameti, a i da ti referencu da vidis koliko znas i vrijedis i koji posao mozes ciljati.
Kako rekoh, Sampioni 5 stars ;-)
Hahaha @re@dado, hahahah @re@naxeem .
Btw Stipica i Šef su imaginarna imena ljudi poznatih aktivnoj struci, pa... Ali, da, org.acme.StipicaLayoutManager : org.acme.ŠefLayoutManager i ja sam očito zablokirao jer u C#-u ne možeš raditi dvostruko nasljeđivanje.
Što se Šefa tiče, on slovi kao znalac, a ni Stipica nije loš. Jednostavno čudan pristup izvedbi nekih stvari i druga valna duljina...
@naxeem
Ko da si isao raditi poster za koncert Britney Spears, a ne GUI. Trebao si implementirati prvo org.acme.StipicaLayoutManager ;-)
Valjda svi mi to moramo proci, to ti je ko vatreno krstenje. Sve te to opameti, a i da ti referencu da vidis koliko znas i vrijedis i koji posao mozes ciljati.
Kako rekoh, Sampioni 5 stars ;-)