- Megkértek, hogy ne számoljak túl szűkmarkúan az órákkal
- Megírtam a 60 órás becslést
- Bejelentették, hogy ez királyos
- Következő nap visszakaptam, hogy ez kurvasok, faragjunk le belőle
- Sikerült 8 egész órát levenni, morogva, fájó szívvel (nem szívesen becsülök másodperce egy olyan projekten, ahol még van egy harmadik cég is a kalapban, aki úgyis ráng fogja az összes hibát)
- Másnap kaptam egy levelet, hogy nagyon-nagyon figyeljek oda, és tartsam be pontosan a "becslésemet". Mármint a lefaragottat, nem léphetem túl.
- Azon kezdtem agyalni, hogy kibaszok velük, és ha elérem a becsült időt, abbahagyom. És nem szólok. És tesztelhetik.
- Tegnap jött skypon, hogy nagy para van, hol tartok
- 4 óra múlva megírta, hogy mi a para, addig nem tudtam haladni, mert nem tudtam mivan, érdemes-e
- A játékszabályokat óránként változtatják, emiatt nekem folyamatosan át kell írnom a kódot, lassan kicsúszom az időből.
- Ma jött, hogy az ügyfél kedvezményt akar még ebből az 52 órából is, mennyit fogok csúszni. ÉN. ÉÉÉN. Én nem fogok csúszni, én már kész vagyok azzal, amit becsültem, a változtatásokkal TI fogtok csúszni bazdmeg. Már másként jelölöm a munkaidő nyilvántartóban az extra igényeket, kis ++van előtte, mert úgyis tudom, hogy rajtam fogják számonkérni
- Mivel nagyon pontosan feladatonként kell tudnom, hogy hol tartok időben, és nem egyszerre fejezem be, hanem van hogy átcsúszik másik napra, ezért csináltam egy excelt, ahol pontosan vezetem a dolgokat
- Le lettem baszva, hogy miért basztam el erre időt, amikor megemlítettem, hogy hagyjuk már ezt a minden reggel húsz persz, hol tartok, mit becsültem, mennyi lett ahhoz képest dolgot, mert csináltam egy excelt rá (5 perc volt a táblázat)
- Le lettem baszva, azután hogy mondtam, hogy még nincs teljesen kész az egyik form, hogy miért becsültem 2 órát rá, amikor 1,5 óra alatt megcsináltam… Biztos süket is, de mindegy.
- Már alig várom a projekt végét, amikor ugyanez a csapat, mint már eddig kétszer, megint számonkéri rajtam, hogy miért becsültem 52 órát, amikor 120 lett.
- Ezután megint bebizonyítom, hogy 60 óra lett, mint ahogy becsültem, a többi a szarakodás miatt volt, ami nem miattam történt
- Harmadik fél még nincs kész a rendszerével, amit nekem hívogatni kéne… Lehet hogy nem tartják magukat a spechez, és az egészet át kell írnom, mint ahogy ma ki is derült, változtattak jópár dolgon
Használható felhasználói felület tervezése
Elég furcsa elképzelései vannak a managereknek a használható felhasználói felületről. Több javaslatom is volt az adott projekten, de mindegyikkel lehurrogtak. Az az igazság, hogy akkor sem használnám az általunk írt programot, ha kötelező lenne. Lássuk mikre gondolok:
- Volt eredetileg egy átnevezés gomb a UI-on. Na ezt levetették. Úgy lehet átnevezni, ha kétszer kattintasz a tree struktúrában egymás után. Inplace editor jelenik meg. Felhasználó honnan fogja tudni, hogy egyáltalán átnevezhetőek az adott dolgok? Semmi nem utal rá.
- Van egy lista, ahol megjelenhet sok elem. Minden sorban van egy checkbox, ami a kijelölést hivatott megvalósítani. Javasoltam, hogy tegyünk be egy select all checkboxot a tetejébe, mert nem hiszem, hogy sok ember van, aki hajlandó 40 checkboxot bepipálni, ha pld. másolni, törölni akar. Nem, az hülyeség, nem kell.
- Van egy törlés gomb minden sorban, és van egy kint a tetején, ami az összes kijelöltet törli. Miért van kettő, vegyük ki a fölsőt, egyesével lehessen csak törölni.
- Vágólap szerű funkció van a rendszerben. A másolás, beillesztés gombok csak akkor jelennek meg, ha van a vágólapon elem. Na most kitalálta valaki, hogy az egész vágólag rész csak akkor látszódjon, ha kijelölsz minimum egy fájlt. Nos akkor megint: honnan fogja tudni a user, hogy lehet másolni, átmozgatni, ha nem látja, hogy van ilyen lehetőség. Egyszercsak véletlen rájön, amikor kijelöl valamit. De miért is jelölné ki, ha nem tud vele semmit csinálni látszólag?
- A vágólag nem a megszokott elnevezést használja:
- Vágólapra: ezzel kerül a vágólapra a cucc (Eredeti: Másolás lenne)
- Másolás: ezzel tudod az adott helyre másolni a vágólapon lévő stuffot (Eredeti, és megszokott: Beillesztés lenne Másolás után)
- Átmozgatás: ezzel lehet a vágólapon lévő cuccot beilleszteni, úgy hogy törli az eredetit (Eredeti Beillesztés lenne, Kivágás után)
- Ez a fa struktúra úgy működik, hogy a kiválaszott elem mindig felül van a fában. Kibaszott idegesítő, amikor végig akarsz nézni egy három node-os treet, és mindig a tetejére kerül a kiválasztott, ezért amikor a másodikra kattintasz, akkor lehet, hogy azt választod ki, amit előtte már megnéztél, és a harmadikra kéne, szóval követhetetlen és halálosan idegesítő.
Csináltam a munkahelyemen egy belső projektet, amiben erőteljesen használtam az Ext frameworkot. Érdemes megnézni a demokat. Ez a kedvencem.
Rövidebb idő volt a .net 3.5-ös kód (VÉGRE!) megírása, mint a javascript kódé. Töménytelen mennyiségű anyázás hagyta el a számat a javascript miatt, de már kezdek belerázódni. Eddig nagyon minimál szinten tudtam JS-ben programozni, most ragadt rám pár dolog. És tetszenek a lehetőségek. És végre egy projekt, aminek egyelőre mindenki nagyon örül. Ha elkezdi használni az egész cég, akkor biztos lesznek majd mindenféle beszólások, hogy miért így, miért nem úgy stb., de annyi előnyöm van, hogy az előző szoftvert mindenki nagyon utálja, és alig várják, hogy ne azt kelljen használni.
Egyébként ennél a projektnél is az történt, hogy 1 hetet becsültem, aztán amikor már kész volt szinte teljesen, jött az egyik arc, és kétnapnyi változtatást kért. Emiatt nem 1 hét lett, hanem 1 hét + két nap. Ezek után volt pofája megkérdezni, miért nem vagyok még kész, amikor egy hetet ígértem!
Biztos nem járt matekra.
Ma az egyik account halálosan boldog volt, mert fele annyi idő ment el egy projektre, mint amit ráírtak. megszorozták kettővel a becslésemet elvileg az elején. Akkor ki nem tud jól óraszámot becsülni? 
Sokat gondolkodtam mostanában azon, hogy a szeretem-e a munkámat, és hogy jó-e ez a munka egyáltalán. Most nem a jelenlegi munkahelyemre gondolok, hanem úgy általában. Kb. 10 éve húzom az igát, összegyűlt némi tapasztalatom, több munkahelyről is.
Általában az ember azért csinál valamit, mert szereti. Ha már másnak csinálja, és nem csak megélhetésből, akkor szereti, ha a munkája eredményét a "célközönség" is szereti. No itt jön az én problémám. Talán még sosem volt olyan program, aminek a fejlesztésében részt vettem (munkahelyre gondolok, magánprojekteket most hagyjuk), amire azt mondanám, hogy a főnökeim boldogok voltak, mert hű de örül az ügyfél, és szereti használni. Pedig sokszor szó szerint éjjel-nappal csinálta az egész csapat. Eleinte lelkesedésből, később már azért, hogy elkészüljön időben. (Valaki olvasgathatja a private postjaimat, mert ma és tegnap két projektnek is nagyon örültek!
)
Mostanában a munkám nagy része azzal megy el, hogy egyik funkció IE6 alatt nem megy, másik Firefox alatt, harmadik, Xp alatt, negyedik 2k3 alatt, és ezek össze kombinációja. Végre megjavul Xp alatt IE-ben és FF-ben, akkor biztos, hogy nem megy 2k3 alatt IE7-ben. A jelenlegi munkámban 3 hete szinte csak ilyesmivel foglalkozunk. Nem egy fejlesztői álom. A fejlesztő azt szereti, ha okos programot tud tervezni, ezután még meg is tudja faszán írni, és működik csodásan. De hiába teszi ezt jól, a kliens csak a felhasználói felületet látja, és anyázik, mert ez sem megy, meg az sem megy. Szinte minden projekten az történik, hogy az eredeti határidő marad a kitőzött dátumon, de ugyanannyi idő alatt 3-4-szer annyi funkcionalitást akarnak belerakatni, mert menet közben jut eszükbe még egy csomó minden. Ezek után amikor nincs kész határidőre a projekt, akkor a fejlesztő a hibás, mert sok hibát csinált, illetve nem lett kész, pedig azt mondta az elején, hogy ennyi idő kell rá. Emiatt a fejlesztő mindig stressz alatt van tartva, és tudja, akármennyire is küzd, csak lebaszás lesz a vége, ha megszakad akkor is.
Egyszerűen nem értem az embereket. Nekem egyértelmű, hogy ha kihívok egy ablakost, hogy cserélje ki az egyik szobában az ablakot, és megkérem, hogy a másik szobait is cserélje ki, ha már itt van, akkor nem annyiba fog kerülni, és nem is annyi idő alatt lesz kész. Nem értem, hogy a szoftveriparban ez miért nem így működik. Ha pld. 180 órát becsülök egy projektre, akkor a PM azt mondja általában, hogy vigyük le 130-ra, mert az ügyfél ezért nem fog ennyit fizetni. Emiatt kénytelen vagyok sokmindent kihagyni (a PM tudtával): normális szintű logolás, űberjósecurity, szép kód, kommentezés, és igen, ciki, meg égő, de néha még hibakezelést is. Amikor kész van, akkor ezek miatt csóválják a fejüket, és üvöltenek, hogy miért csináltál olyan szart, amiben nem elégséges a logolás, egyáltalán nem secure stb-stb. Az senkinek nem jut eszébe, hogy a 180 órás tervezést levittük 130-ra, és még beleraktunk 100 órányi featuret, mert kellett, és az sehogy nem lesz kész 130 óra alatt.
Én gyűlölök gányolni, mindent szeretek profin megcsinálni, és eléggé idegesít, ha tudom, hogy amit kértek tőlem, és kénytelen voltam olyan állapotvan lefejleszteni, az egy ketyegő bomba. Ügyfél sem fog örülni, ha a projekt vége után még 1 évig hibát kell javítani benne. Ezek a dolgok miért nem tudatosulnak a PM-ekben, ügyfelekben?
Szeretek nagyon kódolni, de egyre jobban idegesítenek az ilyen dolgok, és már lassan ott tartok, hogy ha valaki elkezd anyázni, hogy ez szar, mert hibás, mert nem így kellene működni-e, (doksi szerint pedig igen, csak nem frissítették a doksit, vagy éppen akkor agyalták ki, hogy másképp működjön), akkor legszívesebben pofánrúgnám, és páros lábbal ugrálnék a mellén, miközben ezt üvölteném: "Feature request, bug, Feature request, bug bazdmeg, tudod mi a különbség?"
Ha lenne kurvasok pénzem, csinálnék egy céget, ahol csak és kizárólag kurvajó minőségű terméket fejlesztenének. Aki tőlem rendelne, az tudná, hogy nem három hét alatt kap egy terméket, amit 1 évig javítgatni kell. Reális időbecslést kap, viszont minőségi szoftvert cserébe, minimális buggal. Többe is fog neki kerülni, ha neki gyorsan kell szar, mehet máshová. Ez a cég lenne a szoftverfejlesző cégek Armanija. Azt is kikötném, hogy olyan nincs, hogy este hatkor kérünk egy hat órás fejlesztést, aminek reggelre már élesednie kell, elhajtanám a picsába, menjen sufnituning céghez.
Weboldal pillanatnyi állapotának mentése képként
Néhány hete, valamikor december végén megkerestek a munkahelyemen egy kéréssel. Az volt a lényege, hogy webes alkalmazásban szerettek volna megjeleníteni egy kis képet egy másik weboldal pillanatnyi állapotáról. Googliztam, kérdezgettem mindenkit, senki nem tudott megoldást. Googli sem. Egyetlen találat volt ami sikerrel kecsegtetett, de az pedig iszonyatosan bonyolult volt, és voltak bizonyos feltételei a működésének. Pld. xhtml kompatibilisnak kell lennie az oldalnak, vagy arra kell alakítani. Aztán meg kellett volna tanulni valami XSL-FO nevű nyelvet, keresni valami komponenst, ami ebből PDF-et generál, aztán egy másikat, ami a PDF-ből képet. Az egészhez semmi kedvem nem volt, úgyhogy elmondtam mi a helyzet, és hogy valószínűleg nagyon sok idő lenne, mire mindezt megtanulom stb. Végül kimaradt a projektből ez a cucc.
Ma olvastam egy SQL serverrel kapcsolatos könyv bevezetőjét, és a szerző által működtetett oldalon találtam egy opensource webpreview nevű alkalmazást, ami pont azt csinálja, ami nekem kell, és nincs több az egész tíz sorosnál. csak ASP.NET 2.0 kell hozzá, semmi más. :S Miért pont most találtam? Google ki sem hozta anno, kb 30 találat volt a témában összesen, akárhogy kerestem. Most már nem kell, de elbookmarkoltam, hátha a jövőben még kell majd ilyen. Állandóan így járok, hogy amikor nem keresek már valamit, akkor megtalálom teljesen mással foglalkozva.
Megnyertünk egy a cég számára nagyon fontos tendert, és emiatt a főnök kitalálta, hogy elviszi az egész céget tegnap 14:00-kor a Vörösmarty térre forraltborozni, és hurka-kolbászt enni. Ez volt életem második alkalma, hogy alkoholt ittam, amikor autóval jöttem dolgozni. Ma volt a harmadik, mert ma pedig a céges értékelésen pezsgőztünk. No mondjuk nemigazán hiszem, hogy az ilyen dél felé fél deci pezsgő, vagy 2 deci forralt bor az benne lenne az emberben hétkor még este. Ezért is mertem csak inni. Nyugis volt a mai nap a munkahelyen is. Egy kicsit játszottunk multiplayer quake clonet is. No meg telefont szereltem a fülessel, előtte kimentem az aquába és a speedhopba. Egész nyugis kis nap volt.
Már csak 5-öt kell aludni, és jön a junior dotnetes srác, nem leszek egyedül végre. Ma közölték, hogy fel akarnak venni még egy embert, mert csak akkor leszünk elegen. Végre belátták, amit már 1 éve pofázok.
Ma van (tegnap volt inkább már) Adri születésnapja, ezért megleptem egy csokorral, és egy könyvvel. Aztán futott utánam, mert látta, hogy valamit csempészek be a szobába.
Ilyenkor olyan, mint egy rossz kisgyerek, imádom!
Rendeltünk egy tonna kaját ( > 5000 HUF), aminek a fele a hűtőben kötött ki. De jót zabáltunk. Habzsi-dőzsi volt.
Kódolási stílus és elnevezési konvenciók
A napokban rengeteget gépeltem. Word doksikat gyártok többek között a címben említett témakörökben. Ahogy nézegettem a témával kapcsolatos blogokat, doksikat, néha nagyon kiakadtam.
Engem irritál például, ha C#-ban valaki aláhúzást használ a private memberek jelölésére. Microsoft sem ajánlja, és a legtöbb coding standard doksi sem, ECMA és ISO sem. A paraméter neveket és a fieldek neveit kis betűvel szokás kezdeni, aztán minden szó első betűje nagy.
- Pascal casing: minden szó első karaktere nagy betű. Pld.: BackColor.
- Camel casing: az első szóban az első karakter kis betű, az összes többi szóban nagy betű a szavak kezdő betűje. Pld.: backColor.
Ma egy blog postot olvasva majd’ megőrültem. A fickó nem elég, hogy aláhúzást használ, de még Pascal case stílusban nevezi el a fieldeket, és a paramétereket, ráadásul ha már aláhúzást használ, akkor nem értem, miért fordította meg az egész rendszert. Ő nem a fieldeket jelöli aláhúzással, hanem a paramétereket. Ráadásul ha a field nagy betűvel van írva, akkor a "hozzá tartozó" propertyt majd dupla aláhúzással jelöli???
Példa:
public void Ez(string _Valami) {
this.Valami = _Valami
…
}
Az a véleményem, hogy az interneten nem kéne mindenkinek példakódokat felrakni, aki nem tud betartani legalább olyan standardokat, amik elterjedtek, és javasoltak. Nem kéne kitalálni új konvenciókat.
Láttam már olyat egy design pattern KÖNYVBEN, ami a C#-ról szólt, hogy az író java-s módszerrel írt példákat: metódusok camelcase-el, property get/set helyett pedig getValami(), setValami() metódusokat használt. Na ettől aztán már végképp kinyílt a bicska a zsebemben. Aki nem tud "C#-ul", az ne írjon már ilyen elbaszott könyveket, blog post-okat.
Ma volt egy érdekes 7 percem. A következő történt:
11.53: PM odajött, hogy be tudnék-e rakni egy logolást az egyik külső rendszerből érkező xml adatokra, nem elég, hogy a DB-be beírjuk amit küldenek, látni akarják az adatokat, amit kaptunk.
11.54: Elkezdtem kódolni. Mentést megírtam, web.configba kiraktam a path-t, ahová menteni kell a cuccot, beállítottam az írási jogot a folderre.
11.57: Commit az SVN-be, vár build lefutására. Keres rendszergazda, de sehol nem találom.
11.58: Build lefutott, Remote Desktoppal be a teszt szerverre, mappa létrehozása, web.confog checkolása, hogy jó-e
11.59: Jogosultság beállítása a szerveren
12:00: PM átkiabál, hogy jönnek az adatok, enter leütése a jogosultság ablakon, abban a pillanatban megjelent az XML a neki szánt helyen
Örülés vala.
Szerintem az utolsó tizedmásodpercben sikerült az enterre csapni. Lokálisan nem is tudtam letesztelni, csak imádkozni tudtam volna, ha lett volna rá idő, hogy fog működni. Nem szeretnék sok ilyet. Naponta egyszer jön az adat, éppen csak sikerült elcsípni. 
Ma kaptam egy önéletrajzot, de behívás nélkül el lesz utasítva. ASP.NET szó meg sem jelenik a CV-ben. .NET is csak egyszer, és csak minimális részt tesz ki a jelölt tevékenységéből.
