Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Martin
TLLKNYV
PROGRAMOZKNAK
Hogyan vljunk igazi szakemberr
Robert C. Martin
TLLKNYV
PROGRAMOZKNAK
Hogyan vljunk igazi szakemberr
A kiadvny a kvetkez angol eredeti alapjn kszlt:
Te Clean Coder: A Code of Conduct for Professional Pragrammers
Copyright 2011 by Robert C. Martin. A rights reserved!
Kiskapu K. 2011
Authorized translation of the English edition of Te Clean Coder: A Code of Conduct for Professional
Pragrammers, ISBN 2011 9780137081073 Pearson Education, Inc., publishing as Prentice Hall. This
translation is published and sol d by permission of Pearson Education, Inc., the owner of ali rights to
publish and sell the same. No part of this book, induding interior design, cover design, and icons, may be
reproduced or transmitted in any form, by any means (electronic, photocopying, recording, or otherwise)
without the prior written permission of the publisher.
Trademarked names appear throughout this book. Rather than list the names and entities that own the
trademarks or insert a trademark symbo! wi th each mention of the trademarked name, the publisher
states that it is using the names for editorial purposes only and to the beneft of the trademark owner,
with no intention of infringing upon that trademark
Fordts s magyar vltozat 20 ll Kiskapu Kf. Minden jog fenntartva!
A knyv egyetlen rsze sem sokszorosthat semmilyen mdszerrel a Kiad elzetes engedlye nlkl. Ez
a korltozs kiterjed a bels tervezsre, a bortra s az ikonokra is. A knyvben bejegyzett vdjegyek s
mrkanevek is felbukkanhatnak Ahelyett, hogy ezt minden egyes helyen kln jeleznnk, a Kiad ezennel
kijelenti, hogy a mben elfordul valamennyi vdett nevet s jelzst szerkesztsi clokra, jhiszemen,
a nv tulajdonosnak rdekeit szem eltt tartva hasznlja, s nem lszndkban az azokkal kapcsolatos
jogokat megszegni, vagy ktsgbe vonni.
A szerz s a kiad a lehet legnagyobb krltekintssel jrt el e kiadvny elksztsekor. Sem a szerz,
sem a kiad nem vllal semminem felelssget vagy garancit a knyv tartalmval, teljessgvel kap
csolatban. Sem a szerz, sem a kiad nem vonhat felelssgre brmilyen baleset vagy kresemny miatt,
mely kzvetve vagy kzvetlenl kapcsolatba hozhat e kiadvnnyal.
Bortfot: Spitzer rteleszkp/hubblesite.org
Fordts s lektorls: Rzmves Lszl
Mszaki szerkeszt: Tth Klra
Trdels: Tth Klra
Felels kiad a Kiskapu K. gyvezet igazgatja
20 ll Kiskapu K.
1134 Budapest, Csng u. 8.
Fa: (+36-l) 303-1619
http:/ /www.kiskapukiado.hu/
e-mail: kiado@kiskapu.hu
ISBN: 978-963-9637-86-3
Nyomdai elllts: rdi Rzsa Nyomda
Felels vezet: Juhsz Lszl
A KNYVRL RTK
"
Bob bcsi egyrtelmen mg magasabbra teszi a lcet ezzel a knyvvel, amelyben
lefekteti, hogy milyen elvrsoknak kell egy hivatsos programoznak megfelelnie:
hogyan kell kommuniklnia s egyttmkdnie a munkatrsaival s a feljebbvali
val, hogyan kell beosztania az idejt, hogyan kell kezelnie a nyomst, s milyen esz
kzket kell hasznlnia. A tesztvezrelt s elfogadsiteszt-vezrelt fejlesztsen (TDD,
ATDD) tl Martin elmagyarzza mindazt, amit minden, magt profinak tart prog
ramoznak tudnia kell, nem csak nmaga rdekben, hanem azrt is, hogy a szaft
verfejleszts mg mindig fiatal szakmja tovbbfejldhessen.
"
-Markus Girtner vezet szaftverfejleszt
it-agile GmbH, www.it-agile.de, www.shino.de
"
Vannak mszaki knyvek, amelyek inspirlnak s oktanak, s vannak olyanok,
amelyek szrakoztatnak. Ritkn esik meg, hogy egy knyv mindezt egyszerre nyjtsa,
de Robert Martin nem elszr viszi vghez ezt a bravrt. Olvassuk el s szvjuk ma
gunkba a Tllknyv programozknak tancsait, hogy valban profi szaftverfejlesz
tnek hvhassuk magunkat!
"
- George Bullock, vezet programmenedzser
Microsoft Corp.
"
Ha lenne
"
diploma utni ktelez olvasmny
"
az informatikusok szmra, biztosan
ez a ktet lenne az. A valsgban a rosszul megrt kd nem tnik el a szemeszter v
gn; nem kapunk csillagos tst, ha a
"
vizsga
"
(a hatrid) eltti jjel rohamtempban
ksztjk el a kvnt kdot; s ami ennl is rosszabb, emberekkel kell kommunikl
nunk. Egy zsenilis programoz nem felttlenl profi is. A Tllknyv programo
zknak a profizmushoz vezet utat rja le - mghozz meglepen szrakoztatan.
-!eff Overbey
University of Illinois, Urbana-Champaign
"A Tllknyv programozknak sokkal tbb puszta tmutatnl: olyan, kemny mun
kval megszerzett tudst s blcsessget tr elnk, amit normlis esetben csak gy
sajtthatnnk el, ha hossz vekig dolgoznnk egy mesterember mellett, a sajt hi
binkbl tanulva. Ha profi szaftverfejlesztnek tartjuk magunkat, ezt a knyvet min
denkppen el kell olvasnunk.
"
A KNYVRL RTAK
- R. L. Bogetti vezet rendszertervez
Baxter Healthcare
www.RLBogetti.com
5
1986 s 2000 kztt szoros munkakapcsolatban lltam Jim Newkirkkel, kollgmmal
a Teradyne-tL Mindkettnknek szenvedlye volt a programozs s a tiszta kd.
Hossz estket s htvgket tltttnk egytt, klnfle programozsi stlusokkal
s tervezsi mdszerrekkel ksrletezve, s folyamatosan zleti terveket gyrtottunk.
Vgl kzsen megalaptottuk az Object Mentor, Inc. cget. Ez alatt az id alatt ren
geteget tanultam Jimtl, de mindig is a hozzllsa, a munkamorlja nygztt le
a leginkbb -ez volt a mrcm, amelynek meg akartam felelni. Jim igazi profi. Bszke
vagyok r, hogy vele dolgozhattam, s hogy a bartomnak nevezhetem.
TARTALOM
Elsz . . . . . . ll
15
19
Bevezets . . . . .
Ksznetnyilvnts
A szerzrl . . . . . 23
Ktelez bevezets ... .25
1. fejezet
2. fejezet
3. fejezet
4. fejezet
Profizmus
Vigyzz, mit krsz! .
Felelssget vllalni .
Els szably: ne tgy krt!
Munkamorl . .
Irodalomjegyzk
Nemet mondani
Ellenttes szerepek
Amikor nagy a tt .
"
Csapatjtkosnak
"
lenni.
Az
"
igen
"
ra .
Lehetetlen kd .
. 31
. 32
. 32
. 34
. 38
. 43
. . . . . . . . . 45
. 47
. 50
. 51
. 55
. 61
Igent mondani . . . . . . . . . . . . . . . . .65
A ktelezettsgvllals nyelve . . . . 67
Tanuld meg, hogyan mondj igent! . . 71
sszefoglals . . . . . . . . . . . 74
Kdols . . .
sszpontosts
Az ramlsi zna
ri vlsg . . .
Hibakeress . .
Oszd be az erd!
Kss . . . . .
Segtsg! . . . .
Irodalomjegyzk
. . . . . . . . . . 75
. 76
. 79
. 81
. 82
. 86
. 87
. 89
. 91
5. fejezet
6. fejezet
7. fejezet
8. fejezet
9. fejezet
10. fejezet
Tesztvezrelt fejleszts . . . . . . . . . . . . 93
Az eskdtszk hatrozott . . . . . . . . 94
A tesztvezrelt fejleszts hrom trvnye . 95
Mi nem a tesztvezrelt fejleszts? . 98
Irodalomjegyzk . . . . . . . . 99
Gyakorls
Nhny sz a gyakorlsrl
A kdolk ddzsja .
Szlestsd a ltkrd!
sszefoglals .
Irodalomjegyzk
Elfogadsi tesztek
A kvetelmnyek kzlse .
Elfogadsi tesztek
sszefoglals .
Tesztelsi stratgik
A minsgellenrk nem tallhatnak
semmilyen hibt . . . . .
A tesztautomatizlsi piramis .
sszefoglals . .
Irodalomjegyzk .
Az id beosztsa .
rtekezletek . . .
Fkuszmanna. . .
Iddobozols s paradicsarok
Elkerls . . . . . . . . . .
Vakvgnyok . . . . . . . .
Mocsarak,dagonyk,ingovnyok
s mindenfle szemthalmok .
sszefoglals . . . . . . . . . .
Becsls ...
Mit jelent a becsls?.
PERT . . . . . . .
. . 101
102
105
108
108
109
111
.lll
115
126
127
128
129
133
133
135
136
140
142
143
144
144
145
147
149
152
A feladatok idignynek megbecslse. 155
A nagy szmok trvnye . . . . . . 157
11. fejezet
12. fejezet
13. fejezet
14. fejezet
A fggelk
sszefoglals . .
Irodalomjegyzk .
Nyoms . . . . .
A nyoms elkerlse
A nyoms kezelse
sszefoglals . .
158
158
159
.161
162
164
Egyttmkds .
Programozk s emberek
Kisagyak . .
sszefoglals . . . . .
. . . . . . . . 165
167
171
172
Csapatok s projektek . . . . . . . . . . . 173
Vegythet? . . . . . . . . . . . . . 173
De hogyan lehet mindezt kzben tartani? 175
sszefoglals . . .176
Irodalomjegyzk . . . . . . . . . . . .176
Mesterek, tantvnyok
s a mestersgbeli tuds.
A kudarc fokozatai .
Szakmai tmutats .
Mestersgbeli tuds.
sszefoglals
Eszkzk . .
Eszkzk . .
Forrskd-kezels .
Szerkesztk s fejlesztkrnyezetek
Problmakvets . . .
Folyamatos bepts . . . .
Egysgtesztel eszkzk . .
sszetev-tesztel eszkzk.
Egyttmkds-tesztel eszkzk .
UML!MDA.
sszefoglals
177
177
178
186
187
189
191
191
195
196
197
198
199
200
201
203
Trgymutat ....... . . . . . . . . . 204
A BORTN
A bortn lthat ltvnyos kp a Szauron szemre hasonlt Rk-kdt (Ml) br
zolja. Az Ml a Bika csillagkpben tallhat, gy egy fokkal jobbra a Zeta Tauritl,
a bika bal szarvnak hegyt jelkpez csillagtl. A Rk-kd egy szupernva marad
vnya, amelynek a felrobbanst 1054. jlius 4-n lthatta az gbolton az emberisg.
Mivel mindez tlnk csupn 6500 fnyvnyire trtnt, olyb tnt, mintha egy j,
nagyjbl a Jupitervel megegyez fnyessg csillag gylt volna ki az gen (a knai
szemtank lersa szerint), mghozz fnyes nappal! A kvetkez hat hnap sorn
aztn a
"
csillag
"
fnye fokozatosan elenyszett.
A bortn lthat kp a Hubble rtvcs lthat fnyt rgzt fnykpt (kls gyr)
s a Chandra rntgenteleszkp ltal ksztett kpet (a kk
"
cltbla
"
a kp kzpn)
egyesti.
A lthat fnyen alapul kp egy gyorsan tgul por- s gzfelht mutat, amelyet
a szupernva-robbansbl visszamaradt nehz elemek tarktanak. Ez a felh jelenleg
ll fnyv tmrj, 4,5 naptmeg, s elkpeszt temben, msodpercenknt 1500
kilomteres sebessgel tgul. Finoman szlva is fgyelemremlt mozgsi energia egy
ilyen rges-rgi robbanstl!
A
"
cltbla
"
kzepn egy lnk vilgoskk szn ptty lthat - ez a pulzr. A csillag
felrobbanst ennek a pulzrnak a kialakulsa okozta. A hallra tlt csillag magjnak
kzel egy napnyi tmeg anyaga egy mindssze 30 kilomter tmrj neutron
gmbb omlott ssze, s ennek az sszeomlsnak a mozgsi energija a neutronkp
zdst ksr hihetetlen neutrinzporral prosulva szttpte s megsemmistette
a csillagot.
A pulzr forog: msodpercenknt 30 fordulatot tesz, s a forgs villogst eredmnyez,
ezrt a tvcsvekben hunyorogni ltjuk. A pulzl fnyk miatt hvjuk az ilyen gi
testeket pulzrnak.
ELSZ
Az Olvas nyilvn azrt vlasztotta ezt a knyvet, mert hivatsos szoftverfejleszt.
Nagyszer, n is az vagyok -gy taln elmondhatom, mirt vettem n a kezembe
Robert C. Martin ktett
Nem is oly rgen kezddtt, s nem is tl messze. (Fnyek bekapcs, s indulhat
a kamera, Charley ... )
Nhny vvel ezeltt egy kzepes mret vllalatnl dolgoztam, amely szigoran
szablyozott termkek rtkestsvel foglalkozott. Biztos ismers a dolog: hrom
emeletes plet, nyitott flks munkahelyek, az igazgatknak sajt irodk, hetente
munkartekezlet.
A piacon, amelyen tevkenykedtnk, gyilkos verseny folyt, amikor egyszer csak
felmerlt egy llami megrendels lehetsge. Hirtelen a vsrlk teljesen j krre
lett kilts-csak annyi volt a dolgunk, hogy meggyzzk ket, hogy a mi termkn
ket rdemes vlasztaniuk. Ez azt jelentette, hogy adott hatridre be kellett nyjta
nunk a plyzatunkat egy kormnyhivatalnak, egy msik hatridig t kellett esnnk
egy tvilgtson, egy harmadik hatridre pedig el kellett kszlnnk a termkkeL
A cgvezets jra s jra felhvta a figyelmnket ezeknek a hatridknek a fontos
sgra. Egyetlen megcsszs, s a kormnyzat egy vre kizr minket a piacrl, ha
pedig a vsrlk nem tudnak feliratkozni az els napon, akkor mshoz fordulnak, s
mi csdbe megynk. Pontosan ez az a krnyezet, amelyben egyesek panaszkodnak,
mg msok emlkeztetnek r, hogy a gymnt is nyoms alatt szletik.
n a fejlesztsi osztlyrl ellptetett mszaki projektvezetknt dolgoztam a si
kerrt. A feladatom az volt, hogy a webhelyet hatridre mkdkpes llapotba hoz
zam, hogy a remnybeli vsrlk informcikat s ami mg fontosabb, jelentkezsi
rlapokat tlthessenek le. Ennek a clnak az elrsben az zleti projektvezetvel kel
lett egyttmkdnm, akit itt Joe-nak fogok nevezni. Joe-nak a msik oldal jutott
feladatul: az rtkestssel, a reklmmal s a nem mszaki jelleg kvetelmnyekkel
kellett foglalkoznia. Egybknt volt az, aki elszeretettel hozta fel a fenti gymnt
hasonlatot.
Aki mr dolgozott nagyobb cgnl Amerikban, annak valsznleg ismers a fe
lelssg thrtsa, a hibk msra kense s a munkaundor - mindez teljesen term
szetes. A mi cgnk azonban rdekes megoldst tallt a problmra a Joe s kztem
kialaktott munkamegosztssal.
Kicsit olyanok voltunk, mint Batman s Robin: kzs feladatunk volt, hogy elh
rtsunk minden problmt. n mindennap sszeltem a mszaki csapattal, aztn
Joe-val-minden ldott nap- a helyzethez igaztottuk az temtervet, meghatroztuk
a kvetend utat, majd eltvoltottunk minden akadlyt az tbl. Ha valakinek vala
milyen szoftverre volt szksge, megszereztk neki; ha "nagyon szvesen" belltotta
ELSZ 11
volna a tzfalat, de " sajnos ebdideje volt
"
, hoztunk neki -kajt; ha neknk akart se
gteni, de ms feladatokat kellett elbbre vennie, Joe s n beszltnk a kzvetlen fe
lettesveL
Aztn a csoportvezetveL
Aztn az igazgatvaL
Elintztk, amit kellett.
Taln tlzs azt lltani, hogy csapkodtuk az asztalt, s vltztnk, de mindent
bevetettnk, ami csak a tarsolyunkban volt - st, menet kzben j megoldsokat is
kitalltunk -, hogy elhrtsunk minden akadlyt, s mindezt etikus mdon tettk,
amire a mai napig bszke vagyok.
gy gondoltam magamra, mint a csapat tagjra, akinek nem rangon aluli beug
rani, hogy megrjon egy SQL-utastst, vagy prknt beszllni egy programoz mell,
hogy a kd idben elkszljn. Joe-ra ugyangy, csapattagknt tekintettem, vgl
azonban r kellett brednem, hogy Joe nem osztotta a nzeteimet
Nagyon szomor nap volt, pntek dlutn l ra- a webhelynek terv szerint a r
kvetkez htfn, korn reggel kellett letre kelnie. Vgeztnk a munkvaL *MIN
DEN KSZEN LLT*. Minden rendszer mkdtt. sszehvtam a teljes mszaki
csapatot egy utols ellenrzsre; mr csak fel kellett kattintanunk a kapcsolt. A prog
ramozkan kvl ott voltak velnk a marketingesek s a termk jogtulajdonosai is.
Bszkk voltunk magunkra. Felemel rzs volt.
Aztn beesett Joe, s valami olyasmit mondott, hogy "Rossz hrem van. A jogi osztly
mg nem hagyta jv a jelentkezsi rlapokat. Nem indthatjuk be a rendszert.
"
Ez nem tnt nagy problmnak-ilyen-olyan akadlyok az egsz projekt alatt felme
rltek, "Batman s Robin
"
pedig rutinbl megoldotta ket. Ezttal sem estem pnikba,
s azt feleltem: "Semmi vsz, reg harcos, mg egyszer megmentjk a vilgot. A jogi
osztly a harmadik emeleten van, ugye?
"
Ekkor kerlt lgy a leves be.
Joe, ahelyett, hogy csatlakozott volna hozzm, azt krdezte: "Mirl beszlsz, Matt?
"
.
Meglepdtem. "Tudod, a szoksos. Csak ngy PDF-fjlrl van sz, nem igaz? R-
adsul kszen vannak, a jogi osztlynak csak jv kell hagynia ket! lljunk az asz
talukn!, s nzznk rjuk csnyn, amg r nem tik a pecstet!
Joe nem rtett egyet velem: "Majd zembe helyezzk a rendszert a jv ht mso
dik felben. Nem nagy gy.
"
12
A folytatst nyilvn el tudja kpzelni a kedves Olvas. Valahogy gy hangzott:
Matt: " De mirt? Pr ra alatt vgeznek!
"
Joe: "Tovbb is tarthat.
"
Matt: "Ott az egsz htvge. Egy csom idejk van. Nyomuljunk!
"
Joe: "Matt, ezek profik. Nem szvhatjuk csak gy a vrket, s knyszerthetjk
ket, hogy ldozzk fel a magnletket a mi kis projektnkrt.
ELSZ
Matt: (kis sznet utn)
"
... Joe, szerinted mit csinltunk a fejlesztcsapattal az el
mlt ngy hnapban?
"
Joe:
"
Tudom, de ezek igazi profik.
"
Csend.
Mly levegvtel.
Mit is mondott Joe?
Ht a mszaki csapat nem profikbl llt, a sz legnemesebb rtelmben? Akkori
ban meg voltam gyzdve errl, de ha ma vgiggondolom, mr nem vagyok biztos
benne.
Vizsgljuk meg ismt a
"
Batman s Robin
"
megoldst, de most ms szemszgbl.
n azt hittem, a lehet legjobb teljestmnyre sarkallom a csapatot, de az a gyanm,
hogy Joe msfajta jtkot jtszott, azzal az alapfeltevssel, hogy a mszaki csapat le
gyzend ellensg. Gondoljuk csak vgig: mirt kellett mindenkinek a nyakra
mszni, s az asztalt csapkodni? Nem az lett volna a j, ha egyszeren megkrdezhet
jk a csapatot, hogy mikor lesznek ksz, k hatrozott vlaszt adnak, amit mi elhi
sznk, s tnyleg nem okoznak csaldst?
Profiknl tnyleg gy kellene mkdnie a dolognak - mgsem tehettk meg. Joe
nem bzott meg a mszaki csapatban, ezrt fenntarts nlkl a krmnkre koppintott
(
"
mikromenedzselte
"
a csapatot) - ugyanakkor a jogi osztllyai kapcsolatban vala
mirt nem voltak ilyen ktelyei, s nem is volt hajland mikromenedzselni ket.
Vajon mirt?
Mert a jogi osztly olyan profizmusrl tett tanbizonysgot, amilyenrl a mszaki
csapat nem. Egy msik csapat teht meg tudta gyzni Joe-t arrl, hogy nincs szks
gk bbicsszre, nem jtszanak kisded jtkokat, s egyenrang flknt kell tisztelni
ket. Nem hiszem, hogy ennek brmi kze lett volna a falon lg puccos diplomk
hoz vagy a fiskoln eltlttt nhny tovbbi vhez, br ez utbbiak nyilvn hozzj
rultak a helynval viselkeds elsajttshoz.
Az azta eltelt vekben sokszor eltndtem azon, hogy mire lenne szksg a szak
mai tuds mellett ahhoz, hogy egy programozt is profi szakembernek tartsanak.
Vannak elkpzelseim a dologrl- alaposan utnaolvastam a tmnak, blogot rtam
rla, segtettem pr embernek, s a sajt munkmban is sikerlt hasznostanom ezt
azt. Olyan knyv azonban nem akadt az utamba, amelyik konkrt tmutatst adott
volna ezen a tren.
Aztn egy nap derlt gbl villmcsapsknt jtt a felkrs, hogy vlemnyezzem
egy knyv els vzlatt - ezt a knyvet tartja most a kezben a kedves Olvas. Ez a
ktet lpsrl lpsre pontosan lerja, hogyan kell eladni magunkat, hogyan kell vi
selkednnk, s hogyan kell kommuniklnunk, ha azt akarjuk, hogy profinak tartsa
nak minket - mghozz nem elcspelt kliskkel, nem ms iromnyokra hivatkozva,
hanem rszletesen bemutatva, hogy mit kell tennnk, s hogyan.
ELSZ 13
Sokszor szrl szra kvethetjk az utastsokat. Egyes pldkban vlaszokat, vi
szontvlaszokat, pontostsokat, st tancsokat is tallunk arra az esetre, ha valaki
megprblna egyszeren
"
tnzni rajtunk
"
.
Joe ismt sznpadra lp, ezttal balrl:
Megint a Nagy Cgnl vagyunk, Joe s n, s jra a nagy webhely-ttervezsi pro
jekten dolgozunk. Ezttal azonban tegyk fel, hogy egy kicsit ms a helyzet.
Ahelyett, hogy kibjna a ktelezettsgek all, a mszaki csapat maga vllal kte
lezettsgeket. Ahelyett, hogy elhrtank a becslseket, s msra hagynk a tervezst
(hogy aztn panaszkodhassanak r), maguk szervezik meg a sajt munkjukat, s
tartjk magukat a vllalsaikhoz.
Most ttelezzk fel azt is, hogy a csapat tagjai tnylegesen egyttmkdnek. Ha
a programozk elakadnak a rendszer mkdse miatt, csak felveszik a telefont, s
a rendszergazda rgtn dolgozni kezd a problma megoldsn.
Amikor Joe megjelenik, hogy ellenrizze, hogy halad a munka az 14321-es felada
ton, senkit nem kell noszogatnia: ltja, hogy az adatbzis-felgyel szargalmasan
dolgozik, nem pedig a Weben szrfl. Emellett a csapattl kvetkezetesen pontos el
rejelzseket kap, s nem rzi gy, hogy a projekt valahol az ebd s a postalda ellenr
zse kztt ll a rangsorban. Az temterven nem kell mindenfle trkkel folyamatosan
igaztani, s a hatridkre nem az a vlasz, hogy
"
Megprbljuk.
"
, hanem az, hogy
"
Mi ezt vllaltuk; ha te sajt magadnak is ki akarsz tzni clokat, csak nyugodtan.
"
Egy id utn - biztos vagyok benne - J oe a mszaki csapatra is profikknt kezdene
tekinteni, s igaza lenne.
De milyen konkrt lpseket kell tennnk annak rdekben, hogy egyszer szaki
bl profiv vljunk? A vlaszok itt vannak ebben a knyvben.
Lpjnk magasabb szintre - szerintem bszkk lesznk r!
- Matthew Heusser
szaftverfolyamat-naturalista
BEVEZETS
1986. janur 28-n, keleti parti id szerint dleltt ll ra 39 perckor, mindssze
73,124 msodperccel a fellvs utn, mintegy 15 kilomteres magassgban, a Chal
lenger rsikl szilnkokra robbant a jobb oldali gyorstrakta hibja miatt. Ht b
tor asztronauta, kztk Christa McAuliffe kzpiskolai tanr, lett vesztette. Az er
lkeimben mig ksrt a McAuliffe desanyjnak arcra kil dbbenet, ahogy lnya
hallt nzi fenn az gen.
BEVEZETS 15
A Challenger azrt robbant fel, mert a forr gzok kiszktek a hibs gyorstrakta
burkolatnak repedsein, s felhevtettk a kls zemanyagtartlyt. A folykony
hidrognt tartalmaz ftartly alja sztrepedt, s lngra lobbantotta az zemanyagot,
aminek a hajtereje nekicsapta a tartlyt a felette lev folykonyoxign-tartlynak.
A gyorstrakta levlt a hts tmasztkrl, megperdlt az ells tmasztk krl,
s az orra kilyukasztotta az oxigntartlyt. A rendellenes irnyban hat erk a jval
1,5 mach felett mozg egsz rsiklt szembefordtottk a lgrammal, s az aerodi
namikai erhatsok pillanatok alatt apr darabokra tptk a jrmvet.
A gyorstrakta kr alak szelvnyei kztt kt krkrsen egymsba gyazott,
szintetikus gumibl kszlt O-gyr kapott helyet. Amikor a szelvnyeket sszehe
gesztettk, az 0-gyrknek ssze kellett nyomdniuk, olyan szoros tmtst kpezve,
amelyen a kipufoggzok nem kpesek thatolni.
A fellvs eltti este azonban az indtllsan -8 Celsius fokra sllyedt a hmr
sklet, ami az O-gyrk szmra megengedett legalacsonyabb hmrskletnl 12,
a korbbi indtsoknl mrt legalacsonyabb hmrskletnl pedig 18 fokkal volt alacso
nyabb. Ennek kvetkeztben az O-gyrk tl merevv vltak ahhoz, hogy tkletesen
elzrjk a forr gzok tjt. A gyorstrakta begyjtsakor a gyorsan felgyleml forr
gzok lksszer nyomst gyakoroltak a rakta burkra, ami kitgult, s laztott az
0-gyrkre nehezed nyomson. Az O-gyrk merevsge azonban megakadlyozta,
hogy a gyrk kitgulva tovbbra is szorosan zrj anak, ezrt a forr gzok egy rsze
kiszivrgott, s egy 70 fokos vet elprologtatott az 0-gyrkbl.
A gyorstraktt tervez Morton Thiokol mrnkei tudtk, hogy gondok vannak
az O-gyrkkel, s mr ht vvel korbban jelentettk ezt a feletteseiknek, illetve
a NASA-nak. Az O-gyrk a korbbi indtsok sorn is hasonl srlseket szenved
tek, de nem akkort, ami katasztrft okozott volna. Minl hidegebb volt az id, an
nl nagyobb volt a srls. A mrnkk kidolgoztak egy megoldst a problmra, de
a hiba tnyleges kijavtsa azta is vratott magra.
A mrnkk gyantottk, hogy az O-gyrk hideg hatsra tl merevv vlhat
nak, s azt is tudtk, hogy a ChaHengert hidegebb idben tervezik elindtani, mint
brmikor korbban - radsul a mrt hmrskletek mr jcskn a veszlyesen ala
csony tartomnyba estek. Rviden: a mrnkk tisztban voltak vele, hogy az indts
tl kockzatos. Nem is ltek ttlenl: figyelmeztettk az illetkeseket, s jl hallha
tan megnyomtk a vszcsengt. Nyomatkosan felszltottk a Thiokolt s a NASA-t,
hogy halasszk el a fellvst. Mindssze pr rval az indts eltt is volt egy vszrte
kezlet, ahol a mrnkk bemutattk a rendelkezskre ll legpontosabb adatokat, til
takoztak, dhngtek, s gyzkdtk az illetkeseket. k azonban vgl figyelmen
kvl hagytk a tiltakozsukat.
Amikor elrkezett a fellvs ideje, a mrnkk kz l nhnyan nem voltak hajlan
dak nzni a kzvettst, mert attl fltek, hogy az rsikl felrobban a kilvllv-
16 BEVEZETS
nyon. Ahogy azonban a Challenger kecsesen az gbe emelkedett, megknnyebbltek
Pillanatokkal a robbans eltt, amikor a jrm elrte a Mach l-es sebessget, az egyi
kk azt mondta:
"
egy hajszlon mlt
"
.
A figyelmeztetsek, a tiltakozs s a mrnkk knyrgse ellenre a vezetk meg
voltak rla gyzdve, hogy nekik van igazuk. Azt hittk, a mrnkk eltlozzk a ve
szlyt. Nem hittek az eljk trt adatoknak, s ktsgbe vontk a mrnkk kvet
keztetseit. A hatalmas pnzgyi s politikai nyoms miatt az indts mellett dntt
tek. Azt remltk, hogy minden rendben lesz.
Nem csak ostobk voltak, hanem egyenesen bnt kvettek el. Ht ember lete s
nemzedkek hite az rutazs jvjben trt derkba azon a fagyos reggelen, csak
azrt, mert k a sajt szakrt ik szava helyett a sajt remnyeikben s megrzseikben
bztak. Olyan dntst hoztak, amelyet nem lett volna joguk meghozni. Elbitoroltk
azoknak a jogt, akik a valdi tuds birtokban voltak: a mrnkkt.
De terheli-e felelssg a mrnkket is? k ktsgkvl azt tettk, amit tennik
kellett. Tjkoztattk a feletteseiket, s hatrozottan killtak a vlemnyk mellett.
Maradktalanul betartottk a hivatali utat, s minden lehetsges csatornn keresztl
figyelmeztettk az illetkeseket. Megtettk, amit lehetett, a rendszeren bell, a vezetk
azonban fellbrltk ket. gy tnik teht, ket nem lehet okoini a tragdirt.
Nha azonban eltndm, hogy lmatlanul forgoldnak-e jszaka, Christa McAuliffe
anyjt ltva maguk eltt, s azt kvnjk-e, brcsak felhvtk volna a legnagyobb t
vcsatornkat.
KTETNKRL
Ez a knyv a professzionlis szoftverfejlesztsrl szl, s szmos gyakorlati tancsot
tartalmaz, az albbihoz hasonl krdsekre igyekezve vlaszt adni:
o Ki tekinthet profi szoftverfejlesztnek?
o Hogyan viselkedik egy profi?
o
Hogyan kezeli egy profi a konfliktusokat, hogyan birkzik meg a szaros ha
tridkkel s az rtetlenked felettesekkel?
o Mikor s hogyan kell nemet mondania egy profinak?
o Hogyan birkzik meg egy profi a nyomssal?
A ktet gyakorlati tancsai mgtt ugyanakkor egy hozzlls rhet tetten, amely
az szintesgre, a tisztessgre, az nbecslsre s a bszkesgre pl. A professzion
lis hozzlls azt jelenti, hogy hajlandak vagyunk elfogadni annak a szrny fele
lssgt, hogy egyszerre vagyunk ktkezi szakmunksok s tervezmrnkk. Ennek
BEVEZETS 17
a felelssgnek rsze, hogy pontosan s tisztn dolgozzunk, megfelelen kommuni
kljunk, relis elrejelzseket adjunk, kpesek legynk beosztani az idnket, s a koc
kzatakat vllalva nehz dntseket is magunkra tudjunk vllalni.
Ezen fell azonban mg valami hozztartozik a felelssghez - valami, ami ijeszt
lehet. Tervezmrnkknt olyan mly ismeretekkel rendelkeznk a rendszereinkrl
s a programjainkrl, amilyenekkel egyetlen menedzser sem rendelkezhet. Ez a tuds
pedig rnk ruhzza a cselekvs felelssgt.
l RODALOMJEGYZK
[McConnell87]: Malcolm McConnell: Challenger f Major Malfunction'. New York,
NY, Simon & Schuster, 1987.
[Wiki-Challenger]: "Space Shuttle Challenger disaster"
http://en.wikipedia. org/wiki/Space_Shuttle_Challenger_disaster
KSZNETNYILVNTS
Plyafutsom sorn szinte mindig msokkal egyttmkdve dolgoztam. Br voltak
sajt lmaim s vgyaim, valahogy mindig talltam valakit, akivel kzs clokon
osztoztunk. Ebbl a szempontbl kicsit gy rzem magam, mint egy Sith-nagyr,
akik
"
mindig ketten vannak
"
.
Az els professzionlisnak tekinthet kzs munkmban John Marchese volt
a partnerer - 13 vesen. Azt terveztk, hogy szmtgpeket ptnk - n voltam az
sz, pedig a kz: megmutattam neki, hov forrassza a drtoka t, pedig megcsinlta.
Megmutattam, hov ptsen be egy relt, pedig beszerelte. Nagyon j mulatsg volt,
s tbb szz rt tltttnk el vele. Nhny kifejezetten impozns trgy is kikerlt
a keznk all, amelyekhez relket, gombokat, izzkat, st mg egy telexgpet is fel
hasznltunk Termszetesen egyik sem csinlt semmit, de nagyon hatsos ltvnyt
nyjtottak, s kemnyen dolgoztunk rajtuk. John, ksznml
A kzpiskola els vben, nmet rn ismertem meg Tim Conradot, aki nagy
koponya volt. Amikor vele kzsen fogtunk szmtgpek ptsbe, volt az agy,
s n lettem a kz. Tle tanultam meg az elektronika alapjait, s ismertetett meg
a PDP-8-cal. Vele mr igazi, mkdkpes, 18 bites elektronikus binris szmolg
pet ptettnk egyszer elemekbl, amely tudott sszeadni, kivonni, szorozni s osz
tani. Htvgn, illetve a tavaszi, nyri s karcsonyi sznetekben vgig ezen dolgoz
tunk megszllottan, s egy v alatt kszltnk el vele. Vgl azonban nagyon klasszul
mkdtt. Tim, ksznml
Tim s n megtanultuk, hogyan kell szmtgpet programozni. Ez 1968-ban nem
volt knny, de neknk sikerl t. Beszereztnk nhny knyvet, tbbek kztt a PDP-8
KSZNETNYILVNTS 19
assemblerrl, a Fortranrl, a Cobolrl s a PL/l-rl, s rongyosra olvastuk ket. Olyan
programokat rtunk, amelyeknek a futtatsra eslynk sem volt, mert nem volt sz
mtgpnk, amelyhez hozzfrhettnk volna. Ettl fggetlenl megrtuk ket, mert
imdtuk a programozst.
A kzpiskola msodikban szmtgpes tanfolyamot indtott. Egy ASR-33-as te
lexgpet kapcsoltak ssze egy llO baudos betrcszs modemmel, s az Illinois
Institute of Technology Univac ll08-as idosztsos rendszern kaptak egy fikot.
Lnyegben az els pillanattl kezdve Tim s n kezeltk a gpet - senki ms nem
mehetett a kzelbe.
A mademcsadakozs ltrehozshoz fel kellett venni a telefont, s trcszni a meg
felel szmot, majd amikor az ember meghallotta a tloldalon lev modem spolst,
meg kellett nyomni az
"
orig
"
gombot a telexgpen, hogy a kezdemnyez modem is
spolni kezdjen. A kagylt ez utn vissza kellett tenni, s ltrejtt az adatkapcsolat
A telefontrcs t lelakatoltk, s csak a tanroknak volt kulcsa a lakathoz. Ez azonban
nem szmtott, mert kidertettk, hogy brmilyen szmot trcszni lehet a villa gyors
nyomogatsvaL Dobosknt elg j temrzkkel s reflexekkel rendelkeztem, gy ke
vesebb mint 10 msodperc alatt trcszni tudtam a modemet a lelakatolt telefonon.
A szmt gplaborban kt telexgp llt: az egyik az l kapcsolathoz, a msik a kap
csolat nlkli munkhoz. A dikok mindkettn programokat rtak. A programokat
a telex billentyzetn gpeltk be, a gp pedig minden billentyletst lyukszalagra
rgztett. A dikok a programjaikat egy figyelemremlt an sokoldal rtelmezett nyel
ven, liTran-ban rtk, a lyukszalagjaikat pedig egy kosrba tettk a telexgpek mellett.
Iskola utn Tim s n trcsztuk a szmtgpet (termszetesen villatapogatssal),
betltttk a lyukszalagokat az liTran-ktegel rendszerbe, majd letettk a telefont.
Mivel a gp msodpercenknt 10 karaktert tudott beolvasni, ez nem ment tl gyorsan.
gy egy ramlva visszamentnk, s kinyomtattuk a programokat, megint csak m
sodpercenknt 10 karakteres sebessggel. A telexgp nem lapokat nyomtatott, gy
nem vlasztotta szt a dikok programjait, csak kinyomtatta azokat egyms utn, s
neknk kellett sztvgnunk a paprt ollval. A lyukszalagokat s a kinyomtatott prog
ramokat aztn gemkapoccsal sszetztk, s beletettk a
"
kimeneti
"
kosrba.
Tim s n igazi mesterei voltunk ennek. Mg a tanrok is bkn hagytak minket,
amikor a laborban voltunk. Az munkjukat vgeztk el, s k tudtk ezt. Soha nem
krtek meg r, hogy csinljuk, nem adtak r engedlyt, s nem adtk oda a lakatkul
csot. Mi csak bekltztnk a laborba, k meg kikltztek, s a legkevsb sem fogtk
szarosan a przt. Ksznet matektanraimnak Mr. McDermitnek, Mr. Fogelnek s
Mr. Robiennek!
Miutn a dikok hzi feladatval vgeztnk, tbbnyire jtszottunk. Egyik progra
mot rtuk a msik utn, amelyek mindenfle rlt dolgot mveltek, pldul krket
s parahalkat rajzoltak ASCII-karakterekbl lyukszalagra. Brown-mozgsi (vlet
lenplya-) s vletlensz-elllt programokat ksztettnk, s kiszmtottuk az 50
20 KSZNETNYILVNTS
faktorilist az utols szmjegyig. rkat tltttnk prograrak kitlsvel, majd
azzal, hogy mkdsre brjuk ket.
Kt vvel ksbb Tim, haverunk, Richard Lloyd, s n, programozi llst kaptunk
az Illinois llambeli Lake Bluff ban szkel ASC Tabulating-nL Tim s n csupn 18
vesek voltunk akkor. gy dntttnk, hogy a fiskola idpocskols-mirt ne kezd
hetnnk meg rgtn a karriernket? Az ASC Tabula ting-nl ismertem meg Bill Hohrit,
Frank Rydert, Big Jim Carlint s John Millert, akik lehetsget adtak nhny ifjoncnak,
hogy megtanul jk, mirl is szl egy hivatsos programoz lete. Nem volt mindig kel
lemes lmny, de nem is volt teljesen haszontalan, mert sokat tanultunk belle. Mind
nyjuknak - s fleg Richardnak, aki a csapat lelke volt -ksznettel tartozom.
Miutn 20 vesen kigve otthagytam a cget, egy ideig fnyrkat javtottam a s
goromnl, de annyira bna voltam, hogy muszj volt kirgnia. Ksz, W es!
gy egy vvel ksbb kiktttem az Outboard Marine Corporation-nl. Addigra
meghzasodtam, s mr egy gyerek is tban volt. k is kirgtak John, Ral ph s Tom,
ksznm!
Ezt kveten a Teradyne-hoz kerltem, ahol megismertem Russ Ashdownt, Ken
Findert, Bob Copithorne-t, Chuck Studeet s CK Srithrant (akit ma mr Kris Iyernek
hvnak). Ken volt a fnkm, Chuck s CK pedig a haverjaim. Nagyon sokat tanultam
tlk. Ksz, fik!
Aztn ott volt Mike Carew. A Teradyne-nl rkmozg prost alkottunk, s tbb
rendszert is rtunk egytt. Ha valakinek srgsen kellett valami, mindig Bobhoz s
Mike-hoz fordult. Jl szrakoztunk egytt. Ksz, Mike!
Jerry Fitzpatrick szintn a Teradyne-nl dolgozott. A
"
Dungeons & Dragons
"
sze
repjtk-partikrl ismertem, de a munkban is hamar sszecsiszoldtunk. Egy Com
modore 64-esen rtunk egy szaftvert a D&D-jtkosoknak,
"
The Electronic Recep
tionist
"
cmen pedig j program fejlesztsbe kezdtnk a Teradyne-nL vekig
dolgoztunk egytt, s Jerry azta is j bartom. Ksz, Jerry!
A Teradyne egy vre Angliba kldtt, ahol Mike Kergozou lett a munkatrsam.
Egy csom kzs tletnk volt, br ezek tbbsge inkbb a kerkprozshoz s a kocs
mkhoz kapcsoldott. Ettl fggetlenl Mike elktelezett programoz volt, aki na
gyon gyelt a minsgre, s fegyelmezetten dolgozott ( br ezt lehet, hogy vitatn).
Ksznm, Mike!
1987-ben, Anglibl visszatrve Jim Newkirkkel kezdtem j terveket szvgetni.
Nhny hnap klnbsggel mindketten otthagytuk a Teradyne-t, s csatlakoztunk
egy akkor indul cghez, a Clear Communications-hz. veket tltttnk ott kem
nyen melzva, abban a remnyben, hogy milliomosok lesznk, ami persze nem k
vetkezett be. A tervezgetst ennek ellenre nem hagytuk abba. Ksz, Jim!
Vgl kzsen megalaptottuk az Object Mentort. Jim a legszintbb, legfegyel
mezetebb s legcltudatosabb szemly, akivel valaha szerenesm volt dolgozni. Annyi
mindent tanultam tle, hogy itt fel sem tudnm sorolni. Ezt a knyvet neki ajnlom.
KSZNETNYILVNTS 21
Rajtuk kvl oly sokakkal szttem kzs terveket, vagy dolgoztam egytt, s oly
sokan voltak hatssal a szakmai elmenetelemre, hogy itt csak nhnyukat tudom
felsorolni: Lowell Lindstrom, Dave Thomas, Michael Feathers, Bob Koss, Brett Schuchert,
Dean Wampler, Pascal Roy, JeffLangr, James Grenning, Brian Button, Alan Francis,
Mike Hill, Eric Meade, Ron Jeffries, Kent Beck, Martin Fowler, Grady Booch. Min
denkinek ksznml
Termszetesen a legfontosabb partner az letemben szeret felesgem, Ann Marie.
20 vesen vettem el, hrom nappal a 18. szletsnapja utn. 38 ve hsges trsam,
irnytm, szerelmem s letem rtelme. Remlem, mg legalbb jabb ngy vtizedig
egytt maradunk.
Ma mr a gyermekeimmel dolgozom egytt s kovcsalom a terveket. Legidsebb
lnyommal, Angelval szoros munkakapcsolatban llok: az n tykanym s rettent
hetetlen asszisztensem, aki gyel r, hogy soha ne feledkezzek meg egy tallkozrl
vagy egy gretrl. Fiammal, Micah-val, aki az 8thlight.com alaptja, s sokkal jobb
zleti rzkkel rendelkezik, mint amilyen nekem valaha is volt, kzs zleti terveink
vannak. Legjab b vlallkozsunk, a cleancoders.com nagyon izgalmasnak grkezik!
Legkisebb fiam, Justin nemrg llt munkba az 8th Lightnl, vagyis Micah-val
dolgozik, Angela hga, Gina pedig a Honeywell vegyszmrnke. Velk mg csak
most kezd komolyra fordulni a tervezgets.
Senkitl nem tanulhatunk tbbet az letben, mint a gyerekeinktL Srcok, ksz
nml
A SZERZRL
Robert C. Martin (
"
Unde Bob
"
, vagyis
"
Bob bcsi
"
) 1970 ta programoz. Alaptja
s elnke a nagy tapasztalattal rendelkez szoftverfejlesztket s -menedzsereket t
mrt, nemzetkzi Object Mentor Inc. cgnek, amelynek szakterlete a vllalati pro
jektmenedzsels. Az Object Mentor nagyvllalatoknak nyjt tancsadi, oktatsi s
tovbbkpzsi szolgltatsokat a munkaszervezs, valamint az objektumkzpont
szoftvertervezs terletn, szerte a vilgon.
Martinnak tbb tucat cikke jelent meg szakmai folyiratokban, s rendszeres el
adja a nemzetkzi konferenciknak s vsroknak.
A SZERZRL 23
Tbbek kztt az albbi kteteket rta vagy szerkesztette:
Designing Object Oriented C++ Applications U sing the Booch Method
Patterns Languages of Program Design 3
More C++ Gems
Extreme Programming in Practice
Agile Software Development: Principles, Patterns, and Practices
UML for Java Programmers
Clean Code (Tiszta kd, Kiskapu, 2010)
A szaftverfejleszts egyik legnagyobb szaktekintlyeknt Martin hrom vig volt
a The C++ Report fszerkesztje, illetve tlttte be elszr az Agi le Alliance elnki
tisztt is.
Robert emellett az Unde Bob Consulting LLC alaptja; fival, Micah Martinnal
egytt pedig trsalaptja a The Clean Coders LLC-nek.
KTELEZ BEVEZETS
(Nem tugrani, szksg lesz r!
Felttelezem, hogy az Olvas azrt vette a kezbe ezt a knyvet, mert szmtgp
programoz, s profi szeretne lenni. Ez gy helyes. A szakmnknak get szksge
van igazi szakemberekre.
n is programoz vagyok, mghozz 42 ve1, s ez alatt a 42 v alatt - ki merem
jelenteni- mindent lttam. Volt, hogy kirgtak, volt, hogy kitntettek. Voltam cso
portvezet, menedzser, kzlegny, de elnk-vezrigazgat is. Dolgoztam brilins
programozkkal s csigkkaP egyarnt. Dolgoztam cscstechnikj begyazott
l Csak semmi pnik!
2 Ismeretlen eredet szakkifejezs.
KTELEZ BEVEZETS 25
szoftver- s hardverrendszereken s vllalati brszmfejt programokon. Programoz
tam COBOL, FORTRAN, BAL, PDP-8, PDP-11, C, C++, Java, Ruby, Smalltalk s
szmtalan ms nyelven s rendszeren. Dolgoztam megbzhatatlan, semmirekell
lskdkkel s elktelezett profikkaL Ez utbbiakrl szl ez a knyv.
Ennek a knyvnek a lapjain megksrlem meghatrozni, hogy mit jelent profesz
szionlis programoznak lenni, s lerom, milyen hozzllst s viselkedst tartok n
profinak.
Hogy honnan tudom, milyen a profi hozzlls s viselkeds? Onnan, hogy a sajt
kromon tanultam meg. Amikor az els programozi munkmat kaptam, a
"
profi
"
lett volna az utols sz, amellyel brki is illetett volna.
Mindez 1969-ben trtnt. 17 ves voltam. Apm addig jrt egy ASC nev helyi
vllalkozs nyakra, amg fel nem vettek rszids programoznak. (Igen, az apm
kpes volt ilyesmikre. Egyszer lttam, hogy kill az tra egy gyorsan kzeled aut
el kinyjtott kzzel, s meglljt parancsol neki. Az aut tnyleg megllt. Senki nem
mert nemet mondani apmnak.) A cg azt a feladatot adta nekem, hogy vegyem be
magam abba a szobba, ahol az IBM-szmtgpek hasznlati utastsait tartjk, s
frisstsem ket. Tbb v nyi frisstst kellett bernom a kziknyvekbe. Itt tallkoztam
elszr azzal a mondattal, hogy
"
Ezt az oldalt szndkosan hagytuk resen
"
.
Nhny napnyi kziknyvfrissts utn a fnkm megkrt, hogy rjak egy egy
szer Easycode-programot. Ettl felvillanyozdtam, mert korbban mg soha nem
rtam programot igazi szmtgpre. Az Autocoder-knyveket ugyanakkor addigra
mr magamba szvtam, gy volt valamilyen halvny elkpzelsem arrl, hogy hogyan
fogjak neki.
A programnak csak annyi volt a dolga, hogy rekordokat olvasson be egy szalagr l,
s jra cserlje azoknak a rgi azonostit. Az j azonostkl-tl indultak, s minden
rekordnl 1-gyel nttek. Az j azonostval elltott rekordokat aztn ki kellett rni
egy msik szalagra.
A fnkm egy piros s kk lyukkrtykkal megpakolt polchoz irnytott. Kp
zeljnk el 50 krtyapaklit egyms tetejn, amibl 25 piros s 25 kk- na, gy nztek
ki a lyukkrtyaktegek Piros s kk cskok sorakoztak egyms utn, s mindegyik
csk gy 200 krtyt jelentett. Egy-egy csk annak a szubrutin-knyvtrnak a forrs
kdjt tartalmazta, amelyet a programozk ltalban hasznltak. A programozk
egyszeren levettk a fels kk vagy piros kteget, gyelve r, hogy ne fogjanak hozz
egy msik sznt, aztn hozzcsaptk azt a programjukat tartalmaz kteghez.
A programomat kdolrlapokra kellett rnom. A kdolrlapok nagy, ngyszg
letes paprlapok voltak, amelyeket 25 sorra s 80 oszlopra osztottak. Mindegyik sor
egy-egy krtyt jelkpezett. A kdolrlapra nyomtatott nagybetvel s 2-es vastag-
3 Az Easycodera Honeywell H200-as szmtgp assemblere volt, hasonl az IBM 1401- esek Auto
coderh ez.
26 KTELEZ BEVEZETS
sg ceruzval kellett rni. Az utols 6 oszlopba minden sorban egy sorozatszm ke
rlt, szintn 2-es ceruzval. A sorozatszmok ltalban tzesvel nvekedtek, hogy
ksbb mg be lehessen szrni jab b krtykat.
A kdolrlapok aztn a krtyalyukasztkhoz kerltek. Az emltett cgnl tbb
tucat nt alkalmaztak, akik fogtk a kdolrlapokat a nagy
"
be
"
kosrbl, s
"
be
gpeltk
"
ket a lyukasztgpbe, ami nagyon hasonltott egy rgpre, csak ppen
nem paprra rt karaktereket, hanem krtykat lyukasztott ki a megfelel helyeken,
Msnap a krtyalyukasztk az irodai bels kzbestn keresztl visszajuttattk
hozzm a programot. A lyukkrtykat beletekertk a kdolrlapjaimba, s a kteget
gumival fogtk ssze. tnztem a krtykat, lyukasztsi hibk utn kutatva, de nem
talltam egyet sem, ezrt fogtam a szubrutin-knyvtr krtyaktegt, hozztettem
a programom kteghez, s az egszet felvittem a szmtgp-kezelknek
A szmtgpek egy lezrt, lgkondicionlt szabban voltak, s a kbeleik a meg
emelt padlzat alatt futottak. Bekopogtam, az opertor zord tekintettel tvette tlem
a programkteget, s beletette egy msik
"
be
"
kosrba, ami a szmtgpteremben
llt, azzal, hogy ha majd odajutnak, lefuttatjk
Msnap visszakaptam a kteget a futtats eredmnyt tartalmaz paprba csoma
golva s gumival tktve. (Akkoriban nagyon sok gumit hasznltunk!)
Kibontottam a csomagot, s lttam, hogy a programomat nem sikerlt lefordtani.
A papro n szerepl hibazeneteket a legnagyobb igyekezettel sem tudtam rtelmezni,
ezrt a fnkmhz fordultam, aki tnzte ket, drmgtt valamit a bajusza alatt,
gyorsan jegyzeteket firkantott a paprra, fogta a programktegemet, s intett, hogy
kvessem.
Felvitt a lyukasztszobba, s lelt egy szabad lyukasztgphez. Egyesvel kijav
totta a hibs lyukkrtykat, s hozzjuk adott mg egy-kettt. Kzben gyorsan ma
gyarzta, hogy ppen mit csinl, de nemigen tudtam kvetni.
Az j kteget felvitte a szmtgpterembe, bekopogtatott, mondott nhny varzs
szt az egyik opertornak, aztn intett a fejvel, hogy kvessk az illett. Az opertor
bekapcsolta a krtyaolvast, s betlttte a kteget, mikzben mi figyeltk. A krtyk
prgtek, a nyomtat kattogott, s kszen is voltunk. A programom mkdtt.
Msnap a fnkm megksznte a kzremkdsemet, s felmondott AzASC-nl
nyilvn nem reztk gy, hogy lenne idejk ptyolgatni egy 17 ves kezdt.
Az AS C-vel val kapcsolatom azonban mg messze nem rt vget. Nhny hnap
pal ksbb teljes idej llst kaptam tlk: jszakai mszakban kellett hlzaton k
vli nyomtatkat kezelnem, amelyek kukba val leveleket nyomtattak ki szalagon
trolt lenyomatokbL A feladatom az volt, hogy paprt tltsek a nyomtatkba; betlt
sem a szalagokat a szalagos meghajtkba; elhrtsam az akadlyt, ha elakad a papr;
egybknt meg nzzem, ahogy a gpek dolgoznak.
Eljtt az 1970-es v. A fiskola szba sem jhetett, de nem is vonzott klnseb
ben. Mg mindig folyt a vietnami hbor, s a karpuszokon kosz uralkodott. Inkbb
KTELEZ BEVEZETS 27
faltam tovbb a knyveket a COBOL-rl, a Fortranrl, a PL/l-rl, a PDP-8-rl s az
IBM 360 AssemblerrL Azt terveztem, hogy az iskolt kikerlve, ha trik, ha szakad,
megcspek egy programozi llst.
Tizenkt hnappal ksbb elrtem a clom: teljes llsba kerltem, mint progra
moz- az ASC-nl. n s kt j bartom, Richard s Tim- szintn 19 vesek- egy
msik, ugyancsak hrom programozbl ll csapattal dolgoztunk kzsen; egy va
ls idej szmizrendszert rtunk a fuvarozk egyik szakszervezetnek assembler
nyelven, egy Varian 620 i gpen. Egyszer miniszmtgp volt, felptsben hasonl
a PDP-8-hoz, azzal az eltrssel, hogy 16 bites szavakat s kt regisztert hasznlt.
Minden kdsort ezen a rendszeren rtunk meg. Amikor azt mondom, hogy min
den kdsort, azt valban gy rtem, hogy minden egyes sort: az opercis rendszert,
a megszaktskezel ket, a kimeneti s bemeneti illesztprogramokat, a lemezek fjl
rendszert, a memriacserlt, st mg az thelyezhet programszerkesztt is. s per
sze a teljes alkalmazskdot Mindezt 8 hnap alatt ksztettk el, heti 70-80 rs
munkval, hogy tartani tudjuk a pokolian szaros hatridt Az vi fizetsem 7200
dollr volt.
Leszlltottuk a rendszert. Aztn felmondtunk Elzetes figyelmeztets nlkl,
rossz szjzzel. jt nappall tve dolgoztunk, s leszlltottunk egy sikeres rendszert,
a cg pedig ki akarta szrni a szemnket egy 2%-os fizetsemelssel. gy reztk,
becsaptak s kihasznltak minket. Kzlnk tbbeknek mshol is volt munkja, gy
k egyszeren elkszntek a cgtL
n s az egyik bartom azonban ms, meglehetsen szerencstlen mdjt vlasz
tottuk a felmondsnak Beviharzottunk a fnk irodjba, s egytt vgtuk a kpbe
a felmondsunkat N agyon jles rzs volt - egy napig.
Msnap belmhastott a felismers, hogy 19 vesen, iskolai vgzettsg nlkl, mun
kanlkli lettem. Jelentkeztem nhny programozi llsra, de az llsinterjk nem
sikerltek valami jl, ezrt ngy hnapig a sgorom fnyrjavt mhelyben dol
goztam. Sajnos pocsk fnyrszerelnek bizonyultam, ezrt a sgorom vgl kny
telen volt megvlni tlem. Mly depressziba zuhantam.
Minden jjel hajnali 3-ig bren voltam, tmtem magamba a pizzt, s rgi szrny
flmeket nztem a szleim vzzn eltti, antenns fekete-fehr tvjn. Taln csak
a szellemkpnek volt egynisge ezekben a filmekben. Aztn dlutn l-ig gyban
maradtam, mert nem akartam szembenzni a sivr napjaimmaL Feliratkoztam egy
matektanfolyamra a helyi tovbbkpz kzpontban, aztn megbuktam a vizsgn.
Sznalmas roncs lett bellem.
Anym komolyan elbeszlgetett velem, s lehordott, amirt elszrom az letem,
amirt olyan ostoba voltam, hogy felmond tam, mikzben nem volt a lthatron ms
munka, amirt ilyen tetrlisan csinltam, s amirt a bartommal egytt hagytuk
ott az ASC-t. Felhvta a figyelmemet, hogy soha nem szabad gy felmondani, hogy
mg nincs j helyem, s hogy mindig higgadtan, nyugodtan s egyedl kell beadni
28 KTELEZ BEVEZETS
a felmondst. Azt mondta, fel kellene hvnom a fnkmet, s vissza kellene kny
rgnm magam. Azt mondta: "Ideje lenne egy kis alzatot tanulnod."
A tizenkilenc ves srcok nem arrl hresek, hogy alzatot akarnnak tanulni, s
ez all n sem voltam kivtel. A krlmnyek azonban megtpztk a bszkesgemet.
Vgl felhvtam a fnkt, s trden llva knyrgtem neki. Mkdtt a dolog. vi
6800 dollros fizetsrt hajland volt visszavenni, n pedig boldogan elfogadtam az
ajnlatot.
jabb tizennyolc hnapot tltttem el ott, igyekezvn megbecslni magam, s bi
zonytani, hogy rtkes alkalmazott vagyok. Jutalmul ellptetst s fizetsemelst
kaptam, s egy biztos llsnak rlhettem. Az let ismt szp volt. Amikor vgl ki
lptem a cgtl, bartsggal vltunk el, s mr a zsebemben volt egy jobb llsajnlat
Az Olvas most azt gondolhatja, hogy megtanultam a leckt, s igazi profi lett
bellem. Nos, ettl mg messze voltam- ez mg csak az els lecke volt abbl a sokbl,
amit az idk sorn meg kellett tanulnom. Az elkvetkez vekben elvesztettem egy
llst, mert hanyag voltam, s llandan lekstem a ltfontossg hatridket, s
majdnem kirgtak egy msikbl, mert vletlenl bizalmas informcikat szivrog
tattam ki egy gyflnek. Volt, hogy tvetter egy siralmasan ll projekt vezetst, s
belelltottam a fldbe, mert nem krtem segtsget, pedig tudtam, hogy szksg
lenne r. Mskor aggresszvan vdtem a mszaki dntseimet, annak ellenre, hogy
homlokegyenest szembementek a megrendel ignyeivel, vagy felvettem egy tkle
tesen alkalmatlan szemlyt, s ezzel hatalmas kockzatot varrtam a munkaadm
nyakba. s ami a legrosszabb, miattam rgtak ki kt embert, mert alkalmatlan vol
tam a vezetsre.
Ez a knyv a sajt hibim gyjtemnynek s a bneim lajstromnak tekinthet,
amely egyben tmutatknt szolgl ahhoz, hogy az Olvas elkerlje, hogy ugyan
ezekbe a hibkba essen.
l. FEJEZET
PROFIZMUS
"
Nevess, Curtin, regi, mert a termszet,
a sors, vagy az r, ahogy akarod,
trft ztt velnk! De brki is volt, remek a humorrzke!"
- Howard, "A Sierra Madre kincse"
Szval profi szaftverfejleszt szeretnl lenni? Felemelt fejjel, bszkn akarod hirdetni
a vilgnak, hogy
"
Profi vagyok!"? Azt szeretnd, ha az emberek tisztelettel tekintennek
PROFIZMUS 31
rd, s hdolnnak neked? Azt szeretnd, hogy az anyk tged lltsanak kvetend
pldaknt a gyermekeik el? Mindezt akarod egyszerre?
VIGYZZ, MIT KRSZ!
A profizmus ktl fegyver. Termszetesen bszkesggel tlti el az embert, ugyanak
kor felelssget s elszmoltathatsgot is jelent. A kett kz a kzben jr. Nem bsz
klkedhetnk olyasmivel, amirt nem vllalunk felelssget.
Sokkal knnyebb amatrnek lenni. Az amatrknek nem kell felelssget vllalniuk
azrt, amit csinlnak- az a munkaadjukra hrul. Ha egy amatr hibzik, a munkaadja
takartja el a mocskot, ha viszont egy prof kvet el hibt, ezt neki kell megtennie.
Mi trtnik, ha egy hiba elkerli a programoz figyeimt az egyik modulban, s
ez a cgnek 10 OOO dollrjba kerl? Az amatr csak megvonja a vllt, mondvn,
"
Megesik az ilyesmi
"
, s mr rja is a kvetkez modult. A profinak viszont egy esek
ket kell kitltenie 10 OOO dollrrl a cg szmra.1
Ugye ms rzs, ha a te pnzedrl van sz? Egy profinak viszont mindig ezt kell
reznie - ez a profizmus lnyege. A profizmus ugyanis a felelssg vllalsrl szl.
FELELSSGET VLLALNI
Elolvastad a bevezett, igaz? Ha nem, lapazz vissza, s tedd meg most, mert a beve
zet adja meg a kerett mindannak, amirl a knyvben sz lesz.
Engem az tantott meg arra, hogy mit jelent felelssget vllalni, hogy tbbszr is
szembesltem a felelssg elhrtsnak kvetkezmnyeiveL
1979-ben egy Teradyne nev cgnek dolgoztam. n voltam a
"
felels mrnke
"
annak a szoftvernek, amely egy mini- s mikroszmtgp alap rendszert vezrelt,
amely a telefonvonalak minsgt mrte. A kzponti miniszmtgp 300 baudos
brelt, illetve betrcszs telefonvonalakon keresztl tbb tucat kisegt mikrosz
mtgphez csatlakozott, amelyek a mreszkzket vezreltk. A kd teljes egsz
ben assemblerben kszlt.
A megrendelink nagy telefontrsasgok informatikai vezeti voltak, akik egyen
knt 100 OOO vagy mg tbb telefonvonalrt voltak felelsek. A rendszerem nekik se
gtett megtallni s kijavtani a telefonvonalakon jelentkez hibkat s rendellenes
sgeket, mieltt az elfizetk szrevettk volna azokat. Ez cskkentette a kzzemi
ellenrk ltal mrt gyflpanaszok szmt, s gy hatssal volt arra, hogy a telefon-
l Hacsak nem kttt elnys szerzdst a cggel, amelyben levdte magt az ilyen hibkkal szemben.
32 1. FEJEZET
trsasgok milyen djakat szmolhattak fel az elfizetknek Rviden, rendkvl fon
tos rendszerekrl volt sz.
A rendszerek minden jjel lefuttattak egy
"
jszakai rutint
"
, amelynek sorn a kz
ponti miniszmtgp arra utastotta a kisegt mikroszmtgpeket, hogy ellen
rizzenek minden hozzjuk tartoz telefonvonalat. Reggel aztn a kzponti szmt
gp lekrte a hibs vonalak listjt a hiba lersval egytt. A szolgltatsi terletekrt
felels informatikai vezetk ennek a jelentsnek az alapjn osztottk be a szerelket,
hogy javtsk ki a hibkat, mieltt az gyfelek panaszkodni kezdennek.
Egy alkalommal j programvltozatot postztam tbb tucat megrendelnek A
"
pos
tzs
"
itt pontosan a megfelel sz, ugyanis a szaftvert szalagra rtam, s ezeket a sza
lagokat kldtem el az gyfeleknek, akik aztn betltttk rluk a szoftvert, s jrain
dtottk a rendszereikeL
Az j programvltozat kijavtott nhny kisebb hibt, valamint tartalmazott egy
j szolgltatst, amelyet a megrendelk mr rgta kveteltek Meggrtk nekik,
hogy egy bizonyos idpontra leszlltjuk nekik a krt frissts t, de ppen csak sikerlt
elkszlnm vele, hogy hatridre megrkezzen.
Kt nappal ksbb felhvott az egyik mszaki vezetnk, Tom, s azt mondta, hogy
tbb megrendel is panaszkodik, hogy az
"
jszakai rutin
"
nem futott le teljesen, s
nem ksztett nekik jelentst. Megllt bennem az t, mert ahhoz, hogy idben pos
tzhassam a szoftvert, mellztem a rutin tesztelst. A rendszer tbbi szolgltatst
nagyrszt leteszteltem, de a rutin tesztelse rkat vett volna ignybe, engem pedig
szortott a hatrid. A rutin kdjban egyetlen hibajavts sem volt, ezrt biztons
gosnak reztem a teszt elhagyst.
Egy jszakai jelents elvesztse a legkevsb sem volt aprsg. Azt jelentette, hogy
a szerelknek egyszer kevesebb a munkjuk, mskor meg ktszer annyi szakad rjuk,
egyes elfizetk pedig szrevehetik a hibt, s panaszkodhatnak Egyetlen jszaknyi
adat elvesztse elg volt ahhoz, hogy egy terleti vezet felhvja Tomot, s lehordja.
Beizztottam a tesztrendszernket, betltttem az j szoftvert, s elindtottam
a rutint. Tbb rig futott, de aztn hibazenettel lellt. Ha postzs eltt lefuttattam
volna ezt az ellenrzst, a megrendelk nem vesztettek volna adatokat, s a terleti
vezetk nem pirtottak volna r T omra.
Felhvtam Tomot, hogy elmondjam neki, hogy nekem is sikerlt elidznem a hi
bt. Tjkoztatott, hogy szinte az sszes megrendel jelentkezett nla ugyanezzel
a panasszal, s megkrdezte, hogy mikorra tudom kijavtani a hibt. Azt feleltem
neki, hogy fogalmam sincs, de dolgozam rajta, a megrendelk pedig addig is trjenek
vissza a rgi programvltozathoz. Tom nagyon dhs volt, mert ez a megrendelket
ktszeresen is sjtotta: elvesztettek egy egsz jszaknyi adatot, s a begrt j szol
gltatst sem vehettk ignybe.
A hiba okt nagyon nehz volt felderteni. A tesztels tbb rt vett ignybe, s az
els javts nem is mkdtt. A msodik sem. Tbb prblkozsomba-s gy tbb
PROFIZMUS 33
napomba - kerlt kiderteni, hogy mi okozza a hibt, mikzben Tom pr rnknt jra
s jra rmcsrgtt, s nyaggatott, hogy mikor leszek mr ksz. Arrl is gondoskodott,
hogy tisztban legyek vele, milyen leszrsban volt rsze a terleti vezetktl, s mi
lyen knos volt neki azt mondani, hogy tltsk vissza a programot a rgi szalagokrL
Vgl megtalltam a hibt, kipostztam az j szalagokat, s minden visszazkkent
a rgi kerkvgsba. Tom, aki nem volt a felettesem, lehiggadt, s ftylat bortottunk
az gyre. Amikor tl voltunk rajta, a fnkm odajtt hozzm, s azt mondta:
"
Biz
tos vagyok benne, hogy tbbet nem csinlsz ilyet". Egyetrtettem vele.
Utlag belttam, hogy a rutin ellenrzse nlkl feleltlensg volt postzni a szaft
vert. A tesztelst azrt hagytam ki, hogy elmondhassam, hatridre elkszltem
a munkval. Hisgi krdst csinltam az egsz bl. Nem rdekelt sem a megrendel,
sem a munkaadm, csak a sajt hrnevem. Felelsen kellett volna eljrnom, s meg
mondani T omnak, hogy mg nem kszltem el minden teszttel, ezrt nem leszek ksz
idre a szaftverreL Nem lett volna knny, s Tom ennek sem rlt volna, de a meg
rendelk nem vesztettek volna adatokat, s a terleti vezetk nem szrtak volna
le minket.
ELS SZABLY: NE TGY KRT!
De mit is jelent a felelssg vllalsa? Milyen elvekhez kell tartanunk magunkat?
A hippokratszi eskbl merteni nagykpnek tnhet, de van nla jobb forrs? Nem
sszer, hogy egy remnybeli profi els szm clja s felelssge az legyen, hogy
a tudst csak jra hasznlja?
Milyen krt okozhat egy szoftverfejleszt? Tisztn a szaftver szemszgbl nzve,
egyarnt krt tehet a szaftver mkdsben s annak felptsben. Az albbiakban
azt vizsgljuk meg, hogy miknt kerlheted el, hogy te is gy tegyl.
NE TGY KRT A SZOFTVER MKDSBEN!
Nyilvnvalan arra treksznk, hogy az ltalunk ksztett szaftver mkdjn. A leg
tbbnk ppen azrt vlasztotta a programozi plyt, mert egyszer sikerlt valami
mkdkpeset ksztenie, s jra meg jra t szeretn lni ezt az lmnyt. A mk
dkpes szoftver azonban nem csak a mi vgyunk: a megrendelink s a munkaad
ink is azt akarjk, hogy a programjaink mkdjenek, hiszen azrt fizetnek, hogy
olyan programot kapjanak, ami a kvnalmaiknak megfelelen mkdik.
A szaftver mkdsben akkor tesznk krt, amikor hibkat ejtnk a program
ban. Ahhoz teht, hogy profiv vljunk, nem szabad hibkat hagynunk a program
jainkban.
Mr hallom is az ellenvetst: "Vrjunk csak! Ez nem sszer elvrs: a szmtgpes
prograrak tl bonyolultak ahhoz, hogy egyetlen hiba nlkl el lehessen kszteni ket!".
34 1. FEJEZET
Termszetesen igazad van. A szmtgpes prograrak valban tl bonyolultak
ahhoz, hogy egyetlen hiba nlkl el lehessen kszteni ket, de ez sajnos nem mentsg.
Az emberi test is tl bonyolult ahhoz, hogy teljes egszben megrtsk, az orvosok
mgis feleskdnek arra, hogy nem fognak krt tenni benne. Ha k nem hrtjk el
maguktl ezt a felelssget, hogy tehetnnk meg mi?
"
Azt akarod mondani, hogy tkletesnek kell lennnk?
"
-jl hallom a tiltakozst?
Nem, nem azt mondom, hogy a tkletlensgedrt kell felelssget vllalnod.
A kdjaidban termszetesen elfordulnak majd hibk, de ez nem jelenti azt, hogy
nem vagy felels rtk. Az a tny, hogy tkletes szaftvert rni gyakorlatilag lehetet
len, nem ment fel a tkletlensgekrt vllalt felelssg all.
Egy profinak vllalnia kell azt a terhet, hogy felelssgre vonhatjk olyan hibk
miatt, amelyeknek a felbukkansa lnyegben elkerlhetetlen. Teht, kedves profi
nak kszl bartom, az els dolog, amit gyakorolnod kell, a bocsnatkrs. A bo
csnatkrs ugyanakkor szksges, de nem elgsges. Nem teheted meg, hogy egy
szeren jra s jra elkveted ugyanazokat a hibkat. Ahogy egyre tapasztaltabb
leszel a szakmdban, gy kell a hibaszzalkadnak egyre gyorsabban kzeltenie a
nullhoz - soha nem fogja ugyan elrni, de a te felelssged, hogy a lehet legkze
lebb kerljn hozz.
AMINSGELLENRK NEM TALLHATNAK SEMMILYEN HIBT .. Amikor teht kiadsz egy
szoftvert, arra kell szmtanod, hogy a minsgellenrk nem tallnak benne sem
milyen hibt. Rendkvl szakmaiatlan dolog szndkosan gy kldeni egy kdot
minsgellenrzsre, hogy az ember tudja, hogy hibk vannak benne. s mi az, ami
rl tudhatod, hogy biztosan tartalmaz hibkat? Ht az olyan kd, amirl nem tudod
biztosan, hogy hibtlan.
Vannak, akik a minsgellenrzst (QA, Quality Assurance) hasznljk a hibk
elfogsra. Olyan kdot kldenek a minsgellenrknek, amit nem ellenriztek ala
posan. Az ellenrkre bzzk, hogy megtalljk a hibkat, s jelentsk azokat a fejlesz
tknek. Egyes cgeknl mg jutalmazzk is a minsgellenrket annak alapjn, hogy
hny hibt fedeznek fel -minl tbb hibra bukkannak, annl nagyobb jutalomban
rszeslnek.
Hogy ez szrnyen kltsges megolds, ami kros a cgre s a szoftverre nzve is?
Sebaj. Hogy taccsra vgja az temterveket, s alssa a fejlesztcsapat nbizalmt s
vllalkoz szellemt? Sebaj. Hogy egsz egyszeren lusta s feleltlen viselkeds? Kit
rdekel? Pedig olyan kdot tadni a minsgellenrknek, amirl nem tudod, hogy
mkdik-e, mlyen szakmaiatlan, mert megsrti a
"
Ne tgy krt!
"
szablyt.
A minsgellenrk nagy valsznsggel minden programban tallnak hibt,
ezrt kszlj fel arra, hogy elnzst kell krned- aztn prblj rjnni, mirt kerltk
el az ltaluk felfedezett hibk a figyelmedet, s tgy valamit annak rdekben, hogy
a dolog ne ismtldhessen meg.
PROFIZMUS 35
Minden alkalommal, amikor a minsgellenrzs - vagy ami mg rosszabb, egy
felhasznl - valamilyen hibra bukkan, meg kell lepdnd, be kell pccenned, s el
kell tklned, hogy nem hagyod, hogy mg egyszer elforduljon ilyesmi.
TUDNOD KELL, HOGY MKDIK. Honnan tudhatod, hogy a kclod mkdik? Ez kny
ny: teszteld. Teszteid jra. Teszteid keresztl-kasul, a fejtl a farkig.
Tprengsre adhat okot, hogy a kd ilyen mlysg tesztelse tl sok idt ignyel,
neked pedig temterveket s hatridket kell tartanod. Ha minden iddet tesztelssei
tltd, semmi mssal nem fogsz elkszlni. Helyes szrevtel. De mi a megolds?
A tesztek automatizlsa. rj olyan egysgteszteket, amelyeket brmikor vgrehajt
hatsz, s futtasd ezeket olyan gyakran, amilyen gyakran csak tudod.
A kd mekkora rszt kell ezekkel az nmkd egysgtesztekkel ellenrizni?
Tnyleg vlaszolnom kell erre a krdsre? Termszetesen az egszet!
100%-os tesztlefedettsg ajnlok? Nem. Nem ajnlom: me
g
kvetelem. Minden
egyes ltalad rt kdsort ktelez tesztelned. s pont.
Nem tlzs ez? Termszetesen nem. Kdot azrt rsz, hogy vgrehajtsk. Ha vi
szont elvro d, hogy vgrehajtsk, akkor tudnod kell, hogy mkdik, mrpedig errl
csak gy gyzdhetsz meg, ha teszteled a kdot.
A FITNESSE nev nylt forrs projektnek n vagyok az elsdleges fejlesztje s
vezetje. Amikor ezeket a sorokat rom, a FIT N ESSE forrsa mintegy 60 OOO kdsorbl
ll, amibl 26 OOO-et tbb mint 2000 egysgteszt tartalmaz. Az Emma mrse szerint
ez a 2000 teszt a kdnak krlbell a 90%-t fedi le.
Mirt nem magasabb a kd tesztlefedettsge? Mert az Emma nem ltja az sszes
kdsort, ami vgrehajtdik! Meggyzdsem, hogy a tnyleges tesztlefedettsg l
nyegesen magasabb. Hogy 100% lenne? Nem, azt csak megkzelteni lehet, elrni
soha.
Bizonyos kdrszeket termszetesen nem knny ellenrizni, de csak azrt, mert
gy lettek megrva. A megolds az, hogy gy pted fel a kdot, hogy knny legyen
tesztelni. Ezt pedig gy rheted el a legegyszerbben, ha elszr a teszteket rod meg,
s csak utna a kdokat, amelyeknek teljestenik kell a teszteket. Ezt a megkzeltst
hvjk tesztvezrelt fejlesztsnek (TDD, Test Driven Development). A tesztvezrelt
fejlesztsre egy ksbbi fejezetben mg rszletesebben is visszatrnk.
AUTOMATIZLT MINSGELLENRZS . A FITNESSE teljes minsgellenrzsi folya
mata az egysg- s elfogadsi tesztek vgrehajtsbl ll. Ha ezek a tesztek teljeslnek,
leszll thatom a szoftvert. gy a teljes minsgellenrzs krlbell hrom percet vesz
ignybe, s brmikor vgrehajthat.
Igaz, senki nem hal bele, ha a FIT N ESSE-be becsszik egy programhiba, s nem is
veszt senki millikat. Msrszrl azonban a FITNESSE-nek tbb ezer felhasznlja
van, a hibalistja viszont nagyon rvid.
36 1. FEJEZET
Termszetesen lteznek ltfontossg rendszerek, amelyeknl egy rvid automati
zlt teszt nem elgsges annak megllaptshoz, hogy a szaftver kszen ll-e az zembe
helyezsre. Mindazonltal fejlesztknt viszonylag gyors s megbzhat mdszerre van
szksgnk ahhoz, hogy tudjuk, hogy az ltalunk rt kd mkdik, s nem zavarja meg
a rendszer tbbi rszt. Az automatizlt teszteknek teht legalbb azt jeleznik kell,
hogy a rendszer nagy valsznsggel teljesti a minsgi kvetelmnyeket.
NE TGY KART A SZOFTVER FELPrTSBEN!
Egy igazi profi tudja, hogy ostobasg a felpts krra bepteni egy j szolgltatst,
hiszen a struktra az, ami rugalmass teszi a kdot. Ha felldozod a felptst, a jvt
ldozad fel.
Minden szaftverprojekt esetben alapkvetelmny, hogy a szaftver knnyen m
dosthat legyen. Ha rugalmatlan struktrk ltrehozsval megsrted ezt a kvetel
mnyt, akkor azt a gazdasgi modellt sod al, amelyre az egsz iparg pl.
Rviden: kpesnek kell lenned tlzott kltsgek nlkl vltoztatsokat vgrehajtani.
Sajnos nagyon sok program sllyed el a gyenge felpts mocsarban. A korbban
csak napokat ignyl feladatok egyszer csak heteket, majd hnapokat kezdenek
ignybe venni. A vezets ktsgbeesetten igyekszik behozni a lemaradst, ezrt to
vbbi programozkat vesz fel, hogy felgyorstsa a munkt. Az j fejlesztk azonban
csak mlytik az ingovnyt, mert nvelik a szerkezeti krokat, s ezzel jabb akad
lyokat grgetnek a projekt el.
A rugalmas s karbantarthat szerkezeteket tmogat szaftverfejlesztsi elvekrl
s mintkrl szm os knyvet rtak mr. 2 A profi szaftverfejlesz tk bevsik ezeket az
agyukba, s igyekeznek ennek megfelelen programozni. Van azonban egy trkk,
amit sajnos csak nagyon kevesen alkalmaznak: ha azt szeretnd, hogy a programod
rugalmas legyen, hajltgasd!
Csak azzal bizonythatod, hogy a programod knnyen mdosthat, ha kpes vagy
egyszeren mdostani. Ha pedig gy tallod, hogy a szaftver mdostsa nem olyan
knny, mint gondoltad, akkor vltaztass a felptsn, hogy legkzelebb egyszerbb
legyen vltoztatni rajta.
Hogy mikor hajts vgre ilyen egyszer mdostsokat? llandan! Minden alkalom
mal, amikor rpillantasz egy modulra, apr, pehelysly vltoztatsokkal javts a fel
ptsn. Minden alkalommal, amikor vgigolvasod a kdot, finomts a szerkezetn.
Ezt a fajta megkzeltst nha knyrtelen jratervezsnek (merciless refactoring)
is nevezik; n
"
a cserkszek szablynak
"
hvom: mindig tisztbban hagyd magad
utn a modulokat, mint ahogy talltad ket. Amikor csak a kezed kz kerl a kd,
tgy vele valami jt.
2 [PPP2001]
PROFIZMUS 37
Ez teljesen ellenttes azzal, ahogy a legtbb ember a szmtgp-programokra
gondol: a legtbben azt hiszik, hogy egy mkd szoftver folyamatos mdostgatsa
veszlyes. Tveds! Az a veszlyes, ha hagyod, hogy a szoftver vltozatlausgba der
medjen. Ha nem hajltgatod, akkor merevnek fogod tallni, amikor tnylegvltoztat
nod kell rajta.
Mirt fl a legtbb programoz attl, hogy folyamatosan vltoztasson a kdjn?
Azrt, mert attl tart, hogy tnkreteszi a mkdst. s mirt tart attl, hogy a kd
mkdskptelenn vlik? Mert nincsenek kielgt tesztjei.
Minden a tesztekre vezethet vissza. Ha van egy automatizlt tesztcsomagod,
amely tbb-kevsb teljes egszben lefedi a kdot, s amelynek a tesztjei brmikor
igny szerint lefuttathatk, akkor egyszeren nem fogsz flni a kd mdoststl.
s hogyan bizonythatod, hogy nem flsz vltoztatui a kdon? gy, hogy folyamato
san mdostod.
A profi szoftverfejlesztk annyira bznak a kdjukban s a tesztjeikben, hogy hi
hetetlenl lazn veszik a hirtelen vltoztatsokat. Ha gy tetszik, toeveznek egy osz
tlyt, vagy egy modul tnzse kzben szrevesznek egy tl hossz tagfggvnyt,
s a legnagyobb termszetessggel felszabdaljk. Egy vltutastst tbbalak objek
tumm alaktanak, vagy egy rklsi ft parancslncc vonnak ssze. Rviden, gy
kezelik a szoftvert, mint a szobrsz az anyagot: folyamatosan gyrjk s formljk.
MUNKAMORL
A karrieredrt te magad vagy felels. A munkaaddnak nem ktelessge, hogy gon
doskodjon a piackpessgedrL A munkaaddnak nem ktelessge, hogy kpezzen
vagy konferencikra kldjn tged, vagy knyveket vegyen neked. Ez mind a te dol
god. Jaj annak a szoftverfejlesztnek, aki a karrierje sorst a munkaadjra bzza!
Vannak olyan munkaadk, akik rmmel vesznek neked knyveket, illetve kl
denek tovbbkpzsre s konferencikra. Ez rendben van - szvessget tesznek neked.
De soha ne ess abba a hibba, hogy azt hiszed, mindez a munkaadd ktelessge. Ha
nem teszi meg neked ezt a szvessget, akkor magadnak kell mdot tallnod r, hogy
tovbbkpezd magad.
A munkaaddtl azt sem vrhatod el, hogy biztostsa a tanulshoz szksges idt.
Vannak, akik ezt is megteszik, st olyanok is, akik elvrjk, hogy lj a lehetsggel,
de ebben az esetben is szvessgrl van sz, amit rtkelned kell. Ilyesfajta szvess
geket nem vrhatsz el.
Az idd s az energid bizonyos rszvel tartozol a munkaaddnak. Vegyk alapul
a szabvnyos, heti 40 rs munkaidt: ezt a 40 rt a munkaadd problmira kell
fordtanod, nem a sajt gondjaidra.
Tervezz heti 60 rnyi munkval, amelybl az els 40 a munkaadd, a maradk
38 1. FEJEZET
20 pedig a tid. Ez alatt a 20 ra alatt olvass, gyakorolj s kpezd magad tovbb, hogy
elmozdtsd a karriered.
Mr hallom, ahogy tiltako zol:
"
De mi lesz a csaldommal? Az letemmel? Mindent
fel kell ldoznom a munkaadmrt?
"
Termszetesen nem az sszes szabadiddrl beszlek, csak heti plusz 20 rrl.
Az durvn hrom ra naponta. Ha ebdidben olvasol, munkba menet podeastokat
hallgatsz a metrn, s rsznsz naponta msfl rt, hogy megtanulj egy j progra
mozsi nyelvet, le is tudtad a dolgot.
Szmolj! Egy ht 168 rbl ll. Ebbl 40 a munkaadd, 20-at pedig a sajt to
vbbkpzsedre fordtasz. Marad teht 108 ra. Ha 56 rt alszol, mg mindig jut
52 ra minden msra.
Termszetesen lehet, hogy nem akarsz ilyen sokat vllalni. Semmi gond, de akkor
ne tekintsd magad profinak. A profik ugyanis sznnak idt a szakmjukra.
Az is lehet, hogy gy gondolod, munkt nem szabad hazavinni. Egyetrtek! A sa
jt 20 rdat nem szabad felldoznod a munkaaddnak - az arra van, hogy a szakmai
elmeneteleden munklkodj. A kt dolog persze nha egybeesik, s a munkahelyeden
vgzett munka a karrieredre is jtkony hatssal lehet. Ebben az esetben elfogadhat,
hogy a 20 ra egy rszt is a munkaaddnak szenteld, de ne feledd: ez a te idd, s
arra kell felhasznlnod, hogy a szakmdban rtkesebb legyl.
Lehet, hogy gy gondolod, hogy ez csak kigshez vezethet, pedig ppen ellen
kezleg, ez a kigs elkerlsnek a receptje. Feltehetleg azrt vlasztottad a prog
ramozi hivatst, mert szenvedlyesen szeretsz programozni, s ez a szenvedly
hajt, hogy profi szaftverfejleszt legyl. Az emltett 20 rban olyan dolgokat kell csi
nlnod, amelyek megerstik ezt a szenvedlyt. A sajt 20 rdnak teht rmmel kell
eZtltenie tged!
ISMERD MEG A SZAKTERLETEDI
Tudod, mi az a Nassi-Schneiderman-diagram? Ha nem, mirt nem? Tudod, mi a k
lnbsg egyMealy- s egy Moore-fle llapotgp kztt? Pedig tudnod kellene. Kpes
vagy rni egy gyorsrendezst anlkl, hogy utnanznl, hogyan kell? Tudod, mit je
lent a
"
transzformci-analzis
"
kifejezs? Vgre tudnl hajtani egy funkcionlis bon
tst adatfolyam-diagramokkal? Mit jelent a
"
vndor adat (tramp data)
"
? Hallottad
mr az
"
egyttes szlets (konaszcencia)
"
kifejezst? Mi az a Parnas-tbla?
A szakmnk legutbbi tven ve tletek, megkzeltsek, eljrsok, eszkzk s
szakkifejezsek kimerthetetlen trhza. Mennyit ismersz bellk? Ha profi szeretnl
lenni, jkora szelett ismerned kell ennek az univerzumnak, s folyamatosan bvte
ned kell a tudsodat.
Mirt fontos tudnod mindezeket a dolgokat? Hiszen a szakmnk olyan gyorsan
fejldik, hogy az tletek nagy rsze mr rgen elavult, nem igaz? Nos, felletesen
szemllve, a krdsben foglalt els llts igazsga tagadhatatlan. A szakmnk valban
PROFIZMUS 39
fejldik, s tnyleg szdt tempban. rdekes mdon azonban ez a fejlds sok szem
pontbl jelentktelen. Igaz, hogy ma mr nem kell 24 rt vrnunk egy program le
fordtsra. Igaz, hogy ma mr gigabjtokban mrhet rendszereket runk. Igaz, hogy
immr egy vilgmret hlzat vesz krl minket, amelyben az informcik azonnal
elrhetk. Msrszrl azonban ugyanazokat az if s w h i l e utastsokat rjuk, mint
50 vvel ezeltt. Sok minden megvltozott - s sok minden a rgi maradt.
A msik llts viszont nyilvnvalan hamis. Az elmlt 50 v tletei kzl valjban
nagyon kevs vesztette rvnyt. Persze vannak kztk olyanok, amelyek a partvo
naira kerltek; a
"
vzess
"
modell pldul ktsgkvl kiesett a programozk kegyei
bL Ez azonban nem azt jelenti, hogy nem is kell tudnunk rla, s nem kell ismernnk
az erssgeit s a gyengit.
Mindent egybevve, az utbbi 50 vben kemny munkval kidolgozott megold
sok tlnyom tbbsge ppen olyan rtkes ma is, mint a szletsekor - st, taln
mg rtkesebb.
Ne feledd Santayana figyelmeztetst:
"
Azok, akik nem tanulnak a mltbl, arra
tltetnek, hogy megismteljk azt
"
.
me azok a dolgok, amelyeket minden profi szoftverfejlesztnek Jelttlenl is
mernie kell:
Tervezsi mintk: Kpesnek kell lenned lerni mind a 24 mintt a
"
Ngyek
Bandjnak
"
(GOF) knyvbl, s tudnod kell hasznlni a POSA-knyvekben
(Pattern-Oriented Software Architecture, mintakzpont szoftverarchi
tektra) szerepl mintk tbbsgt.
Tervezsi elvek: Ismerned kell a SOLID-elveket, s kellkppen rtened kell
annak alkotelemeit
Mdszertanok: Tisztban kell lenned az XP, a Serum, a Lean, a Kanban,
a WaterfaU (Vzess), a Structured Analysis (Strukturlt analzis) s a Stmc
tured Design (Strukturlt tervezs) mibenltvel.
Megkzeltsek: Gyakorolnod kell a tesztvezrelt fejlesztst, az objektum
kzpont tervezst, a strukturlt programozst, a fokozatos beptst s a p
ros programozst.
Kiegszt ismeretek: Tudnod kell hasznlni az UML-t, a DFD-ket, a szerke
zeti diagramokat, a Petri-hlkat, az llapottmenet-diagramokat s -tbl
kat, a folyamatbrkat s a dntsi tblkat.
KPEZD TOVBB MAGAD FOLYAMATOSAN! Az iparg elkpeszt tem vltozsa azzal
jr, hogy a szoftverfejlesztknek folyamatosan jelents mennyisg j ismeretet kell
elsajttaniuk ahhoz, hogy lpst tudjanak tartani a vltozsokkaL Jaj annak a ter
veznek, aki abbahagyja a programozst, mert gyorsan azon kaphatja magt, hogy
elavult a tudsa. Jaj annak a programoznak, aki abbahagyja az j nyelvek tanulst,
mert az iparg gy suhanhat el mellette, mint a gyorsvonat. Jaj annak a fejlesztnek,
40 1. FEJEZET
aki nem trekszik tbb j megkzeltsek s eljrsok elsajttsra, mert a plya
trsai pillanatokon bell lehagyjk.
Fordulnl olyan orvoshoz, aki nem olvassa az orvosi szaklapokat? Elkszttetnd
az adbevallsodat egy olyan knyvelvel, aki nincs tisztban a hatlyos adtrv
nyekkel? Mirt venne ht fel brki olyan programozt, aki nem rendelkezik napra
ksz ismeretekkel?
Olvass knyveket, cikkeket, blogokat s csiripeket. Jrj konferencikra. Ltogasd
a felhasznli frumokat. Vegyl rszt nkpz csoportok munkjban. Tanulj meg
olyan dolgokat, amelyek kvl esnek a szmodra ismers terepen. Ha .NET-prog
ramoz vagy, tanuld meg a Javt. Ha Java-programoz vagy, ismerd meg a Ruby-t.
Ha C-ben programozol, tanulj Lisp-et. Ha igazn meg akarod tomztatni az agyadat,
merlj el a Prolog s a Forth rejtelmeiben.
GYAKOROLJ! ,. A profik gyakoroljk a hivatsukat. Az igazi profik kemnyen dolgoz
nak azon, hogy a fegyvereik mindig kifnyestve, bevetsre kszen lljanak. Nem
elg pusztn elvgezni a mindennapi feladataidat, s azt hinni, ezzel letudtad a gya
korlst. A mindennapi feladatok elvgzse teljests, nem gyakorls. Gyakorls az,
amikor a kpessgeidet a munkdon kvl teszed prbra, kifejezetten azrt, hogy
csiszolj rajtuk.
Mibl llhat a gyakorls egy szaf tverfejleszt szmra? A krds els pillantsra
abszurdnak tnhet, de llj meg, s gondolkozz el egy pillanatra. Gondolj bele, hogyan
vlik egy zensz a hangszere mesterv: nem elads, hanem gyakorls ltal. s ho
gyan gyakorol egy zensz? Tbbek kztt specilis gyakorlatokat vgez: sklzik, ak
kordmeneteket s futamokat ismtelget, hogy edzze az ujjait s az agyt, s hogy ne
jjjn ki a gyakorlatbL
De hogyan gyakorolhat egy szof tverfejleszt? A klnfle gyakorlatoknak egy
egsz fejezetet szentelek ebben a knyvben, ezrt itt nem megyek bele klnsebben
a rszletekbe. Az egyik technika, amelyet srn alkalmazok, az olyan egyszer gya
korlatokismtelgetse, mint a Bowling Game (tekejtk) vagy a Prime Factars
(prmtnyezk). Ezeket a gyakorlatokat hvom kat-nak. Rengeteg kata ltezik, amely
bl vlaszthatsz.
A kata rendszerint egy egyszer programozsi problma, amelyet meg kell olda
nod - pldul rsz egy fggvnyt, amely kiszmtja egy egsz szm prmtnyezit.
A kata clja nem az, hogy ki talld a problma megoldst, hiszen azzal mr tisztban
vagy, hanem az ujjak s az elme edzse.
n mindennap megcsinlok egy vagy kt katt, tbbnyire munka eltt, bemele
gtskppen. A kdot megrhatar Java, Ruby, Clojure vagy brmilyen ms nyel
ven, amelyet ppen gyakorolni szeretnk. A kata segtsgvel egy adott kszsget
igyekszem tovbbfejleszteni, pldul az ujjaimat prblom hozzszoktatni a billenty
parancsokhoz, vagy bizonyos jratervezsi megoldsokat gyakorolok.
PROFIZMUS 41
A katkra gondolj gy, mint tzperces reggeli bemelegt s tzperces esti levezet
gyakorlatokra.
DOLGozz MSOKKAL KzSEN l A tanulsra a msodik legjobb mdszer a msokkal
kzs munka. A profi szoftverfejlesztk kifejezetten trekszenek arra, hogy msokkal
kzsen programozzanak, gyakoroljanak s tervezzenek, mert gy sokat tanulhatnak
egymstl, s tbbet tudnak elvgezni gyorsabban s kevesebb hibval.
Ez nem azt jelenti, hogy minden iddet csapatmunkval kell tltened. Az nll
munka is nagyon fontos. n nagyon szeretek msokkal prban programozni, de meg
rlnk, ha nem szakadhatnk el tlk idrl idre.
TANITs!. A tanuls legeslegjobb mdja a tants. Semmi sem vsi gyorsabban s ma
radandbban az agyadba az elveket s a tnyeket, mint ha a felelssgedre bzott em
bereknek kell tadnod azokat. A tantsbl teht leginkbb a tanr profitl.
Ehhez hasonlan, nincs jobb mdszer az j emberek bevonsra, mint lelni
velk, s megmutatni nekik a fogsokat A profik szemlyes ktelessgknek rzik,
hogy oktsk a fiatalokat, s nem hagyjk, hogy akr egyetlen kezd is felgyelet nl
kl kapkodjon ssze-vissza.
ISMERD MEG A TARTOMNYOD! .. Minden profi szoftverfejlesztnek ktelessge, hogy
rtse az ltala programozott megoldstartomnyt Ha knyvelsi rendszert rsz, is
merned kell a knyvels szablyait. Ha foglalsi rendszert ksztesz egy utazsi iroda
szmra, ismerned kell az dlsi ipar mkdst. Nem kell szakrtv kikpezned
magad, az alapokkal azonban muszj tisztban lenned.
Amikor j terleten (tartomnyban) kezdesz programozni, olvass el egy-kt kny
vet a tmval kapcsolatban. Krdezd ki a megrendelt s a felhasznlkat, hogy mit
tartanak a legfontosabbnak az adott terleten. Tlts el nmi idt a szakrtkkel, s
prbld megrteni, hogy milyen elvek s rtkek vezrlik ket.
Az amatr viselkeds legrosszabb fajtja, ha egy programoz csak a feladatlerst
kvetve kdol, anlkl, hogy rten, mire van szksg az adott zleti terleten. Mu
szj, hogy eleget tudj a tartomnyrl ahhoz, hogy felismerd a feladatlersban szerepl
esetleges hibkat, s meg tudd vitatni ket.
AZONOSUU A MUNKAADDDAL, ILLETVE A MEGRENDELVELl . A munkaadd probl
mi egyben a te problmid is. rtened kell ket, s a lehet legjobb megoldsra kell
trekedned. Amikor egy rendszert fejlesztesz, a munkaadd helybe kell kpzelned
magad, s gyelned kell r, hogy az ltalad kidolgozott szolgltatsok valban kiel
gtsk a munkaadd ignyeit.
42 1. FEJEZET
A programozk egymssal knnyen tudnak azonosulni, ezrt knnyen kialakul
hat bennk egyfajta
"
mi s k
"
hozzlls a munkaadval szemben. A profik min
denron igyekeznek elkerlni ezt.
LGY ALZATOS! A programozs alkottevkenysg. Amikor kdot runk, a semmi
bl hozunk ltre valamit. Merszen rendet teremtnk a koszban. Hatalmunk tuda
tban precz rszletessggel megszabjuk egy gp viselkedst, amely mskpp felmr
hetetlen krokat tudna okozni. A programozs teht egyben a mrhetetlen nteltsg
kifejezdse.
A profik tudjk magukrl, hogy n teltek, s nem tettetnek szernysget. Egy profi
tudja a dolgt, s bszke a munkjra. Egy profi bzik a kpessgeiben, ezrt btran
s tudatosan vllalja a kockzatokat. Egy profi nem ijed meg a kihvsoktl.
Ugyanakkor egy profi azt is tudja, hogy idnknt hibzni fog, rosszul mri fel
a kockzatokat, a kpessgei nem bizonyulnak elegendnek, s a tkrbl egy ostoba,
ntelt majom vigyorog majd vissza r. Ezrt amikor egy profi a trflkozs clkereszt
jben tallja magt, az els, aki nevet magn. Msokat soha nem gnyol ki, de ha
megrdemli, elfogadja, ha t gnyoljk, ha pedig nem, csak nevet rajta. Nem szgye
nt meg senkit, ha hibzik, mert tudja, hogy lehet a kvetkez.
Egy profi tisztban van a mrhetetlen nteltsgvel, s tudja, hogy vgl elnyeri
mlt bntetst. Amikor pedig a sors lesjt r, a legjobb, amit tehet, hogy megfo
gadja Howard tancst, s nevet.
IRODALOMJEGYZK
[PPP2001]: Robert C. Martin: Principles, Patterns, and Practices of Agile Software
Development. Upper Saddle River, NJ. Prentice Hall, 2002.
2. FEJEZET
NEMET MONDANI
"
Tedd vagy ne tedd - de ne prbld.
"
- Yoda
A 70-es vek elejn n s kt tizenkilenc ves bartom egy vals idej szmlz
rendszert ksztettnk a fuvarosok szakszervezetnek a chicagi ASC cgnL Ha errl
olyan nevek ugranak be az Olvasnak, mint Jimmy Hoff, nem tved: a fuvaro
zkkali971-ben jobb volt nem sszeakasztani a bajszot.
NEMET MONDANI 45
A rendszernknek egy adott napon kellett mkdsbe lpnie. A hatrid betart
sn rengetegpnz mlt, ezrt a csapatunk 60, 70, st 80 rkat dolgozott hetente, hogy
tartsa az temtervet.
Egy httel a hatrid eltt vgre sikerlt teljes egszben sszeraknunk a rend
szert, de mg sok problmt el kellett hrtanunk, gyhogy megszllottan haladtunk
vgig a hibalistn. Enni s aludni sem igen volt idnk, nemhogy gondolkodni.
Frank, az ASC vezetje, a lgier nyugalmazott ezredese volt - olyan igazi ordto
zs, parancsolgats tpus. Amit mondott, annak gy kellett lennie, klnben le is t,
fel is t (fleg le - 3000 mterrl, ejterny nlkl). Mi, tizenkilenc ves klykk,
szinte a szembe sem mertnk nzni.
Frank azt mondta, hogy az emltett idpontra kszen kell lenni. Ennyi. Amikor
eljn a nap, kszen lesznk. s pont. Vitnak, ellenvetsnek helye nincs.
A kzvetlen fnkm, Bill, rendes fick volt. Mr vek ta dolgozott egytt Frank
kel, gyhogy tudta, meddig lehet elmenni vele, s mi az, ami kbe van vsve. is
megerstette a hatridt, s azt mondta, ha trik, ha szakad, a rendszert zembe fog
juk lltani az adott napon.
gyhogy amikor a nap eljtt, a rendszert zembe is lltottuk Katasztroflis ered
mnnyel.
A fuvarosok chicagi kzpontjt egy tucat 300 baudos, flduplex terminl kttte
ssze a klvrosban, harminc mrfldre szakra tallhat gpnkkeL Krlbell
30 percenknt mindegyik terminl lefagyott. A problma nem volt ismeretlen elt
tnk, de nem madeHeztk azt a forgalmat, amit a szakszervezet adatrgzt munka
trsai hirtelen a rendszernkre zdtottak
A helyzetet tovbb rontotta, hogy a jelentseket nyomtat ASR35 telexgpek, ame
lyek 100 baudos telefonvonalakon keresztl szintn sszekttetsben lltak a rend
szernkkel, ugyancsak lefagytak nyomtats kzben.
A lefagyst jraindtssal lehetett megoldani, vagyis mindenkit meg kellett krni,
akinek a terminlja mg mkdtt, hogy fejezze be, amit ppen csinl, aztn lljon
le a munkval. Amikor mindenki lellt, felhvtak minket, hogy indtsuk jra a rend
szert. Azok, akiknek lefagyott a terminl ja, ellrl kellett, hogy kezdjk a munkt - s
ez rnknt akr tbbszr is elfordult.
Fl napi szenveds utn a fuvarosok irodavezetje arra utastott minket, hogy lltsuk
le a rendszert, s ne is indtsuk be jra, amg rendesen nem mkdik. Az addig elvgzett
munkt elvesztettk, s az adatokat jra be kellett vinnik a rgi rendszerkn.
Frank vltzst az egsz pletben hallani lehetett, s nem tnt gy, hogy egy
hamar vge szakadna. Aztn Bill s a rendszerelemznk, Jalil, odajttek hozznk, s
megkrdeztk, hogy mennyi id alatt tudjuk stabill tenni a rendszert. Azt feleltem,
hogy
"
ngy ht
"
.
Az arcukra rmlet lt ki, amit aztn eltkltsg vltott fel:
"
Nem,
"
- feleltk -
"
pntekre mkdnie kell.
"
46 2. FEJEZET
"
Nzztek, alig tudtuk gy-ahogy sszekalaplni a rendszert mlt htre
"
-ellen
keztem. -
"
Helyre kell tennnk a dolgokat, hogy el tudjuk hrtani a hibt. Tnyleg
szksgnk van ngy htre.
"
Bill s Jalil azonban hajthatatlan maradt:
"
Nem, pntekre muszj meglennie. Leg
albb prbljtok meg!
"
Ekkor a csapatvezetnk megszlalt:
"
Ok, megprbljuk.
"
A pntek j vlaszts volt, mert a ht vgn lnyegesen alacsonyabb volt a terhels,
gy tbb hibt tudtunk felderteni s kijavtani, mieltt elrkezett volna a htf. A kr
tyavr ettl fggetlenl kis hjn jra sszedlt. A lefagys naponta egyszer-ktszer
tovbbra is jelentkezett, s ms problmk is akadtak. Nhny ht alatt azonban fo
kozatosan eljuttattuk a rendszert egy olyan szintre, hogy a panaszok elcsitultak, s
gy tnt, az let visszatrhet a normlis kerkvgsba.
Aztn, ahogy a bevezetben emltettem, mindnyjan felmondtunk, a cg pedig
igazi vszhelyzetben tallta magt. Egy egsz csapat j programozt kellett felven
nik, hogy megbirkzzanak az gyfl ltal jelzett hatalmas mennyisg problmval.
Kit tehetnk felelss a fiaskrt? Az vilgos, hogy Frank stlusa komoly szerepet
jtszott benne, hiszen azltal, hogy megflemltette a munkatrsakat, megneheztette,
hogy megmondjk neki az igazsgot. Termszetesen Bill s Jalil is hatrozottabban
lphetett volna fel Frankkel szemben, s az is tny, hogy a csapatunknak nem lett
volna szabad belemennie a pnteki hatridbe-nekem pedig ki kellett volna tarta
nom a
"
nem
"
mellett, ahelyett, hogy bell ok a sorba.
A profik megmondjk az igazsgot a feletteseiknek A profik nem flnek nemet
mondani a fnkeiknek
De hogyan mondasz nemet a fnknek? Hiszen a fnkd! Elvileg azt kell tenned,
ami mond, nem?
Nem. Ha profi vagy, akkor nem.
Egy rabszolga nem mondhat nemet. Egy munks habozhat nemet mondani. Egy
profitl azonban elvrjk, hogy nemet mondjon. Egy j vezet valjban olyan em
berekre vgyik, akiknek van mersze nemet mondani, mert csak gy lehet brmit is
tisztessgesen elvgezni.
ELLENTTES SZEREPEK
E ktet egyik kritikusnak nagyon nem tetszett ez a fejezet. Azt mondta, kis hjn
letette miatta a knyvet, ugyanis mindeddig olyan csapatokat ptett fel, amelyek
kztt nincs ellensgeskeds: a csapatok harmniban, sszetkzs nlkl dolgoz
nak egytt.
rlk a szerencsjnek, de nem vagyok biztos benne, hogy a csapatai valban
annyira mentesek a srldsoktl, mint ahogy felttelezi. Ha mgis, akkor afell
NEMET MONDANI 47
vannak ktsgeim, hogy igazn hatkonyan mkdnek-e. A sajt tapasztalataim
ugyanis azt mutatjk, hogy nehz helyzetben az ellenttes szerepek tkzsbl sz
letnek a legjobb dntsek.
A menedzsereknek feladatuk van, s a legtbbjk elg jl tudja, hogyan vgezheti
el azt a legjobban. A munkjukhoz hozztartozik, hogy a cljukat tzn-vzen t ke
resztlvigyk.
Ugyangy a programozk dolga is adott, s a legtbbjk rt ahhoz, amit csinl. Egy
profi programoz szintn vehemensen vdelmezi a sajt cljait, s igyekszik azokat
mindenron keresztlvinni.
Amikor a fnkd azt mondja, hogy a bejelentkez oldalnak holnapra kszen kell
lennie, akkor a sajt feladatt igyekszik teljesteni, vagyis csak a munkjt vgzi. Ha
te tudod, hogy msnapra kptelensg elkszlni az emltett oldallal, akkor nem
mondhatod azt, hogy
"
Ok, megprblom.
"
- a sajt feladatodnak csak akkor tudsz
eleget tenni, ha kerek-perec kzld, hogy a krst lehetetlen teljesteni.
De ht azt kell tenned, amire a fnk utast! Vagy nem? Nem: a fnkd arra sz
mt, hogy te ugyanolyan eltklten vded a sajt llspontoda t, mint ahogy az vt.
Csak ez vezethet el a lehet legjobb megoldshoz.
A lehet legjobb megolds az a kzs cl, amelyen te s a fnkd osztoztok. A ki-
hvst ennek a kzs clnak a meghatrozsa jelenti, amihez ltalban alkudozni kell.
Az alkudozs nha szvlyes lgkrben folyik:
Mike:
"
Paula, holnapra szksgem lenne a bejelentkez oldalra.
"
Paula:
"
! Ilyen hamar? Na j, megprblak elkszlni vele.
"
Mike:
"
Nagyszer, ksznm!
"
Bartsgos kis beszlgets: mindkt fl kerli a konfliktust, s mosolyogva tvozik.
Csods.
Csakhogy egyik fl sem viselkedik profiknt. Paula nagyon jl tudja, hogy a beje
lentkez oldalt nem tudja egy nap alatt elkszteni, ezrt egyszeren hazudik. Persze
nem biztos, hogy ennek tudatban van -lehet, hogy azt hiszi, hogy tnyleg megfogja
prblni, s taln halvnyan remnykedik is, hogy elkszlhet a munkval. Ez azon
ban nem vltoztat azon a tnyen, hogy nem mond igazat.
Msrszrl Mike
"
igen
"
-nekfogadja el a
"
megprblom
"
-ot, ami egyszeren osto
basg. Tudnia kne, hogy Paula csak a konfliktust igyekszik elkerlni, ezrt egyrtel
mbb vlaszt kellene kicsikarnia:
"
Nem tnsz valami hatrozottnak. Biztos vagy
benne, hogy meg tudod csinlni holnapra?
"
me egy msik szvlyes beszlgets:
48
Mike:
"
Paula, holnapra szksgem lenne a bejelentkez oldalra.
"
Paula:
"
! Bocs, Mike, de nekem ennl tbb id kell.
"
Mike:
"
Szerinted mikorra lehet ksz?
"
Paula:
"
Kt ht mlva megfelel?
"
2. FEJEZET
Mike: ( felfirkant valamit a hatridnaplj ba)
"
Ok, ksznm.
"
Brmilyen bartsgos is ez a beszlgets, ugyanolyan szrnyen flrevezet, s teljes
sggel amatr, mert egyik fl sem a lehet legjobb megoldst keresi. Paulnak pldul
nem krdeznie kellene, hogy megfelel-e kt ht mlva, hanem hatrozottan kijelen
tenie:
"
Mike, kt ktbe fog telni.
"
Msrszrl Mike egyszeren, vita nlkl elfogadja
a dtumot, mintha a sajt elvrsai nem szmtannak. Vajon mit fog tenni ez utn?
Simn jelenti a fnknek, hogy a bemutatvltozat tadst el kell halasztani, mert
Paula nem lesz ksz? Ez a fajta passzv-aggresszv viselkeds morlisan ersen kifo
gsolhat.
A felek a fenti kt eset egyikben sem azt a megoldst- a kzs clt, a lehet legjobb
megoldst - kerestk, ami mindkettejk szmra elfogadhat. Prbljuk meg gy:
Mike:
"
Paula, holnapra szksgem lenne a bejelentkez oldalra.
"
Paula:
"
Lehetetlen, Mike, ez kt hetes munka!
"
Mike:
"
Kt ht? A tervezk hrom napra becsltk, s mr tdik napja dolgozol
rajta!
"
Paula:
"
A tervezk tvedtek, Mike. Mg az eltt ksztettk el a becslseket, hogy
a termkfejlesztsi osztly megkapta volna a kvetelmnyeket. Legalbb
tz napot kell mg dolgoznom rajta. Nem lttad a frisstett becslsemet
a wikin?
"
Mike: (a tekintete zord, s remeg a dhtl)
"
Paula, ez elfogadhatatlan! A megren
del holnap jn a demrt, s mkdkpes bejelentkez oldalt kell mu
tatnom nekik!
"
Paula:
"
A bejelentkez oldalnak melyik rsze kell, hogy mkdjn holnapra?
"
Mike:
"
Az e
g
sznek! Be kell tudnom jelentkezni!
"
Paula:
"
Mike, egy mkd modellt most is adhatok a bejelentkez oldalrl, ame
lyen keresztl bejelentkezhetsz. Valjban nem ellenrzi a felhasznlnevet
s a jelszt, s nem kldi el emailben az elfelejtett jelszavakat sem. Nincs
ott a tetejn a
"
Times-squaring
"
cges hrsv, s a sggomb, valamint az
elugr sgszvegek nem mkdnek. Nem trol stit, hogy legkzelebb
emlkezzen rd, s semmilyen korltozst nem rvnyest. De a bejelent
kezst lehetv teszi. Elg lesz?
"
Mike:
"
Kpes leszek bejelentkezni?
"
Paula:
"
Igen, kpes leszel.
"
Mike:
"
Ez nagyszer, Paula, letet mentettl!
"
(elmenben a levegbe csap az k
lvel, s azt mondja:
"
Igen!
"
)
Mike s Paula most elrte a lehet legjobb megoldst, mghozz azzal, hogy nemet
mondtak egymsnak, majd megkerestk azt, ami r indkettejk szmra elfogadhat.
Profiknt viselkedtek. A beszlgets kiss ellensges hangnemben zajlott, s voltak
NEMET MONDANI 49
knyelmetlen pillanatai, de ez termszetes, ha kt ember hatrozottan igyekszik r
vnyesteni az rdekeit, s azok nincsenek tkletes sszhangban.
Ml A HELYZET A
"
MIRT?
"
-TEL?
Lehet, hogy most azt gondolod, hogy Paulnak arra is magyarzatot kellett volna
adnia, hogy mirt tart ilyen sokig a bejelentkez oldal elksztse. Tapasztalataim
szerint azonban a mirt sokkal kevsb fontos, mint maga a tny, mrpedig a tny az,
hogy a bejelentkez oldal elksztse kt hetet ignyel. Az, hogy mirt kell r kt ht,
mellkes krlmny.
Ettl fggetlenl az okok ismerete segthet Mike-nak, hogy jobban megrtse, s
gy elfogadja a tnyeket. Rendben. Amennyiben Mike rendelkezik a kell szakmai
ismeretekkel, s megrt termszet, egy ilyen magyarzat hasznos is lehet. Msrsz
rl azonban nem biztos, hogy Mike osztja majd Paula vlemnyt. Lehet, hogy arra
a kvetkeztetsre jut, hogy Paula rosszul csinlja az egszet, s kijelenti, hogy nincs
szksg az sszes tesztre, a fellvizsglatokra vagy a 12. lpsre. Ha tl sok rszletet
rulsz el, az "mikromenedzselsre
"
csbt.
AMIKOR NAGY A TT
A legfontosabb akkor nemet mondani, amikor a legnagyobb a tt. Minl tbb forog
kockn, annl rtkesebb a "Nem
"
.
Ez magtl rtetd kellene, hogy legyen. Amikor a kudarcrt olyan nagy rat kell
fizetni, hogy a cg elbukhat rajta, szilrd eltkltsggel a lehet legpontosabb inform
cikat kell tadnod a feletteseidnek Ez pedig gyakran egy hatrozott "Nem
"
-et jelent:
50
Don (Fejlesztsi igazgat): "Az Aranyld projekt befejezst jelenleg mtl tizen
kt htre becsljk, plusz-mnusz t ht bizonytalansggal.
"
Charles (Vezrigazgat): (Tizent msodpercig nmn l, mikzben elvrsdik
a feje.) "Azt akarod mondani, hogy lehet, hogy mg tizenht hetet kell vr
nunk az tadsra?
"
Don: "Igen, lehetsges.
"
Charles: (Felll, Don egy pillanattal ksbb kveti a pldjt.) "A fenbe, Don!
Hrom hete kszen kellene lennie! A Galitron mindennap felhv, hogy hol
van mr az tkozott rendszer k, s n nem fogom azt mondani nekik, hogy
vrjanak mg ngy hnapot! Hajtsatok jobban!
"
Don: "Chuck, n hrm hnappal ezeltt, a kirgsok utn megmondtam, hogy
mg ngy hnap kell. Az isten szerelmre, Chuck, az embereim tdt ki
vgtad! Megmondtad a Galitronnak, hogy csszni fogunk?
"
Charles: "Tudod jl, hogy nem. Ne engedhetjk meg magunknak, hogy ez az z
let elsszon, Don. (Charles elhallgat, az arca falfehrre vlt.) A Galitron
2. FEJEZET
nlkl meg vagyunk lve, s ezt te is tudod. Flek, hogy ez a csszs . . . Mit
mondok az igazgattancsnak? (Lassan visszal a helyre, s prbl nem
sszeomlani.) Don, muszj belehznotok."
Don:
"
Semmit nem tehetek, Chuck. Ezt mr meg beszltk. A Galitron nem enged
a kvetelmnyekbl, s nem fogadnak el flksz kiadsokat. Csak egyszer
akarnak telepteni, hogy utna elfelejthessk az egszet. Teljesen ksz rend
szert viszont nem tudok gyorsabban elvarzsolni. Egyszeren nem me gy."
Charles:
"
A francba. Gondolom, nem vltoztat semmin, ha azt mondom, hogy az
llsod mlik rajta."
Don:
"
Ha kirgsz, akkor sem tudok rvidebb hatridt mondani, Charles."
Charles:
"
Akkor egyelre vgeztnk. Menj vissza a csapathoz, s haladjatok to
vbb a projekttel. Lesz nhny slyos telefonhvsom."
Termszetesen Charlesnak mr hrom hnappal korbban, amikor megtudta az j
becslst, kzlnie kellett vona a Galitronnal, hogy nem megy a dolog, de legalbb
most helyesen cselekszik (felhvja ket, illetve az igazgattancsot). Ha viszont Don
nem llt volna ki a vlemnye mellett, taln mg tovbb halogatta volna az elkerl
hetetlent.
"CSAPATJTKOSNAK" LENNI
Mindnyjan hallottuk mr ezerszer, hogy milyen fontos a
"
csapatjtk". Csapatjt
kosnak lenni annyit tesz, hogy a lehet legjobban vgzed a sajt feladatod, s kisegted
a trsaidat, ha elakadnak. Egy csapatjtkos srn kicserli a vlemnyt a tbbiek
kel, az egyik szemt a trsain tartja, s a lehet legmagasabb sznvonalon vgzi a sajt
munkjt.
Egy csapatjtkos ugyanakkor nem mond mindenre
"
Igen"-t. Vegyk pldul az
albbi helyzetet:
Paula:
"
Mike, megvannak a becslsek, amiket krtl. A csapat egyetrt abban,
hogy krlbell nyolc ht mlva tudunk egy demt adni neked, plusz-ro
nusz egy ht."
Mike:
"
Paula, a demt br betemeztk mtl hat htre."
Paula:
"
Anlkl, hogy elbb megkrdeztetek volna minket? Ugyan, Mike, ezt
nem lcslheted rnk!"
Mike:
"
Ez mr el van dntve."
Paula (shajt):
"
Ok, nzd, visszamegyek a csapathoz, s kidertem, hogy mit tu
dunk biztosan leszlltani hat ht alatt, de az biztos, hogy az egsz rend
szert nem. Bizonyos szolgltatsok hinyozni fognak, s az adatbetlts
sem lesz teljes."
NEMET MONDANI 51
Mike:
"
Paula, az gyfl teljes demt akar ltni.
"
Paula:
"
Mike, nem fog.
"
Mike:
"
A francba. Ok, dolgozztok ki a legjobb tervet, amit tudtok, s tjkoztass
holnap.
"
Paula:
"
Rendben, ez megoldhat.
"
Mike:
"
Nem tudtok kitallni valamit, hogy mgis tartani lehessen a hatridt?
Tallhatntok pldul valami f urfangos megoldst. Legyetek kreatvak!
"
Paula:
"
Mi mindnyjan elg kreatvak vagyunk, Mike. Tisztban vagyunk a prob
lmkkal, de a megoldsra nyolc vagy kilenc ht kell, hat nem elg.
"
Mike:
"
Tlrzhatntok.
"
Paula:
"
Az csak lelasstana minket, Mike. Emlkszel, milyen galibt csinltunk
legutbb, amikor ragaszkodtl a tlrhoz?
"
Mike:
"
Igen, de annak nem muszj megismtldnie.
"
Paula:
"
Pontosan ugyanaz trtnne, Mike, hidd el. Nyolc vagy kilenc ht, nem
hat.
"
Mike:
"
J, fogtam. Vrom a legjobb terveteket, de jrjon az agyatok, hogyan le
hetne leszortani hat htre. Biztos vagyok benne, hogy kitalitok valamit.
"
Paula:
"
Nem, Mike, nem fogunk. Csinlhatunk egy tervet hat htre, de egy csom
szolgltats s adat hinyozni fog. Nem tudok mst mondani.
"
Mike:
"
Ok, Paula, de ha akartok, ti csodkra vagytok kpesek.
"
(Paula fejcsvlva el.)
Ksbb, a stratgiai rtekezleten . . .
Don:
"
Ok, Mike, amint tudod, az gyfl hat ht mlva jn a demrt, s elvrja,
hogy minden mkdjn.
"
Mike:
"
Meg is lesz. A csapatom belead apait-anyait, s kszen lesznk. Kicsit tl
rznunk kell, s kreatv megoldsokkal kell elrukkolnunk, de megcsi
nljuk!
"
Don:
"
J, hogy ilyen nagyszer csapatjtkosok vagytok!
"
Kik is az igazi csapatjtkosok ebben az esetben? Paula a csapatrt dolgozik, hiszen
amennyire csak tle telik, megprblja egyrtelmv tenni, hogy mi az, ami lehet
sges, s mi az, ami nem. Hatrozottan kill a vlemnye mellett, Mike minden
hzelgse ellenre. Ezzel szemben Mike
"
csapata
"
egyszemlyes: Mike-ot csak Mike
rdekli. Vilgos, hogy nem Paula csapatban jtszik, hiszen ppen most grt meg
valamit a nevben, amirl Paula kerek-perec kijelentette, hogy nem lehetsges. De Don
csapatt sem ersti (br ezt vitatn), hiszen egyszeren hazudik neki.
Mirt teszi ezt Mike? Azt akarja, hogy Don csapatjtkosnak lssa, s hisz benne,
hogy hzelgssei r tudja venni P ault, hogy megprb
l
on hat ht alatt vgezni. Mike
nem gonosz, csak tlsgosan bzik a rbeszl kpessgben.
52 2. FEJEZET
PRBLKOZNI
A legrosszabb dolog, amit Mike manipulatv viselkedsre vlaszu! Paula tehetne,
hogy azt mondja:
"
Ok, megprbljuk.
"
Yodnak ebben a tekintetben bizony igaza
van: prblkozni nem lehet.
Nem rtesz egyet? gy gondolod, hogy a prblkozs hasznos dolog? Hogy Ko
lumbusz sem fedezte volna fel Amerikt, ha nem prblkozik?
A prblkozni sznak azonban tbb jelentse is van. n erre a jelentsre hvnm
fel a figyelmet:
"
igyekszik, tovbbi erfesztseket tesz
"
. Milyen tovbbi erfesztseket
tehetne Paula, hogy a dem idben ksz legyen? Ha ltezik brmilyen tovbbi er
feszts, amit Paula s csapata megtehetne, akkor eddig nem tettek meg mindent.
Bizonyra tartalkoltak valamit.1
A prblkozsra tett gret annak beismerse, hogy eddig nem tettl meg minden
erfesztst, hogy visszatartottl valamit. A prblkozsra tett gret annak beisme
rse, hogy a cl tovbbi erfesztssel elrhet, st, ktelezettsgvllals erre a tovbbi
erfesztsre. Ha teht gretet teszel, hogy megprblod, valjban ktelezettsget
vllalsz a sikerre. Ezutn minden teher a te vlladra fog nehezedni: ha a
"
prblko
zs
"
nem jr a kvnt eredmnnyel, akkor kudarcot vallottL
Vannak mg visszatartott energiatartalkaid? Ha mozgostod ezeket, kpes leszel el
rni a clt? Vagy a prblkozsra tett grettel egyszeren megkockztatod a kudarcot?
A prblkozsra tett grettel azt gred meg, hogy vltoztatsz a terveiden-vgtre
is, a tervek nem voltak kielgtek. A prblkozsra tett grettel azt mondod, hogy
van egy j terved. De mi az az j terv? Mi az, amit mskpp fogsz csinlni? Min vl
toztatsz most, hogy
"
megprblod
"
?
Ha nincs j terved, ha nem vltoztatsz a viselkedseden, ha mindent pontosan gy
csinlsz, ahogy az eltt, hogy meggrted, hogy
"
megprblod
"
, akkor mit jelent
a prblkozs?
Ha nem tartalkoltl semmit, ha nincs j terved, ha nem fogsz vltoztatni a visel
kedseden, s tovbbra is fenntartod az eredeti becslsedet, akkor a prblkozsra
tett greted egyltaln nem szinte. Ms szval, hazudsz. Valsznleg azrt, hogy
presztzsvesztesg nlkl megszd a dolgot, s elkerld az sszetkzst.
Paula hozzllsa sokkal jobb. Mindig
"
nyolc vagy kilenc hetet
"
emleget, vagyis
folyamatosan emlkezteti Mike-ot, hogy a csapata becslse bizonytalan. Paula ki
hangslyozza ezt a bizonytalansgot, s egyszer sem htrl meg. Nem cloz olyas
mire, hogy lehetne tovbbi erfesztseket tenni, j terveket kidolgozni, vagy mskpp
csinlni valamit, hogy a bizonytalansg cskkenjen.
Hrom httel ksbb ...
l Mint Foghorn Leghorn (Bbita r a Bolondos dallamokbl):
"
Mindig megszmozam a tollaimat,
vszhelyzet esetre.
"
NEMET MONDANI 53
Mike: "Paula, a dem hrom ht mlva esedkes, s a megrendel ltni szeretn
a fjlfeltltst mkds kzben.
"
Paula: "Mike, az nincs rajta azon a listn, amelyikben megegyeztnk.
"
Mike: "Tudom, de ragaszkodnak hozz.
"
Paula: "J, akkor vagy az egyfikos bejelentkezst, vagy a biztonsgi mentst ki
kell hagynunk a dem bl.
"
Mike: "Sz sem lehet rla! Azokra is szmtanak!
"
Paula: "Vagyis minden szolgltatsrl azt hiszik, hogy mkdni fog? Ezt akarod
mondani? n egyrtelmen kzltem, hogy nem fog menni.
"
Mike: "Sajnlom, Paula, de az gyfl ebbl nem enged. Mindent ltni akarnak.
"
Paula: "Nem fog menni, Mike. Egyszeren kptelensg.
"
Mike: "Ugyan mr, Paula, legalbb prbljtok meg!"
Paula: "Mike, lebegni is prblhatnk, megprblhatnm aranny vltoztatui az
lmot, vagy megprblhatnm tszni az Atlanti-cent. Gondolod, hogy
sikerlne?
"
Mike: "Ne ess tlzsokba. Nem lehetetlent krek.
"
Paula: "De igen, Mike, azt krsz.
"
(Mike nelglten elmosolyodik, biccent, s elstl.)
Mike: ( tvozban) "Bzom benned, Paula. Tudom, hogy nem hagysz cserben.
"
Paula: (Mike htnak) "Te lmodozol, Mike. Ennek nem lesz j vge.
"
(Mike csak integet, anlkl, hogy htranzne.)
PASSZfV-AGGRESSZfV VISELKEDS
Paulnak rdekes dntst kell meghoznia. Gyantja, hogy Mike nem rulta el Donnak
a csapat becslst. Megtehetn, hogy egyszeren hagyja, hogy Mike a vesztbe rohan
jon. Gondoskodhatna rla, hogy minden rsban rgztve legyen, hogy amikor becsap
a villm, megmutathassa, mit mondott Mike-nak, s mikor. Ez a passzv-aggresszv
viselkeds. Hagyhatn, hogy Mike ngyilkossgot kvessen el.
Vagy megprblhatn megelzni a katasztrft, s beszlhetne kzvetlenl Don
nal. Ez persze kockzatos, de igazbl errl szl a csapatjtk. Amikor egy elszabadult
tehervonat rohan a csapat fel, s te vagy az egyetlen, aki ltja, csendesen lelphetsz
a snekrl, s vgignzheted, ahogy a vonat elcsapja a tbbieket, vagy elkilthatod
magad, hogy "Vonat! Le a snekrl, gyorsan!
"
.
Kt nappal ksbb ...
54
Paula: "Mike, kzlted Donnal a becslseinket? Elmorta az gyflnek, hogy
a demban nem fog mkdni a fjlfeltlts?
"
Mike: "Paula, azt grted, hogy megoldod, hogy mkdjn.
"
Paula: "Nem, Mike, nem grtem ilyet. ppen hogy azt mondtam, hogy nem le
hetsges. Itt egy pldny az emlkeztetbl, amit a beszlgetsnk utn
kldtem neked.
"
2. FEJEZET
Mike: "J, j, de abban maradtunk, hogy megprblod, nem?
"
Paula: "Ne kezdjk jra, Mike. lom s arany, emlkszel?
"
Mike: (felshajt) "Nzd, Paula, muszj megcsinlni. Egyszeren muszj. Krlek,
tgy meg mindent, amit csak tudsz, brmibe is kerl, de ezt meg kell olda
nod nekem.
"
Paula: "Tvedsz, Mike. Nem kell megoldanom neked. Amit tennem kell- ha te
nem teszed meg -, az az, hogy tjkoztatom Dont a helyzetrl.
"
Mike: "Engem megkerlve? Nem tennl ilyet.
"
Paula: "Nem is flik a fogam hozz, de ha knyszertesz r, megteszem.
"
Mike: ", Paula ...
"
Paula: "Nzd, Mike, a demhoz nem fogunk elkszlni minden szolgltatssal.
Ezt j lenne, ha felfognd vgre. Ne prblj arrl gyzkdni, hogy dolgoz
zunk kemnyebben. Fejezd be az nltatst, hogy n majd elhzok egy
nyulat a kalapbL Nzz szembe a tnnyel, hogy szlnod kell Donnak, mg
hozz ma."
Mike: Celkerekedik a szeme) "Ma?
"
Paula: "Igen, Mike, mg ma. Holnap ugyanis meg akarom beszlni veled s Don
nal, hogy milyen szolgltatsok legyenek benne a demban. Ha erre nem
kerl sor holnap, akkor knytelen leszek egyenesen Donhoz fordulni. Itt
egy pldny a feljegyzsbl, amiben lertam a helyzetet.
"
Mike: "Csak a sajt htad akarod vdeni!
"
Paula: "Mike, n mindkettnk htt prblom vdeni. El tudod kpzelni, micsoda
blama lesz, ha az gyfl gy jn ide, hogy azt hiszi, teljes bemutatt kap, s
nem kapja meg, amit akar?''
Mi lesz a sorsa vgl Paulnak s Mike-nak? Ezt az Olvas fantzijra bzom. A l
nyeg az, hogy Paula profihoz mlt mdon viselkedik. Mindig nemet mond, amikor
kell, s a megfelel mdon mondja. Nemet mond, amikor a becslse mdostsra
krik, nemet mond, amikor hzelegnek s knyrgnek neki, s ami a legfontosabb,
nemet mond Mike nltatsra s ttlensgre. Paula csapatjtkosknt viselkedik:
Mike-nak segtsgre van szksge, s Paula minden tle telhett megtesz, hogy segt
sen neki.
AZ
"
IGEN
"
RA
A legtbbszr igent akarunk mondani. Egy egszsges csapat valjban mindig arra
trekszik, hogy mdot talljon arra, hogy igent mondhasson. Egy jl mkd csapat
fejleszti s vezeti addig trgyalnak egymssal, amg meg nem tudnak egyezni egy
mindenki szmra elfogadhat cselekvsi tervben.
NEMET MONDANI 55
Ahogy azonban lttuk, nha csak gy lehet eljutni a megelel igenhez, ha nem
flnk nemet mondani.
Kvetkezzen most egy tanulsgos trtnet, amelyet John Blanco tett kzz a blogj
ban.2 (Itt a szerz szves engedlyvel szerepel.) Mikzben olvasod, tedd fel magadnak
a krdst, hogy a szerznek mikor s hogyan kellett volna nemet mondania.
NEM LTEZIK J KD?
Tizenvesen gy dntesz, hogy szaftverfejleszt szeretnl lenni. A kzpiskolban
megtanulod, hogyan rhatsz szaftvert az objektumkzpontsg elvei mentn. rett
sgi utn fiskolra kerlsz, s a tanultakat olyan terleteken al kalmazod, mint
a mestersges intelligencia vagy a trgrafika.
Amikor aztn elhelyezkedsz hivatsos programozknt, vg nlkl hajszalod azt
a clt, hogy kereskedelmi minsg, fenntarthat, "tkletes
"
kdot rj, ami killja az
id prbjt.
Kereskedelmi minsg. Aha. Nagyon vicces.
n szerenessnek tartom magam, mert imdom a programtervezsi mintkat, s
szvesen bjom a tkletes kdols elmletrl szl knyveket. Brmikor kpes va- .
gyak egy rn keresztl vitatkozni arrl, hogy mirt rossz az az rklsi hierarchia,
amelyet a trsam vlasztott, akivel extrm programozi prt alkotunk, vagy hogy sok '
esetben mirt jobb a HAS-A, mint az IS-A. Az utbbi idben azonban valami szget '
ttt a fejembe, s nem hagy nyugodni. ..
Amodern szaftverfejlesztsben tnyleg lehetetlen j kdot alkotni?
A TIPIKUS PROJEKTKifRAS
. Teljes s rszids szerzdses programfejlesztknt azzal tltm a napjaimat (s az
jszakimat), hogy mobilalkalmazsokat fejlesztek klnfle gyfeleknek. Az vek .
sorn r kellett jnnm, hogy az gyfl kvnsgai grdtik a legnagyobb akadlyt az
el, hogy olyan minsg programokat rjak, amilyeneket szeretnk.
Mieltt azonban belevgnk a trtnelembe, hadd szgezzem le, hogy nem arrl .
van sz, hogy nem prblok tkletessgre trekedni. Szeretem a tiszta kdot, s nem
ismerek senkit, aki olyan elszntan kutatn a tkletes szoftverfelptst, mint n. '
A gyakorlatban azonban nem mkdik a dolog, s nem azrt, amirt gondolod.
Elmeslek egy trtnetet.
Tavaly v vge fel egy meglehetsen jl ismert cg kzztett egy alkalmazs meg
rsra szl plyzati felhvst. Egy hatalmas ruhzlncrl van sz, de a nvtelen
sg kedvrt hvjuk ket Gorilla Mart-nak. Az iPhone-on szerettek volna megjelenni,
s azt akartk, hogy az alkalmazsuk ksz legyen november utols hetre (a "fekete :
2 http://raptureinvenice.com/?p=63
56 2. FEJEZET
pntekre
"
). Hogy mi volt a gond ezzel? Az, hogy a kirs november elsejn jelent meg,
vagyis kevesebb, mint ngy ht alatt kellett elkszlni az alkalmazssal - mikzben
az Apple-nek mg ma is kt htbe telik, amg jvhagy egy iPhone-programot. Teht
mennyi id is llt rendelkezsre az alkalmazs megrsra? KT HT!
A vllalkozsunk gy dnttt, van kt szabad hete az emltett alkalmazs elksz
tsre. s sajnos meg is nyertk a plyzatot (Az zleti letben az szm t, hogy meny
nyire jelents az gyfl.) Nem volt kibv.
"De semmi para"- mondja Gorilla Mart igazgat No.l. -
"
Az alkalmazs egy-
szer: csak meg kell mutatnia nhny termket a felhasznlnak a katalgusunkbl,
s lehetv kell tennie az zletek cmnek kikeresst. A webhelynkn ez mr m
kdik. Az ott hasznlt grafikkat is tadjuk. Taln csak - hogy is mondjk? -be kell
drtozni a cuccot!"
"Csak pr kuponrl van sz, amit a felhasznl bemutathat a pnztrnl" -csatla
kozik Gorilla Mart igazgat No.2. -
"
Az alkalmazst aztn eldobjuk. Csak legynk tl
rajta; a msodik szakaszban majd felptnk valami nagyobbat s jobbat az alapoktl.
"
Belevgtunk A tbb vnyi tapasztalat ellenre, miszerint minden szolgltatst,
amit az gyfl kr, bonyolultabb megrni, mint elmagyarzni, hittnk benne, hogy
ezttal tnyleg vgznk majd kt ht alatt. Igen, megcsinlj uk! Most minden mskpp
lesz! Csak pr grafika s egy szolgltats, amit fel kell hvni, hogy lekrdezzk az z
letek cmt - XML! Gyerekjtk! Kpesek vagyunk r! gek a tettvgytl, gyernk!
Elg volt egy nap, hogy ismt szembesljnk a valsggal.
n: "Megkaphatnm az zletkeres webszolgltats elrshez szksges infor-
mcikat?"
gyfl:
"
Mi az hogy webszolgltats?"
n:" ......
"
Pontosan az volt a helyzet, amire gondoltam. Az zletkeres szolgltats, amit
pontosan ott talltam, ahol lennie kellett, a weboldal jobb fels sarkban, nem web
szolgltats volt. Az API-val ssze nem ill Java-kd lltotta el, radsul a Gorilla
Mart egyik stratgiai partnere szolgltatta.
Egy stt "harmadik fl".
Ha gyfelekrl van sz, a
"
harmadik fl" olyan, mint Angelina J olie. Hiba az g
ret, hogy felvillanyoz beszlgetsben lesz rszed egy kellemes vacsora mellett, s
aztn taln ssze is jttk ... bocs, de nem fog sszejnni. Legfeljebb lmodozhatsz
rla, mikzben magadat szrakoztatod.
Az emltett esetben az egyetlen dolog, amit sikerlt kicsikarnom a Gorilla Mart
bl, az zleteik aktulis listjnak pillanatfelvtele volt egy Excel-fjlban. Az zletke
res kdot nekem kellett megrnom, a semmibl.
Az igazi csaps a nap vgre rkezett: azt akartk, hogy a termk- s kuponadatok
fenn legyenek a hlzatukon is, hogy hetente vltoztathassanak rajtuk. Ennyit a be
drtozsrl! gy mr nem csak iPhone-alkalmazst kellett megrnom kt ht alatt,
NEMET MONDANI 57
' hanem egy iPhone-alkalmazst s egy PHP-httrkiszolglt, s ssze is kellett kap
csolnom a kett . .. Hogy micsoda? A minsgellenrzst is rm akarjk lcslni?
Jrt az agyam: a tbbletmunkt csak gy ellenslyozhatom, ha gyorsabban kdo
. Iok. Felejtsd el az elvont gyrat! sszettel helyett hasznlj egy szp kvr ciklust,
nincs id!
gy mr tnyleg lehetetlenn vlt, hogy j kdot rjak.
KT HT A BEFEJEZSIG
Az a kt ht rmsges volt. Elszr is, kt nap elment a kvetkez projekttel kapcso
latos rtekezletekre (ami mg inkbb felnagytotta, hogy milyen borzaszt kevs az
id). Vgl sszesen nyolc napom maradt, hogy elkszljek. Az els hten 74 rt
dolgoztam. A msodikon ... istenem, nem is emlkszem - ki trldtt az emlkeze
tembl, ami valsznleg nem is baj.
Nyolc napon t megszllottan kdoltam. Minden rendelkezsre ll eszkzt megra
gadtam, hogy vgezni tudjak: msoltam s beillesztettem (nevezzk kd-jrahasznos-
tsnak), mgikus szmokat hasznltam (hogy az llandkat csak egyszer kelljen meg
hatroznom, s elkerljem az jbli begpels rettenett), s egyltaln NEM rtam
egsgteszteket! (Ki akar ilyenkor piros hibajelzseket? Csak elveszik az ember kedvt!)
Elg szrny kdot szltem, de persze nem volt lehetsg jratervezni. Ugyanak
kor ahhoz kpest, hogy mennyi id llt rendelkezsre, nagyon is klassz munkt v
geztem, plne egy "eldobhat
"
programhoz, nem igaz? Ismers a szveg? Vrj csak,
a java mg htravan.
Mikzben az utols simtsokat vgeztem az alkalmazson (az utols simtsok kz
tartozott a teljes kiszolglkd megrsa), a kdot bngszve azon tprengtem, hogy
vgl is lehet, hogy megrte az erfesztst. Az alkalmazs elkszlt, s tlltem.
"H, John! Van egy j embernk; Bobnak hvjk. Most ppen nagyon sok a dolga,
ezrt nem tudott szemlyesen hvni, de azt mondja, a felhasznlkat arra kellene
: krni, hogy adjk meg az email-cmket, hogy el tudjuk kldeni nekik a kuponokat.
Mg nem ltta az alkalmazst, de szerinte ez nagyszer tlet. Ezenkvl egy jelents
kszt rendszert is szeretnnk, hogy le tudjuk krni az emaileket a kiszolglrL Va
lami szpet, de nem tl drgt. (Vrjunk csak, ez Monty Python volt.) Ja, s ha mr
szba kerlt, a kuponoknak le kell jrniuk az ltalunk megadott szm nap utn.
s persze ... "
Mit is tudunk a j kdrl? A j kd bvthet, fenntarthat, knnyen mdosthat,
s gy olvashat, mint egy knyv. Na, ez a kd nem ilyen volt.
s mg valami. Ha jobb szaftverfejleszt szeretnl lenni, tartsd szben, hogy az
gyfl mindig kitolja a hatridt, mindig tovbbi szolgltatsokat akar, mindig vl
toztat valamin, s mindig az UTOLS UTNI pillanatban. me a kplet:
(igazgatk szma)2
+ 2 x j igazgatk szma
58 2. FEJEZET
+ Bob gyerekeinek szma
=AZ UTOLS PILLANATBAN HOZZADOTT NAPOK SZMA
Az igazgatk rendes emberek. Azt hiszem. Gondoskodnak a csaldjukrl (feltve,
hogy a Stn beleegyezett, hogy legyen nekik). Szortanak az alkalmazs sikerrt
(ellptets!). A gond csak az, hogy mindnyjan stkrezni akarnak a dicssgben,
ezrt kell nekik egy szolgltats vagy tervezsi dnts, amire rmutathatnak, hogy
lm, ez az fejkbl pattant ki.
A trtnethez visszatrve, nhny nappal kitoltuk a projekt hatridejt, s megr
. tam a levelezrendszert. Aztn sszeestem a kimerltsgtl.
AZ GYFELEKET SOHA NEM IZGATJA ANNYIRA, MINT TGED
. Annak ellenre, hogy folyamatosan tiltakoznak s srgetnek, az gyfeleket soha nem
izgatja annyira, hogy az alkalmazs hatridre kszen legyen, mint tged. Azon a dl
. utnon, amikor ksznek tltem meg az alkalmazst, emailben elkldtem a vgleges
, vltozatot az rdekelt feleknek: a projektfelelsknek, az igazgatknak, s gy tovbb.
"ELKSZLT! ME AZ LO-S VLTOZAT! LDASSK A NEVE!" Megnyomtam a "Kl
. ds" gombot, htradltem a szkemben, s dvzlt mosollyal az arcomon arrl fant-
:. ziltam, hogy a cg a vlln visz vgig a 42. utcn, s kikilt a "Valaha Volt Legnagyobb
' !
' Programoznak
"
, de legalbbis az n arckpemet nyomtatja minden plaktjra.
rdekes mdon k mintha ms vlemnyen lettek volna. Tulajdonkppen nem is
igazn tudtam, mit gondolnak. Nem jtt semmilyen visszajelzs. Egy rva szt sem
mondtak. Mint kiderlt, a Gorilla Mart-os fickk mr alig vrtk, hogy a kvetkez
tervkkel foglalkozhassanak, s rgtn tovbb is lptek.
Azt hiszed, fllentek? Ezt figyeld! Az alkalmazst benyjtottam az Apple-holtnak,
anlkl, hogy megadtam volna a lerst. Krtem a Gorilla Mart-ot, hogy adjanak .
egyet, de nem vlaszoltak, s nem volt id rjuk vrni (lsd az elz bekezdst). jra "
rtam nekik. Aztn megint. A sajt fnkeimet is rlltottam a dologra. Ktszer r
kezett vlasz. Mindkt alkalommal azt krdeztk, hogy "Elnzst, mire is lenne szk
sged?". A NYOMORULT PROGRAMLERSRAl
Egy httel ksbb az Apple megkezdte az alkalmazs tesztelst. Ez ltalban
rmteli pillanat, de ebben az esetben inkbb a grcss flelem uralta. Ahogy az vr- 1
hat is volt, az alkalmazst mg aznap visszautastottk, a lehet legsznalmasabb
kifogssal, amit csak el tudok kpzelni: "Az alkalmazsnak hinyzik a lersa." M-
kdni ugyan tkletesen mkdik, de nincs lersa. Csak ezen mlt, hogy a Gorilla
. Mart alkalmazsa nem lphetett mkdsbe a fekete pnteken. Elg dhs voltam.
n felldoztam a csaldomat egy kthetes idegtp rohansrt, a Gorilla Mart-nl
viszont nem akadt senki, aki csak annyit is trdtt volna az alkalmazssal, hogy egy
ht alatt sszedob hozz egy lerst. Miutn az Apple visszautastotta a programot,
egy rn bell megrtk, s tadtk neknk - nyilvn ez volt az a jelzs, amitl vgre
. megjtt az eszk.
NEMET MONDANI 59
Ha korbban mrges voltam, gy tz nappal ksbb felrobbantam a dhtl. A meg
rendeltl ugyanis egsz id alatt nem kaptuk meg a valdi adatokat: a kiszolglra
ideiglenesen csak kitallt, kpzeletbeli termkeket s kuponokat tltttnk fel. A ku
ponkd pldul ez volt: 1234567890. Csupa kamuadat.
Aztn azon a vgzetes reggelen megnztem a portlt, s azt lttam, hogy AZ AL
KALMAZS LETLTHET! Hamis adatokkal! Elborzadtam, s azonnal felhvtam
mindenkit, akit csak tudtam, s vltztem velk:
"
AZ ADATOKAT AKAROM!
. MOST!" (A n a vonal tls vgn megkrdezte, hogy a tzoltkra vagy a rendrsgre
van szksgem, gyhogy letettem, s igyekeztem nem megint a 911-et hvni.) Amikor .
sikerlt elrnem a Gorilla Mart-ot, s levltttem a hajukat, hogy
"
ADATOK KEL
LENEK!", a kvetkezt vlaszoltk - soha nem felejtem el:
", hell, John! j alelnknk van, s gy dnttt, hogy nem adjuk ki a progra-
mot. Lennl szves lehzni az alkalmazsboltbl?"
|
TESZTELS! STRATGIK
|
sszetev
`
Osszeo /
sszetev
l
sszetev
l
131
Az egyttmkdsi teszteket jellemzen a rendszertervezk-vagy a rendszer ve
zet tervezi - rjk, hiszen ezek a tesztek gondoskodnak rla, hogy a rendszer szer
kezeti felptse egszsges legyen. Teljestmny- s teresztkpessgi tesztekkel
szintn ezen a szinten tallkozhatunk.
Az egyttmkdsi teszteket rendszerint ugyanazon a nyelven s krnyezetben
ksztik el, mint az sszetevteszteket. Jellemzennem hajtdnak vgre a folyamatos
bepts rszeknt, mert ltalban hosszabb a f utsi idejk. Ehelyett idszakosan
(minden jjel, hetente stb.) hajtjk vgre ket, ahogy a szerzk szksgesnek tlik.
RENDSZERTESZTEK
A rendszertesztek automatizlt tesztek, amelyek a teljes, integrlt rendszert vizsgljk,
gy a vgs egyttmkdsi teszt szerept tltik be. Nem tesztelnek kzvetlenl zleti
szablyokat; ehelyett azt vizsgljk, hogy a rendszer megfelelen lett-e sszehuzalozva,
s a rszei a tervnek megfelelen mkdnek-e egytt. A rendszertesztek csomagjban
teljestmny- s teresztkpessgi tesztek is helyet kell kapjanak.
A rendszerteszteket a rendszertervezk s a mszaki vezetk rjk, s ltalban
ugyanazon a nyelven s krnyezetben ksztik el, mint a felhasznli fellet egytt
mkdsi tesztjeit A futsi idejk fggvnyben viszonylag ritkn kerl sor a futta
tsukra, de minl gyakrabban hajtjk vgre ket, annl jobb.
A rendszertesztek a rendszernek taln a 10%-t fedik le. Ennek az az oka, hogy
nem a rendszer helyes viselkedsnek, hanem a rendszer helyes felptsnek a bizto
stsa a cljuk. A mgttes kd, illetve sszetevk helyes viselkedsrl a piramis ala
csonyabb szintjein tallhat tesztek gyzdnek meg.
MANULIS FELTR TESZTEK
Ezek azok a vizsglatok, amelyeket emberek vgeznek, a kezket a billentyzeten,
a szemket pedig a kpernyn tartva. Nem automatizlt tesztek, s nincs is rott for
gatknyvk. A cljuk az, hogy a rendszerben vratlan viselkeds utn kutassanak,
mikzben megerstik az elvrt viselkedst. A rendszer ilyesfajta vizsglathoz s fel
dertshez emberi agyra s emberi kreativitsra van szksg, amelynek egy rsban
rgztett tesztdsi terv ellentmondana.
Egyes fejlesztcsapatok kln szakemberekkel vgeztetik ezt a munkt, mg msok
egyszeren kineveznek egy-egy napot
"
bogrvadsz
"
napnak, amikor is a lehet leg
tbben - a menedzsereket, a titkrnket, a programozkat, a tesztelket s a doku
mentcirkat is belertve -
"
gyrik
"
a rendszert, hogy lssk, vajon sikerl-e trdre
knyszerteni.
A cl ebben az esetben nem a minl nagyobb lefedettsg. Ezekkel a tesztekkel nem
azt akarjuk bizonytani, hogy minden egyes zleti szably s minden egyes vgrehaj
tsi tvonal hibtlan, hanem azrt vgezzk el ket, hogy meggyzdjnk rla, hogy
132 8. FEJEZET
a rendszer megfelelen kveti az emberi utastsokat, s annyi
"
furcsasgra
"
bukkan
junk, amennyire csak tudunk.
SSZEFOG LAL AS
A tesztvezrelt fejleszts hatkony megkzelts, az elfogadsi tesztek pedig kitnen
alkalmasak arra, hogy kifejezzk s kiknyszertsk az elvrt viselkedst. Mind
azonltal az elfogadsi tesztek csak egy rszt kpezik a teljes tesztdsi stratgi
nak. Annak rdekben, hogy a minsgellenrk valban
"
ne talljanak semmilyen
hibt
"
, a fejlesztcsapatoknak ssze kell fogniuk a minsgellenrkkel, s egytt kell
kidolgozniuk az egysg-, sszetev-, egyttmkdsi, rendszer- s feltr tesztek hi
erarchijt. Ezeket a teszteket aztn a lehet leggyakrabban kell futtatni, hogy a lehet
legszlesebb kr visszajelzshez jussunk, s biztostsuk a rendszer folyamatos tisz
tasgt.
l RODALOMJEGYZK
[COHN09]: Mike Cohn: Succeeding with Agile. Boston, MA. Addison-Wesley, 2009.
9. FEJEZET
AZ ID BEOSZTSA
Nyolc ra meglehetsen rvid id: csupn 480 perc, vagy 28 800 msodperc. Profi
knt arra kell trekedned, hogy ezt a nhny rtkes msodpercet olyan hatkonyar
s hasznosan hasznld fel, ahogy csak tudod. Milyen stratgival biztosthatod, hogy
ne vesztegesd el azt a kis idt, ami a rendelkezsedre ll. Hogyan oszthatod be hat
konyar az iddet?
1986-ban Angliban, a Surrey grfsgbeli Littie Sandhurst-ben ltem. Egy 15 szem
lyes szaftverfejlesztsi osztlyt vezettem a Teradyne szmra Bracknellben. A napjaim
AZ ID BEOSZTSA 135
kusza sszevisszasgban teltek: telefonhvsok, rgtnztt rtekezletek, karbantartsi
problmk, llandan flbeszaktott munka. Annak rdekben teht, hogy brmivel
vgezni tudjak, meglehetsen drasztikus szablyokat kellett letbe lptetnem az idm
beosztsra:
Minden reggel hajnali 5-kor keltem, s a kerkprommal a bracknelli iro
dba kerekeztem, gy, hogy reggel6-ra odarjek. gy 2 s fl rnyi nyugodt
idhz jutottam, mieltt a szoksos napi kosz megkezddtt volna.
rkezskor felrtam az temtervet a tblra. Az idt 15 perces szeletekre osz
tottam, s bertam, hogy az egyes idszeletekben mit fogok csinlni.
Az temterv els hrom rjt teljesen kitltttem. Minden rban hagytam
egy 15 perces lyukat, amelyben gyorsan elintzheter a vratlanul felmerl
dolgok tbbsgt, hogy utna folytathassam a munkt.
Az ebd utni idt nem osztottam be, mert tudtam, hogy addigra gyis el
szabadul a pokol, s a nap htralev rszben improvizlnom kell. Ha egy
dlutn vletlenl mgsem tombolt a kosz, egyszeren a legfontosabb ten
nivalmat folytattam (amg vgl mgis csak ki nem trt a kosz).
Az temtervet nem mindig tudtam tartani. Nem mindig sikerlt hajnali tkor
felkelnem, a kosz pedig nha teljesen felbortotta a gondosan megtervezett napiren
demet, s felemsztette az egsz napot. A terv azonban az esetek tbbsgben alkal
masnak bizonyult arra, hogy a fejemet a vz felett tartsa.
RTEKEZLETEK
Az rtekezletek rsztvevnknt s rnknt krlbell 200 dollrba kerlnek, a
fizetseket, juttatsokat, brleti djakat s egyebeket is figyelembe vve. Legkze
lebb, amikor rszt veszel egy rtekezleten, szmtsd ki a kltsgeket. Meg fogsz
dbbenni.
Kt igazsgot kell tudnod az rtekezletekrl:
l. Az rtekezletek szksgesek.
2. Az rtekezletek rengeteg idt pocskolnak el.
Ez a kt kijelents gyakran egyformn igaz ugyanarra az rtekezletre: a rsztvevk
nmelyike felbecslhetetlen rtknek tallja, mg msok feleslegesnek vagy haszon
talannak.
Egy profi tisztban van az rtekezletek magas kltsgvel, s azzal is, hogy a sajt
ideje rtkes, hiszen kdot kell rnia, s tartania kell a hatrid ket, ezrt hatrozottan
visszautastja a rszvtelt minden olyan rtekezleten, amely nem jr azonnali s je
lents elnnyel.
136 9. FEJEZET
VISSZAUTAS fT S
Nem kell minden rtekezleten rszt venned, amelyre meghvnak. St mi tbb, ama
tr dolog folyton rtekezleteken lni. Az iddet blcsen kell beosztanod, ezrt gon
dosan meg kell vlogatnod, mely rtekezletekre msz el, s melyeken hrtod el ud
variasan a rszvtelt.
Az a szemly, aki rtekezletre hv, nem felels az idd beosztsrt - ez csak rd
tartozik. Amikor teht meghvt kapsz egy rtekezletre, csak akkor fogadd el, ha a
rszvteled halaszthatatlanul s felttlenl szksges ahhoz, hogy haladni tudj azzal
a munkval, amit ppen vgzeL
Elfordul, hogy az rtekezlet tmja rdekel, de az adott pillanatban nem srgs a
dolog. Ilyen esetben dntened kell, hogy belefr-e az iddbe. Gondosan mrlegelj -
a kelletnl tbb rtekezlet knnyen rtkes napokat rabolhat el tled.
Az is megesik, hogy az rtekezlet olyasmirl szl, amirl lenne mondanivald, de
az ppen vgzett munkd szempontjbl nincs kzvetlen haszna. Ilyenkor is mde
gelned szksges, hogy megri-e idt elvenni a sajt projektedtl a msik rdekben.
Cinikusnak hangozhat, de te elssorban a sajt projektjeidrt felelsz. Mindazonltal
gyakran hasznos, ha az egyik csapat segti a msikat, ezrt clszer lehet megvitatni
a rszvteledet a csapatoddal, illetve a fnkddeL
A rszvteledet egy rtekezleten nha egy magasabb beoszts szemly ignyli,
pldul egy msik projekt felelse vagy vezet mrnke. Ilyen esetben azt kell eldn
tened, hogy a hivatali sly nyom tbbet a latban, vagy a munkatemterved. A dnts
meghozatalban ismt csak a csapatod s a felettesed segthet.
A felettesed egyik legfontosabb feladata, hogy tvol tartson az rtekezletektL Egy
j fnk kill a rszvtelt visszautast dntsed mellett, hiszen neki ppen olyan fon
tos az idd, mint neked.
TVOZS
Az rtekezletek nem mindig alakulnak a terv szerint. Megesik, hogy egy olyan rte
kezleten tallod magad, amire biztosan nem mentl volna el, ha elre tudod, mi lesz.
Nha j tmk merlnek fel, vagy valakinek a vesszparipja uralja a megbeszlst.
n ezrt az vek sorn fellltottam egy egyszer szablyt: ha az rtekezlet unalmass
kezd vlni, tvozz!
Amint mr emltettem, ktelessged jl gazdlkodni az idddeL Ha egy rtekezlet
csak vesztegeti az iddet, mdot kell tallnod arra, hogy udvariasan tvozz.
Termszetesen nem clszer egyszeren kiviharzani azzal a felkiltssal, hogy
"
Ez
dgunalom!
"
. Semmi szksg a gorombasgra. Egyszeren krdezd meg egy alkal
mas pillanatban, hogy a jelenlted mg mindig felttlenl szksges-e. Elmagyarz
hatod, hogy a bokros teendid nem igazn teszik lehetv, hogy tovbb maradj, eset
leg megkrdezheted, hogy fel lehetne-e gyorstani a megbeszlst, vagy elbbre venni
bizonyos napirendi pontokat.
AZ ID BEOSZTSA 137
Fontos, hogy megrtsd, hogy egy olyan rtekezleten ottmaradni, amely csak id
pocskols a szmodra, s amelyhez nem tudsz tbb rdemben hozzszlni, ama
tr dolog. Ktelessged, hogy okosan hasznld fel a munkaadd idejt s pnzt,
ezrt szakmailag az az indokolt, ha egy alkalmas pillanatot kivlasztva udvariasan
tvozol.
MINDIG KELL NAPIREND S CL
Azrt vagyunk hajlandak eltrni az rtekezletek kltsgt, mert egy bizonyos cl
elrse rdekben nha valban szksg van az rintettek sszehvsra. Ahhoz vi
szont, hogy a rsztvevk idejt blcsen hasznostsuk, az rtekezletnek vilgos cllal
s napirenddel kell rendelkeznie, az egyes tmkra sznt id megjellsvel.
Ha arra krnek, hogy vegyl rszt egy rtekezleten, tudd meg, milyen tmkrl lesz
sz, mennyi idt sznnak rjuk, s mik az elrend clok. Ha nem kapsz vilgos v
laszt ezekre a krdsekre, akkor udvariasan mondd le a rszvtelt.
Ha elmsz egy rtekezletre, s gy tallod, hogy a napirend felborult, vagy a meg
beszls egszen ms tmra tereldtt, krd, hogy temezztek be az j tmt, s
trjetek vissza az eredeti napirendhez. Ha ez nem trtnik meg, az els adand alkalom
mal udvariasan mentsd ki magad, s tvozz.
LLRTEKEZLETEK
Az llrtekezletek az agilis mdszertan szerves rszt kpezik. A nevk onnan ered,
hogy a rsztvevk llnak, amg az rtekezlet tart. A rsztvevk egyms utn hrom
krdsre felelnek:
l. Mit csinltam tegnap?
2. Mit fogok csinlni ma?
3. Mi akadlyozza a munkmat?
Ennyi az egsz. Egyik krds megvlaszolsa sem szabad, hogy tbbet ignyeljen
hsz msodpercnl, teht egy-egy rsztvevre legfeljebb egy perc jut. Egy ilyen rte
kezlet mg egy tz fs csapat esetben is lezavarhat tz perc alatt.
MUNKAFZIS-TERVEZSI RTEKEZLETEK
Az agilis mdszertanban ezek a fajta rtekezletek a legnehezebbek. Ha rosszul csinlja
az ember, tl sok idt emsztenek fel. Szakrtelem kell ahhoz, hogy jl szervezd meg
ket - ezt a tudst azonban nagyon is megri elsajttani.
A munkafzis-tervezsi rtekezletek clja azoknak az elmaradsban lev tenniva
lknak a kivlasztsa, amelyeket a kvetkez munkafzisban el kell vgezni. A szba
jhet munkkra, illetve az zleti rtkre vonatkoz becslseknek mr kszen kell
lennik. Egy igazn j cgnl ekkorra mr az elfogadsi s sszetev-teszteket is meg
rjk, vagy legalbbis felvzoljk
138 9. FEJEZET
Az rtekezletnek gyorsan kell haladnia az egyes munkahtralkok rvid megvita
tsval, majd azok elbbre sorolsval vagy elvetsvel. Egyetlen ttelre sem szabad
t-tz percnl tbbet sznni. Ha hosszabb megbeszlsre van szksg, azt egy msik
idpontra clszer betemezni a csapat rintett rszvel.
n azt az alapszablyt kvetem, hogy az rtekezletnek nem szabad tbbet ignyel
nie a munkafzis 5%-nl. Ha az adott munkafzis teht egy htig (negyven rig)
tart, az rtekezletnek kt ra alatt be kell fejezdnie.
MUNKAFZIS-RTKELSEK S BEMUTATK
Ezekre az rtekezletekre, amelyeken a csapat tagjai megvitatjk, mi az, amit sikerlt
elrni, s mi az, amit nem, az egyes munkafzisok vgn kell sort kerteni. A vezetk
ugyanitt tekinthetik meg az jonnan elkszlt szolgltatsok bemutatjt. Az rt
kel rtkezletek sokszor csnyn flresiklanak, s rengeteg idt emszthetnek fel,
ezrt rdemes a munkafzis utols napjnak vgre idzteni ket, a munkaid letelte
eltt 45 percceL A visszatekint rtkelsre nem szabad 20, a bemutatra pedig
25 percnl tbbet sznni, hiszen csak egy-kt ht telt el a legutbbi hasonl rtekezlet
ta, teht tl sok mindenrl nincs mit beszlni.
VITK S NZETELTRSEK
Ezt a blcsessget Kent Becktl hallottam:
"
egy olyan vita, amit nem lehet elsimtani
t perc alatt, nem oldhat meg vitatkozssal
"
. A vita elhzdsa vilgoss teszi, hogy
egyik oldal sem tud egyrtelmen meggyz rveket felhozni - a vita nyilvn hitkr
dsekrl, s nem tnyekrl folyik.
A szakmai nzeteltrsek gyakran a vgtelensgbe nyl vitkat eredmnyeznek.
A felek mindenfle rvet felhoznak az llspontjuk igazolsra, de adatokat csak nagy
ritkn. Adatok nlkl azonban egy vita, amely nem vezet megegyezshez nhny (t
harminc) percen bell, egyszeren soha nem zrhat le. Csak egy megolds lehets
ges: adatokhoz kell jutni.
Vannak, akik a szemlyisgk erejvel prblnak megnyerni egy vitt: ordtoznak,
az arcodba msznak, vagy leereszked stlusban beszlnek veled. Nem szm t, milyen
eszkzkhz folyamodnak, a puszta akarater nem sznteti meg tartsan a nzetel
trseket - csak az adatok kpesek erre.
Egyesek passzv-aggresszv viselkedst mutatnak. gy csinlnak, mintha elfogad
nk az rvei det, csak hogy vget vessenek a vitnak, a megoldsbl azonban kivonjk
magukat, s szabotljk a munkt. Ezt mondjk magukban:
"
Ha gy akarod, akkor
oldd meg magad.
"
Ez valsznleg a legrosszabb fajta szakmaiatlan viselkeds, ami
csak ltezik. Soha ne csinlj ilyet! Ha elfogadsz valamit, akkor kteless
g
ed tartani
magad a megegyezshez.
Hogyan szerezheted meg az adatokat, amelyekre szksged van egy vita felold
shoz? Bizonyos esetekben ksrletezhetsz, vagy modellezheted valamilyen mdon
AZ ID BEOSZTSA 139
a helyzetet, nha azonban a legjobb megolds egyszeren feldobni egy rmt, hogy
ki vlaszd, a kt vits t kz l melyiken indulj el. Ha az adott t sikerhez vezet, akkor
az volt a helyes. Ha nem, mg mindig visszamehetsz, s elindulhatsz a msik ton.
Clszer megszabni egy idkeretet, valamint a feltteleket arra, hogy a vlasztott utat
mikor jobb elhagyni.
vakd j az olyan rtekezletektl, amelyek csak sznteret biztostanak egy vitnak,
s tmogatst igyekeznek szerezni egyik vagy msik oldalnak, s kerld el azokat,
ahol csak az egyik fl mutathatja be az llspontjt.
Ha egy nzeteltrst mindenkppen el kell simtani, akkor krd meg mindkt felet,
hogy legfeljebb t percben adja el az rveit a csapatnak, majd bocssd szavazsra
a krdst. gy az egsz rtekezlet nem tart tovbb tizent percnl.
FKUSZMANNA
Elre is elnzst krek, ha gy reznd, hogy ez a rsz kicsit New Age-szer meta
fizikai jegyeket mutat, vagy a Brtnk s srknyok (Dungeons & Dragons) jtk
filozfijt kveti. Ennek csupn az az oka, hogy a tmrl leginkbb ilyesmik jutnak
az eszembe.
A programozs szellemi gyakorlat, amely hossz tv sszpontostst ignyel.
A fkusz azonban ritka kincs- olyan, mint a manna.1 Ha elhasznltaci a
"
fkuszman
ndat
"
, legalbb egy rn t sszpontostst nem ignyl tevkenysgeket kell vgez
ned, hogy jratltsd a raktrakat
Nem tudom, mi lehet a fkuszmanna, de rzsem szerint egy fizikai szubsztancia
(vagy annak hinya), ami hatssal van az bersgre s a figyelemre. Brmi is legyen,
rzed a jelenltt, s azt is, ha kifogytl belle. A profi szoftverfejlesztk megtanuljk,
hogy gy osszk be az idejket, hogy optimlisan hasznlhassk fel a fkuszmann
jukat. Akkor runk kdot, amikor a fkuszmanna szintje magas, s ms, kevsb
produktv dolgokat csinlunk, ha a tartalkok megcsappantak.
A fkuszmanna leboml nyersanyag. Ha nem hasznlod fel, amikor rendelkezsre
ll, valsznleg el fogod veszteni. Ez az egyik oka, amirt az rtekezletek elszvhat
jk az energidat. Ha minden fkuszmanndat egy rtekezletre pazarolod, a kd
rsra mr nem fog maradni.
A manna szokvnyos nyersanyag az olyan fantzia- vagy szerepjtkokban, mint a Dungeons &
Dragons. Minden jtkosnak van egy bizonyos mennyisg mannja, ami egy mgikus anyag, s
minden alkalommal cskken a szintje, amikor a jtkos valamilyen bbjt alkalmaz. Minl hat
sosabb a varzsige, annl tbb fogy a mannbl. A manna lass, rgztett tempban tltdik jra,
ezrt mr nhny varzslattal knnyen el lehet hasznlni az sszes tartalkot.
140 9. FEJEZET
A gondterheltsg s a munkdat flbeszakt zavar tnyezk ugyancsak fkusz
mannt emsztenek fel. A proddal elz este folytatott veszekeds, a lkhrtdon
ma reggel keletkezett horpads, vagy a szmla, amelyet elfelejtettl befizetni a mlt
hten, mind olyan dolgok, amelyek gyorsan elszvhatjk a fkuszmanndat.
ALVS
Az alvs jelentsgt nem tudom elgg hangslyozni. Nekem egy kiads jszakai
alvs utn a legmagasabb a fkuszmanna-szintem. Ht rnyi alvs gyakran elegend
fkuszmannval tlt fel egy teljes, nyolc rs munkanapra. A profi szoftverfejlesztk
gy osztjk be a pihenidejket, hogy feltltsk a fkuszmanna-raktraikat, mire
reggel munkba kell indulniuk.
KOFFEIN
Semmi ktsg, hogy nhnyunk hatkonyabban tudja felhasznlni a fkuszmannjt,
ha mrskelt mennyisg koffeint juttat be a szervezetbe. Ezzel azonban lgy vatos,
ugyanis a koffein furcsn sztszrtt is teheti a figyelmedet. Ha tl sokat fogyasztasz
belle, a figyelmed a legfurcsbb helyekre kalandozhat el. Egy igazn ers koffein
zsongs eredmnyeknt akr egy egsz napot is elvesztegethetsz nem a megfelel dol
gokra sszpontostva.
A koffeinfogyaszts s -trkpessg egynenknt vltoz. n egy cssze ers k
vt szaktam inni reggel, ebdhez pedig egy dits klt. Nha megduplzar ezt az
adagot, de ennl tbb koffeint ritkn fogyasztok
JRATLTDS
A fkuszmanna-raktr rszben jratlthet azzal, ha ms, ers sszpontostst nem
ignyl dolgokkal foglalkozol. Egy kiads sta, egy beszlgets a bartaiddal, st akr
az is, ha egy ideig csak bmulsz kifel az ablakon, segthet, hogy jra megemeld a f
kuszmanna-szintedet. Vannak, akik meditlnak, vannak, akik szunyklnak egyet,
mg msok rdit hallgatnak, vagy tlapoznak egy magazint.
Tapasztalataim szerint, ha a manna elfogyott, erltetni sem tudod az sszponto
stst. Ilyenkor is rhatsz kdot, de szinte biztos, hogy msnap jra kell rnod - vagy
hnapokig, esetleg vekig egytt kell lned egy rothad masszval. Ennl jobb meg
olds, ha egy fl vagy akr egy egsz rig nem sszpontostasz a munkra.
IZOMFKUSZ
Van valami klns az olyan fizikai tevkenysgekben, mint a kzdsportok, a tai esi
vagy a jga: br jelents mrtk sszpontostst ignyelnek, ez msfajta fkusz, mint
amire a kdrsnl szksg van. Nem szellemi, hanem az izmok. Az "izomfkusz"
pedig valamirt segt jratlteni a szellemi tartalkokat. Nem is egyszer jratltsrl
AZ ID BEOSZTSA 141
van sz: tapasztalataim szerint az izmok rendszeres edzse nveli is a szellemi ssz
pontostsra val kpessget.
n testedzsnek a biciklizst vlasztottam. Kerekezni szaktam egy-kt rt, nha
hsz-harminc mrfldet is megtve. A Des Plaines folyval prhuzamosan fut s
vnyen szaktam bringzni, ezrt nem kell autkat kerlgetnem.
Biciklizs kzben csillagszati vagy politikai tmj podeastokat hallgatok, esetleg
a kedvenc zenimet. Nha pedig kikapcsalom a kszlket, s a termszet hangjait
figyelem.
Vannak, akik ktkezi munkval pihentetik az agyukat: frnak-faragnak, madel
leket ptenek, vagy kertszkednek Brmilyen tevkenysget vgezzenek is, van va
lami az izmok megdolgoztatsban, ami serkenti az agymkdst.
BEMENET S KIMENET
Az sszpontosts fenntartsa rdekben van mg egy dolog, amit ltfontossgnak
tartok: megfelel bemenettel tpllni magamat, hogy kiegyenslyozzam a kimenetet.
Szaftvert rni alkot tevkenysg, n pedig akkor rzem magamban a legtbb alkot
energit, ha msok alkotsaibl tplkozhatom, ezrt sok-sok sci-fit olvasok. A szer
zk kreativitsa valamilyen okbl kifolylag engem is j tletekre sarkall szaftverrs
kzben.
IDDOBOZOLS S PARADICSOMOK
Az egyik nagyon hatkony mdszer, amelyet az idm s az sszpontostsi kpess
gem beosztsra alkalmazok, a kzismert Pomodoro-technika2, amit "paradicso
mok" nven is ismernek. Az alaptlet nagyon egyszer. Belltasz egy htkznapi,
konyhai idmrt (hagyomnyosan paradicsom alakt) 25 percre, s amg az idzt
fut, nem hagyod, hogy brmi megzavarjon abban, amit csinlsz. Ha csng a telefon,
felveszed, s udvariasan megkrdezed, hogy visszahvhatnd-e az illett 25 perc mlva.
Ha valaki odajn hozzd, mert krdezni szeretne tled valamit, udvariasan elhrtod
azzal az grettel, hogy 25 perc mlva megkeresed. Nem szmt, mi szakt flbe, csak
az utn foglalkozhatsz vele, hogy az idzt lejrt. Vgl is, kevs dolog annyira let
bevg, hogy nem vrhat 25 percet!
Amikor a paradicsom csenget, azonnal abbahagyod, amit csinlsz, s sort kertesz
azoknak a dolgoknak az elintzsre, amelyek az idmrs kzben felmerltek Ezt
kveten tartasz pr perc sznetet, majd az idztt ismt belltod 25 percre, s ne-
2 http://www.pomodorotechnique.com/
142 9. FEJEZET
kiltsz a kvetkez
"
paradicsomnak
"
. Minden negyedik paradicsom utn hosszabb
- gy harminc perces - pihent tartasz.
Ennek a mdszernek tekintlyes irodalma van, amelyet a szves figyelmedbe ajn
lok. A fenti lers mindazonltal jl szemllteti a technika lnyeg t.
Ezt a mdszert alkalmazva az iddet
"
paradicsom
"
s
"
nem paradicsom
"
idegy
sgekre (
"
dobozokra
"
) osz tod. A paradicsarok jelkpezik a tevkeny idt. A paradi
csomokon bell vgzel igazi munkt, mg a paradicsomokon kvli idben rendezed
a mellkes krdseket, rtekezleteken veszel rszt, pihensz, illetve egyb olyan dol
gokkal foglalkozol, amelyek nem kzvetlenl a munkdhoz tartoznak.
Hny paradicsommal vgezhetsz egy nap alatt? Egy j napon akr tizenkettvel,
st akr tizennggyel, de ha rossz napod van, lehet, hogy csak kett-hrommal.
Ha szmolod ket, s brzolod a teljestmnyt, gyorsan felmrheted, mennyire ered
mnyesek a napjaid, s mennyi idt tltesz
"
egyebekkel
"
.
Vannak, akiknek annyira bejn ez a mdszer, hogy paradicsomban adjk meg
a becslsket arra nzve, hogy mennyi id szksges egy-egy feladat elvgzshez,
s a heti sebessgket is paradicsomban mrik. Ez azonban csak hab a tortn.
A Pomodoro-technika igazi elnyt a 25 perces tevkeny idegysgek jelentik, ame
lyeket a lehet leghatrozottabban meg kell vdened minden zavar tnyezvel
szemben.
ELKERLS
Nha elfordul, hogy egyszeren nem tudod rvenni magad a munkra. Lehet, hogy
az elvgzend feladat ijeszt, knyelmetlen vagy unalmas. Az is lehet, hogy gy v
led, sszetkzsre fog knyszerteni valakivel, vagy olyan mocsrba vezet, amibl
nem tudsz majd kikeveredni. De az is megeshet, hogy egyszeren nincs kedved
a feladathoz.
ELSBBSG-MEGFORDrTAS
Brmi is legyen az ok, tallni fogsz r mdot, hogy elkerld a munka elvgzst. Meg
gyzd magad, hogy valami ms srgsebb, s inkbb azzal foglalkozol. Ezt hvjk
elsbbsg-megfordtsnak (priority inversion): megemeled egy feladat fontossgi szint
jt, hogy elhalaszthasd a valjban elsbbsget lvez feladat elvgzst. Ha megfor
dtod az elsbbsgi viszonyokat, magadnak hazudsz. Nem tudsz szembenzni azzal,
amit meg kell tenned, ezrt meggyzd magad, hogy egy msik feladat fontosabb.
Tudod, hogy nem az, de inkbb hazudsz magadnak.
Pontosabban nem is magadat csapod be: valjban elksztesz egy hazugsgot,
amit majd mondani fogsz, ha valaki megkrdezi, mit csinlsz, s mirt azt csinlod.
A vdelmedet pted fel msok tletvel szemben.
AZ ID BEOSZTSA 143
Vilgos, hogy ez szakmaiatlan viselkeds. Egy profi felmri a feladatok fontoss
gt, s a szemlyes flelmeit s vgyait flretve azokat hajtja vgre, amelyek valban
elsbbsget lveznek.
VAKVGNYOK
A vakvgnyok minden szaftverfejleszt szakember letnek a rszt kpezik. Nha
hozol egy dntst, s elindulsz egy olyan szakmai ton, ami sehov sem vezet. Minl
rdekeltebb vagy a dntsed sikerben, annl tovbb fogsz bolyongani a vadonban.
Ha a szakmai hrnevedet tetted kockra, sosem keveredsz ki az erdbl.
A tapasztalat s az elvigyzatossg segt, hogy elkerlj bizonyos vakvgnyokat,
de soha nem kerlheted el az sszeset Az igazi szakrtelem ahhoz kell, hogy gyorsan
felismerd, ha tvton jrsz, s legyen btorsgod visszafordulni. Ezt nha "A gdrk
szablynak" (The Rule ofHoles) hvjk: ha egy gdrben tallod magad, hagyd abba
az sst.
Egy profi igyekszik elkerlni, hogy olyannyira rdekelt legyen egy tlet sikerben,
hogy ne tudjon lemondani rla, s visszakozni. Egy profi nyitott ms tletekre is,
hogy ha zskutcba jutna, mindig legyen kit.
MOCSARAK, DAGONYK, INGOVNYOK
S MINDENFLE SZEMTHALMOK
A szemthalmok a vakvgnynl is rosszabbak, mert csak lelasstanak de nem lltanak
meg. Akadlyozzk az elrehaladst, de nyers ervel tverekedve magad rajtuk tovbb
mehetsz. A szemthalmok azrt rosszabbak a vakvgnyoknl, mert mindig ltod az
elre vezet utat, s az mindig rvidebbnek tnik, mint a visszat (pedig nem az).
Lttam mr szemthalomm vltozott szoftver miatt tnkretett termkeket s
csdbe ment cgeket, s lttam hatkonyan dolgoz csapatokat mindssze nhny h
nap alatt zombiv vlni. Semminek sincs mlyebb s tovbb tart negatv hatsa egy
szaftverfejleszt csapat termelkenysgre, mint egy szemtkupacnak. Semminek.
A problma az, hogy a szemthalmok ugyangy elkerlhetetlenek, mint a vakv
gnyok. A tapasztalat s a krltekints segthet ksleltetni a megjelensket, de
elbb-utbb meg fogsz hozni egy olyan dntst, ami szemthalomhoz vezet.
A szemthalom alattomosan nvekszik. Kidolgozo! egy megoldst egy egyszer
problmra, gyelve r, hogy a kd tiszta s ttekinthet maradjon. Ahogy azonban
a problma kiterjedse s bonyolultsga n, bvteni kezded a kdalapot (persze to
vbbra is igyekszel, hogy a kd a lehet legtisztbb maradjon). Egy ponton egyszer
144 9. FEJEZET
csak rjssz, hogy mr az elejn rossz tervezsi dntst hoztl, s a kcod nem mre
tezhet jl abban az irnyban, amerre a kvetelmnyek tartanak.
Ez a fordulpont. Ekkor mg mindig visszam ehetsz, s kijavthatod a szaftver szer
kezett, de tovbb is haladhatsz elre. Visszakozni kltsgesnek tnik, mert t kell
dolgoznod a mr meglev kdot, csakhogy ksbb csak nehezebb lesz visszafordulni.
Ha tovbb gzalsz elre, a rendszert egy macsrba vezeted, amelybl lehet, hogy soha
tbb nem tud kiszabadulni.
A profik sokkal jobban tartanak a szemthalmoktl, mint a vakvgnyoktL Min
dig beren vizslatjk, hogy nem kezd-e mrtktelen nvekedsbe egy szemtkupac,
s minden szksges erfesztst megtesznek annak rdekben, hogy a lehet leggyor
sabban kikecmeregjenek a macsrbL
Elregzolni egy mocsrban, mikzben tudod, hogy az egy mocsr, az elsbbsg
megfordts legrosszabb fajtja. Az elre haladssal hazudsz magadnak, a csapatod
nak, a cgednek s a megrendelknek is. Azzal nyugtatod ket, hogy minden rendben
lesz, mikzben egytt merltk el a vgzetes mocsrban.
SSZEFOGLALS
A profi szoftverfejlesztk krltekinten igyekeznek beosztani az idejket, s meg
rizni az sszpontostsi kpessgket. Tisztban vannak az elsbbsgek megford
tsra csbt tnyezkkel, s becslettel kzdenek ellenk. Nyitottak az alternatv
megoldsokra, hogy minden t szabadon maradjon elttk; soha nem kockztatnak
annyit egy megoldssal, hogy ne tudjk feladni azt; s mindig beren figyelik a n
vekv szemtkupacokat, hogy azonnal eltakarthassk ket, amint felismerik. Nincs
szomorbb ltvny egy olyan szaftverfejleszt csapatnl, amelyik eredmnytelenl
vonszolja magt elre egy egyre mlyl mocsrban.
10.FEJEZET
BECSLS
A becsls az egyik legegyszerbb, ugyanakkor legijesztbb tevkenysg, amivel
a profi szaftverfejlesz tk szembeslnek. Egy vllalkozs sorsa vagy a hrnevnk ml
hat rajta. Sokszor ez ll a szarongsaink s a kudarcaink mgtt. A becsls az zlet
emberek s a fejlesztk kz bevert legfontosabb k, s szinte teljes egszben innen
ered a viszonyukat ural bizalmatlansg.
1978-ban vezet fejlesztje voltam egy assembly nyelven rt, 32K-s, begyazott
Z-80-programnak. A programot 32 darab lK x 8 EEprom lapkba gettk. Ezt a 32
lapkt hrom krtyra szereltk, amelyek mindegyike 12 lapkt trolt.
BECSLS 147
A terepen eszkzk szzaival rendelkeztnk, amelyek telefonkzpontokban voltak
teleptve szerte az Egyeslt llamokban. Minden alkalommal, amikor kijavtottunk
egy programhibt, vagy hozzadtunk egy szolgltatst a szoftverhez, minden egy
sgbe karbantartkat kellett kldennk, hogy kicserljk mind a 32 lapkt.
Egy rmlom volt. A lapkk s a krtyk trkeny anyagbl kszltek, a lapkk ti
knnyen meghajlottak s eltrtek, a krtyk folytonos hajltgatsa pedig krosthatta
a forrasztsakaL Hatalmas volt a trs s a hibk kockzata, a kltsgek pedig tls
gosan magasnak bizonyultak a cg szmra.
A fnkm, Ken Finder, arra krt, hogy oldjam meg ezt a problmt. Azt szerette
volna, hogy gy lehessen vltoztatni egy lapkn, hogy ne kelljen az sszes tbbit is
kicserlni. Ha olvastad a korbbi knyveimet, vagy hallottad valamelyik eladsomat,
akkor tudhatod, hogy sokat beszlek a fggetlen telepthetsgrL Ez volt az az eset,
amikor elszr szembesltem ennek fontossgvaL
A gondot az jelentette, hogy a szaftver egyetlen sszeszerkesztett, vgrehajthat
llomnybl llt. Ha j kdsorral bvtettk a programot, akkor a kd rkvetkez
sszes sornak megvltozott a memriacme. Mivel minden lapja lK-t trolt a cm
trbl, lnyegben minden lapka tartalma megvltozott.
A megolds meglehetsen egyszernek bizonyult. Minden lapkt fggetlenteni
kellett a tbbitl. Olyan nll fordtsi egysgekk kellett alaktani ket, amelyeket
egymstl fggetlenl lehet begetni.
Megmrtem ht az alkalmazs sszes fggvnynek mrett, s rtam egy egy
szer programot, amely kiraksjtkknt helyezte el azokat a lapkkon, krlbell
100 bjtnyi helyet hagyva a ksbbi bvtsnek Minden lapka elejn elhelyeztem egy
tblzatot a lapkn tallhat fggvnyek mutatival. Rendszerindtskor ezek a mu
tatk a RAM-ba kerltek, a rendszer kdjt pedig gy mdostottuk, hogy a fggv
nyeket soha ne kzvetlenl, hanem kizrlag ezeken a RAM-vektorokon keresztl
hvja meg.
Igen, jl rted. A lapkkat v-tblkkal rendelkez objektumknt, a fggvnyeket
pedig tbbalakknt (polimorfknt) kezeltem. gy tanultam meg az objektumkz
pont tervezs bizonyos elveit- jval azeltt, hogy egyltaln tudtam volna, mi az az
objektum.
Mindez hatalmas elnykkel jrt. Nem csak hogy nllan telepthettk a lapk
kat, hanem a terepen bizonyos fggvnyeknek a RAM-ba helyezsvel s a vektorok
tirnytsval foltozst is vgezhettnk Ez a terepen vgrehajtott hibakeresst, il
letve menet kzbeni javtst sokkal knnyebb tette.
De egy kiss elkalandoztam. Amikor Ken odajtt hozzm, s felkrt a problma
megoldsra, felvetette, hogy esetleg prblkozzak fggvnymutatkkal. Egy-kt nap
alatt kidolgoztam az tletet, majd bemutattam neki egy rszletes tervet. Ken megkr
dezte, mennyi idbe telik megvalstani a tervet, n pedig azt feleltem, hogy krl
bell egy hnapba.
148 10.FEJEZET
Hrom hnapig tartott.
letemben csak ktszer rgtam be, s csak egyszer voltam igazn rszeg: a Teradyne
karcsonyi bulijn, 1978-ban. 26 ves voltam.
A bulit a Teradyne irodjban tartottuk, ami jrszt egy nyitott labor volt. Min
denki korn rkezett, a zenekarnak s az telfutrnak azonban tjt llta egy hatal
mas hvihar. Szerencsre pia volt bven.
Nem emlkszem tl sok mindenre abbl az jszakbl, de amire igen, azt is jobb
lenne elfelejteni. Egy megrendt pillanatot azonban megosztank az Olvasval.
Trklsben ltem a padln Kennel (a fnkmmel, aki mr 29 ves volt akkor,
s nem rgott be), s arrl panaszkodtam neki, hogy milyen sokig tart a vektorizcis
munka. Az alkohol kiengedte az elfojtott flelmeimet s ktsgeimet a becslsemmel
kapcsolatban. Azt hiszem, a fejemet nem hajtottam az lbe, de a rszletekre csak ho
mlyosan emlkszem.
Arra emlkszem, hogy megkrdeztem, haragszik-e rm, s gy gondolja-e, hogy
tl sokig tart nekem a dolog. Br az jszaka egsze kdbe vsz, azt, amit vlaszolt,
vtizedekkel ksbb sem felejtettem el. Ezt mondta:
"
Igen, szerintem nagyon sokig
tart, de ltom, hogy kemnyen dolgozol az gyn, s jl haladsz. Erre tnyleg szk
sgnk van, gyhogy nem, nem haragszom rd.
"
MIT JELENT A BECSLS?
Az a baj, hogy mindenki mskpp rtelmezi a becslseket Az zletemberek ktele
zettsgvllalsknt tekintenek a becslsekre, a fejlesztk azonban tallgatsknt -
mrpedig ez alapvet klnbsg.
KTELEZETTSGVLLALS
A ktelezettsgvllals azt jelenti, hogy valamit teljestened kell. Ha ktelezettsget
vllalsz arra, hogy valamivel eikszlsz egy bizonyos hatridre, akkor egyszeren
muszj akkorra elkszlnd. Ha ez azt jelenti, hogy napi 12 rt kell dolgoznod, a ht
vgket is belertve, s le kell mondanod a csaldi nyaralsrl is, akkor azt kell ten
ned. Ktelezettsget vllaltl, gyhogy llnod kell a szavad.
Egy profi nem vllal ktelezettsget, hacsak nem tudja biztosan, hogy kpes lesz tel
jesteni. Ennyire egyszer. Ha arra krnek, hogy ktelezd el magad valami mellett, ami
ben nem vagy biztos, hogy el tudod vgezni, akkor a tisztessg azt kvnja, hogy vissza
utastsd a krst. Ha arra krnek, hogy vllalj be egy olyan hatridt, amirl tudod, hogy
elrhet, de tlrzst, htvgket s kihagyott csaldi vakcikat ignyel, akkor a dn
ts a te kezedben van - de jobban jrsz, ha ksz vagy megtenni, amit csak kell.
A ktelezettsgvllals alapja a bizonyossg. Akik fel vllalsz valamit, azok ter
veket fognak alapozni a vllalsodra. Ha nem teljested, amit vllal tl, azrt a hrneved
BECSLS 149
s k is hatalmas rat fizetnek. Egy vllals nem teljestse tisztessgtelen, s csak egy
fokkal kevsb slyos, mint a nylt hazugsg.
BECSLS
A becsls ezzel szemben tallgats. Nem jelent ktelezettsgvllalst Nem tartalmaz
gretet. Ha egy becsls tvesnek bizonyul, az semmilyen mdon nem tekinthet tisz
tessgtelensgnek. Azrt ksztnk becslseket, mert nem tudjuk, hogy egy adott fel
adat elvgzse mennyi idbe fog telni.
Sajnos a legtbb szaftverfejleszt szrnyen rosszul becsl. Emgtt nem az ll,
hogy a becslshez valamifle titkos kpessg kell - sz sincs rla. Azrt becslnk
gyakran nagyon rosszul, mert nem rtjk a becsls valdi termszett.
A becsls nem szm, hanem eloszls. Vegyk a kvetkez pldt:
Mike:
"
Becslsed szerint mennyi id kell a Frazzle-feladat elvgzshez?
"
Peter:
"
Hrom nap.
"
Peter tnyleg ksz lesz hrom nap alatt? Lehetsges, de mennyire valszn? A v
lasz az, hogy fogalmunk sincs. Hogy rtette Peter azt, amit mondott, s mit tudott
meg belle Mike? Ha Mike hrom nap mlva felkeresi Petert, lepdjn meg, ha Peter
esetleg nincs ksz? Mirt kellene meglepdnie? Peter nem vllalt ktelezettsget. Nem
arrl beszlt, hogy mennyivel valsznbb a hrom nap, mint a ngy vagy az t.
Mi trtnt volna, ha Mike megkrdezi Petert, hogy mennyire valszn, hogy v-
gezni tud a becslt hrom nap alatt?
Mike:
"
Mennyire valszn, hogy vgezni tudsz hrom nap alatt?
"
Peter:
"
Elgg.
"
Mike:
"
Tudnd szmszersteni?
"
Peter:
"
tven-hatvan szzalk.
"
Mike:
"
Teht knnyen lehet, hogy ngy nap lesz belle.
"
Peter:
"
Igen, st akr t vagy hat is, br azt ktlem.
"
Mike:
"
Mennyire valszntlen?
"
Peter:
"
Ht, nem is tudom ... Kilencvent szzalkig biztos vagyok benne, hogy
kevesebb, mint hat nap alatt elkszlk.
"
Mike:
"
gy rted, ht nap is lehet?
"
Peter:
"
Csak akkor, ha semmi nem jn ssze. De ha tnyleg minden flresiklik,
akkor akr tz-tizenegy nap is lehet. De az nem tl valszn, hogy ennyire
pechnk legyen.
"
Most mr kzeltnk az igazsg fel. Peter becslse egy valsznsg-eloszls.
Peter egy olyan diagramknt ltja a befejezs valsznsgt a fejben, mint amilyet
a 10.1. brn lthatsz.
150 10.FEJEZET
gy mr vilgos, mirt becslt Peter elszr hrom napot. Ez a legmagasabb oszlop
a diagramon - ez jelkpezi, hogy Peter mit tekint a feladat legvalsznbb idigny
nek Mike azonban mskpp ltja a dolgokat. a diagram jobb oldali oszlopait nzi,
s aggdik, hogy Peter esetleg tnyleg csak tizenegy nap alatt fog vgezni.
50%
45%
40%
35%
30%
25%
20%
15%
10%
5%
-
-
O%
2
10.1. bra
Valsznsg-eloszls
-
-
-
1-
3 4
l l r -
5 6 7 8 9 10 11
De valban kell-e Mike-nak aggdnia emiatt? Termszetesen! Murphy1 biztosan
elszrakozik majd Peterrel, teht lesznek olyan dolgok, amelyek balul tnek ki.
BELERTETT KTELEZETTSGVLLAL 5
Mike-nak teht van egy gondja: nem tudja biztosan, mennyi ideig fog tartani Peter
nek a feladat vgrehajtsa. A bizonytalansg lehet legkisebbre cskkentse rdek
ben megkrheti Petert, hogy vllaljon ktelezettsget, Peter azonban nincs abban
a helyzetben, hogy gretet tehessen:
Mike: "Peter, tudnl mondani nekem egy biztos idpontot, amire kszen leszel?
"
Peter: "Nem, Mike. Ahogy mondtam, csak azt tudom, hogy valsznleg hrom,
esetleg ngy nap kell.
"
Mike: "Maradhatunk akkor ngyben?
"
Peter: "Nem, mert az t vagy a hat sincs kizrva."
l Murphy trvnye kimondja, hogy ha valami elromolhat, akkor el is romlik.
BECSLS 151
Eddig mindkt fl korrekten viselkedik. Mike ktelezettsgvllalst kr, Peter
azonban tapintatosan visszautastja. gy aztn Mike mssal prblkozik:
Mike:
"
Rendben, Peter, de meg tudod prblni, hogy ne tartson tovbb hat napnl?
"
Mike krse elg rtatlannak hangzik, s Mike-nak ktsgkvl nincsenek hts szn
dkai. De pontosan mire is kri Mike Petert? Mit jelent a
"
megprblni
"
?
A 2 fejezetben mr szba kerlt ez. A
"
prblkozni
"
ige megtveszt kifejezs.
Ha Peter beleegyezik, hogy
"
megprblja
"
, akkor flrerthetetlenl elktelezi magt
a hatnapos hatrid mellett. Ha beleegyezel abba, hogy
"
megprblod
"
, akkor kte
lezettsget vllalsz a sikerre.
Milyen ms rtelmezs lehetsges? Pontosan mit fog tenni Peter, hogy
"
megpr
bljon
"
vgezni? Tbbet fog dolgozni napi nyolc rnl? Ez elg egyrtelmen benne
van. Htvgn is dolgozni fog? Igen, ez is belerthet. Kihagyja a csaldi programo
kat? Igen, hallgatlagosan ebbe is belemegy. Mindezek hozz tartoznak a
"
prblko
zshoz
"
. Ha Peter mgsem lenne hajland ilyesmikre, akkor Mike azzal vdolhatn,
hogy nem tesz meg mindent.
Egy profi vilgosan meghzza a hatrt a becsls s a ktelezettsgvllals kztt,
s kizrlag akkor vllal ktelezettsget, ha biztosan tudja, hogy sikerrel fog jrni.
gyel r, hogy ne tegyen semmilyen belertett ktelezettsgvllalst. A becslsei va
lsznsg-eloszlst igyekszik a lehet legvilgosabban a msik tudomsra hozni,
hogy a dntshozk megfelelen tudjanak tervezni.
PERT
A Program Evaluation and Review Technique (PERT; programrtkel s fellvizsgl
mdszer) 1957-ben szletett, s az amerikai haditengerszet Polaris tengeralattjr
programja szmra alkottk meg. A PERT egyik elemt a becslsek kiszmtsnak
mdja jelenti. A sma nagyon egyszer, de igen hatkony mdszert biztost a becslsek
dntshozk szmra felhasznlhat valsznsg-eloszlsokk alaktsra.
Amikor megbecsld egy feladat idignyt, hrom szmot adsz meg. Ezt hvjk
hromvaricis analzisnek:
O: Optimista becsls. Ez a szm szlssgesen optimista. Csak akkor tudod
ilyen gyorsan vgrehajtani a feladatot, ha minden tkletesen klappol. A ma
tematikai szmts valjban csak akkor mkdik, ha ennek a szmnak 1%
nl sokkal kisebb az elfordulsi eslye.2 Peter esetben, ahogy a 10.1. bra
mutatja, az optimista becsls l nap.
2 A pontos szm norml eloszlsnll:769, vagy 0,13% ,vagy 3 szigma. Az egy az ezerhez esly valsz
nleg alkalmazhat.
152 10.FEJEZET
N: Nvleges becsls. Ennek a becslsnek van a legnagyobb eslye a sikerre.
Ha oszlopdiagramot kellene rajzolnod, ez lenne a legmagasabb oszlop. A 10.1.
brn ez a 3 nap.
P: Pesszimista becsls. Ez ismt csak szlssges becsls, amelybe mindent
bele kell szmolni, kivve a hurriknokat, az atomhbort, az elkborolt fe
kete lyukakat s ms katasztrfkat. Ebben az esetben is igaz, hogy a mate
matika csak akkor mkdik, ha ennek a szmnak 1%-nl sokkal kisebb az
elfordulsi eslye. Peter esetben ez a szm mr nem is frt fel a diagram
jobb oldalra. Teht 12 nap.
Ha adott a fenti hrom becsls, a valsznsg-eloszlst gy rhatjuk fel:
Jl=0+4N+P
6
A l a feladat vgrehajtsnak vrhat idtartama. Ez Peter esetben (l +12+ 12)/6,
vagyis 4,2 nap. A legtbb feladatnl nmileg pesszimista szmot kapunk,
mert az eloszlsi fggvny jobb oldali farka hosszabb, mint a bal oldali. 3
c=P-0
6
A c a feladat valsznsg-eloszlsnak szrsa4 (standard eltrse), ami azt
adja meg, hogy mennyire bizonytalan a feladat befejezse. Ha ez a szm nagy,
akkor a bizonytalansg is az. Peter esetben ez a szm (12- 1)/6, vagyis k
rlbell l,S nap.
Peter 4,2/1,8 becslse alapjn Mike megrti, hogy a feladat valsznleg ksz lesz t
napon bell, de hat vagy akr kilenc napot is ignybe vehet.
Mike azonban nem csak egyetlen feladatrt felel, hanem egy sok rszfeladatbl ll
projektrt Ezek kzl hrom tartozik Peterre, akinek sorban egyms utn kell vg
rehajtania azokat. Peter a 10.1. tblzatban lthat becslseket adta az emltett felada
tokra:
3 A PERT felttelezi, hogy ez kzeltleg bta eloszlst eredmnyez. Ez sszer, hiszen egy feladat
minimlis idignye gyakran biztosabb a maximlisnL [McConnell2006]1-3. bra
4 Ha nem tudod, mi az a szrs (standard eltrs), akkor keress egy j sszefoglalst a valsznsg
szmtsrl, illetve a statisztikai szmtsokrL Az alapelvet nem nehz megrteni, s nagyon j
szolglatot tehet.
BECSLS 153
10.1. tblzat Peter feladatai
Feladat Optimista becsls Nvleges becsls Pesszimista becsls
l
a
Alfa l 3 12 4,2 1,8
Bta l 1,5 14 3,5 2,2
Gamma 3 6,25 ll 6,5 1,3
Mirt ilyen furcsk a
"
Bta
"
feladat szmai? gy tnik, Peter elgg biztos a gyors
elvgzsben, de van valami, ami ha rosszul sl el, jelentsen kizkkentheti a kerk
vgsbl. Hogyan rtelmezze ezt Mike? Mire szmtson tervezskor: mikor vgez
Peter mindhrom feladattal?
Nos, nhny egyszer szmtssal Mike egyestheti Peter feladatait, s felvzol
hatja azok sszestett valsznsg-eloszlst. A matematika meglehetsen egyszer:
fsorozat
=
Lffeladat
Brmely feladatsorozat esetben a vrhat idtartam a sorozatban tallhat fel
adatok vrhat idtartamnak egyszer sszege. Ha teht Peternek hrom feladatot
kell vgrehajtania, s az ezekre vonatkoz becslsek 4,2/1,8; 3,5/2,2; s 6,5/1,3, akkor
Peter valsznleg krlbell 14 nap alatt fog vgezni mindhrom feladattal, mert
4,2+ 3,5+6,5 = 14,2.
a = .LSa 2
sorozat feladat
A sorozat szrsa az egyes feladatok szrsa ngyzetnek sszegbl vont ngy-
zetgyk. Peter hrom feladatnak szrsa teht krlbell 3:
(1,82 + 2,22 + 1Y)''2 =
(3,24 + 2,48 + 1,6
9
)1
1
2 =
9
,77
1
1
2 = -
3,13
Ez azt mondja Mike-nak, hogy Peter valsznleg 14 nap alatt fog vgezni a felada
taival, de a vgrehajtsuk 17 (la), esetleg 20 napot (2a) is ignybe vehet, st a dolog
akr tovbb is tarthat, de ez elg valszntlen.
Nzd meg ismt a becslsek tblzatt rzed a nyomst, hogy mindhrom fel
adattal eikszlj t nap alatt? Vgl is, az optimista becsls l , l s 3, de mg a nv
leges becsls is csak 10 napot tesz ki sszesen. Hogyan lesz ebbl 14, plne 17-20
nap? A vlasz az, hogy az egyes feladatokban rejl bizonytalansg sszeaddik, s
ez adja meg a terv valszersgt.
Ha mr sokves tapasztalattal rendelkez programoz vagy, valsznleg lttl
optimistn becslt projekteket, amelyek hromszor-tszr hosszabb ideig tartottak
a remltnL Az imnt bemutatott PERT-sma hasznlata az egyik alkalmas mdszer
154 10.FEJEZET
arra, hogy elbe menj a tlzottan optimista vrakozsoknak. Egy profi szaftverfej
leszt nagyon gyel r, hogy csak relis vrakozsokat keltsen, s ne engedjen a nyo
msnak, hogy prbla meg a gyorsabb haladst.
A FELADATOK IDIGNYNEK MEGBECSLSE
Mike s Peter hatalmas hibt kvettek el. Mike megkrdezte Petert, hogy mennyi
idbe telik, amg vgez a feladataival, Peter pedig szinte, hromvaricis vlaszokat
adott, de mi a helyzet a csapat tbbi tagjval? Nem lehet, hogy k ms vlemnyen
lettek volna?
A becslsek legfontosabb forrst a krltted lev emberek jelentik. k olyasmit
is lthatnak, amit te nem, gy segthetnek pontosabban megbecslni a feladataid id
ignyt, mint amire te magad kpes vagy.
"
SZLESKR DELPHI
"
Az 1970-es vekben Barry Boehm bemutatott neknk egy becslsi mdszert,
amelynek a neve "szleskr Delphi"5 (wideband Delphi), s amelynek az vek sorn
szmos vltozata alakult ki. Vannak kztk formlisak s informlisak, de egy va
lami mindegyikben kzs: a konszenzus.
A stratgia egyszer. A csapat sszegyl, megvitat egy feladatot, megbecsli an
nak idignyt, majd addig folytatja a megbeszlst s a becslst, amg kzsen meg
nem egyeznek valamiben.
A Boehm ltal eredetileg felvzolt megkzelts tbb rtekezletet s dokumentu
mot tartalmazott, ami az n zlsemnek tl sok felesleges formasg. n inkbb az
albbiakban vzolt egyszer, alacsony kltsg megoldsokat rszester elnyben.
REPL UJJAK A rsztvevk krbelnek egy asztalt. A feladatokat egyesvel vitatjk
meg. Minden feladat esetben megbeszlik, mibl ll a feladat, mi zavarhatja meg,
vagy teheti bonyolultabb, s hogyan lehet megvalstani. Ezt kveten a rsztvevk
a kezket az asztal al teszik, s attl fggen, hogy szeriotk milyen sokig fog tar
tani a feladat elvgzse, felemelik 0-5 ujjukat. A vitavezet hromig szmol, a rszt
vevk pedig hromra megmutatjk a kezket.
Ha mindenki ugyanazt a szmot mutatta fel, rtrnek a kvetkez feladatra, egyb
knt pedig folytatjk a vitt, hogy kidertsk, mirt nem rtettek egyet. Az eljrs ad
dig ismtldik, amg konszenzusra nem jutnak.
5 [Boehm81]
BECSLS 155
Az egyetrtsnek nem kell abszolt teljesnek lennie. Az is elg, ha a rsztvevk
becslsei kzel esnek egymshoz. Ha mindenki hrmat vagy ngyet mutat fel, az
egyetrtsnek szmt. Ha viszont mindenki ngy ujjt mutatja, de egy valaki csak
egyet, akkor a vita mg nincs lezrva.
A becslsi sklt a rsztvevk az rtekezlet elejn dntik el. Ez lehet az egy-egy fel
adathoz szksges napok szma, de valami izgalmasabb is, mondjuk
"
az ujjak szma
szorozva hrommal
"
vagy
"
az ujjak szmnak ngyzete
"
.
Fontos, hogy mindenki egyszerre mutassa fel az ujjait, nehogy a tbbiek kezt ltva
egyesek megvltoztassk a becslsket.
TERVEZPKER A tervezpkert (Planning Poker) 2002-ben mutatta be James
Grenning egy kitn rsban. 6 A szleskr Delphinek ez a varicija annyira np
szer lett, hogy szmos cg reklmajndkknt tervezpker-krtyapaklikat kezdett
osztogatni_? Mg egy webhely is szletett planningpoker.com nven, amelynek a se
gtsgve! az Interneten keresztl lehet tervezpkerezni, ha a csapat tagjai kln
bz fldrajzi helyeken tevkenykednek.
Az alaptlet nagyon egyszer. A becslst vgz csapat minden tagjnak ki osztunk
nhny krtyt, amelyeken klnbz szmok vannak. A 0-tlS-ig terjed leoszts
jl mkdik, mert ez logikailag megfelel a
"
repl ujjak
"
mdszernek.
A csapat ez utn kivlaszt egy tmt, s megvitatja. Egy ponton a vitavezet meg
kri a rsztvevket, hogy vlasszanak egy krtyt. A csapat tagjai kivlasztjk azt
a krtyt a kezkbl, amelyiknek a szma megfelel a sajt becslsknek, s felmutat
jk azt, htlappal kifel, hogy a tbbiek ne lssk, milyen szm van rajta. Ez utn
a vitavezet megkri a rsztvevket, hogy fedjk fel a krtyjukat.
A tbbi ugyanaz, mint a
"
repl ujjak
"
esetben. Ha mindenki egyetrt, akkor
a becslst elfogadottnak tekintik; ha nem, akkor viszont mindenki visszateszi a kr
tyt a sajtjai kz, s a
"
jtkosok
"
folytatjk a feladat megvitatst
A kiosztand krtyk megfelel rtknek kivlasztsra klnfle
"
tudomnyos
"
elmletek szlettek. Egyesek odig merszkedtek, hogy Fibonacci-sorozatoknak megfe
lel krtykat hasznlnak, mg msok paklijban a vgtelen s a krdjel is szerepel. Sze
mlyes vlemnyem szerint a O, l, 3, 5, 10 szmozs krtyk tkletesen megfelelnek.
VISZONYfT BECSLS .. A szleskr Delphi egy klnsen rdekes vltozatt Lowell
Lindstrom mutatta meg nekem vekkel ezeltt, s a megoldst jelents sikerrel alkal
maztam klnfle megrendelknl s csapatoknL
Minden feladatot krtykra runk, mindenfle becsls nlkl. A becslst vgz
csapat krlll egy asztalt, amelyre vletlenszeren kitertjk a krtykat (de egy
6 [Grenning2002]
7 http://store.mountaingoatsoftware.com/products/planning-poker-cards
156 10. FEJEZET
zentblra is fel lehet tzni ket). A csapat tagjai nem beszlnek, csak egyszeren
rendezni kezdik a krtykat egymshoz kpest. A hosszabb idt ignyl feladatok
jobbra, mg a kisebbek balra kerlnek.
A csapat brmelyik tagja brmikor elmozdthatja brmelyik krtyt, akkor is, ha
azt valaki ms mr elhelyezte. Ha egy krtyt q alkalomnl tbbszr helyeznk t,
akkor azt a krtyt flretesszk megvitatsra.
A nma rendezs egyszer csak vget r, s akkor megkezddhet a vita, hogy egyet
rtenek-e a rsztvevk a krtyk elhelyezsveL A konszenzus elrse rdekben gyors
terveket vagy kzzel felrajzolt vzlatokat is lehet kszteni.
A kvetkez lpsben vonalakat hzunk a krtyk kztt, amelyek a
"
vdrk
"
mrett brzoljk. A
"
vdrk
"
lehetnek napok, hetek vagy pontok is. Hagyomnyo
san t
"
vdrt
"
szoktak hasznlni egy Fibonacci-sorbl (l, 2, 3, 5, 8).
HROMVARICis BECSLS A szleskr Delphi-eljrsnak ezek a vltozatai arra al
kalmasak, hogy egy feladathoz egyetlen nvleges becslst hatrozzunk meg, de ahogy
korbban emltettem, a legtbbszr hrom becsls szksges, hogy felvzolhassuk
a valsznsg-eloszlst. Az egyes feladatok optimista s pesszimista rtkei a szles
kr Delphi-eljrs brmelyik vltozatval nagyon gyorsan elllthatk Ha pldul
a tervezpkert alkalmazzuk, csak meg kell krnnk a csapat tagjait, hogy mutassk
fel a pesszimista becslskhz tartoz krtyt, majd ki kell vlasztanunk a legna
gyobb szmot tartalmazt. Az optimista becslst ugyangy hatrozhatjuk meg, csak
a legkisebb szmot kell vlasztanunk.
A NAGY SZMOK TRVNYE
A becslseknl nagy a tveds eslye - ezrt hvjk ket becslsnek A tves becslsek
kezelsnek egyik mdja a nagy szmok trvnynek kihasznlsn alapul. 8 Ebbl
a trvnybl kvetkezik, hogy ha egy nagy feladatot sok kisebb feladatra bontunk, s
kln-kln becsljk meg az idignyket, az gy becslt idtartamok sszege pon
tosabban kzelti meg a valsgot, mint ha egyetlen becslst adnnk az eredeti, na
gyobb feladatra. A nagyobb pontossgnak az az oka, hogy a kisebb feladatok idig
nynek megbecslsekor kisebb a hibk eslye.
Ez termszetesen optimista megkzelts. A becslsi hibk inkbb albecslsknt
s nem tlbecslsknt jelentkeznek, ezrt az sszegzs bajosan lesz tkletes. Ezzel
egytt a nagyobb feladatok kisebbekre bontsa, s a kisebb egysgek kln-kln
megbecslse j mdszer. A hibk rszben valban kiegyenltik egymst, a felbonts
8 http://en.wikipedia.org/wiki/Law_of_large_numbers
BECSLS 157
rvn pedig jobban megrthetjk a feladatokat, s kikszblhetjk a kellemetlen
meglepetseket.
SSZEFOGLALS
A profi szoftverfejlesztk tudjk, hogyan lssk el az zleti dntshozkat olyan gya
korlati becslsekkel, amelyeket azok felhasznlhatnak a tervezshez. Nem tesznek
olyan greteket, amelyeket nem tudnak betartani, s nem vllalnak ktelezettsget
olyasmire, aminek a teljestsben nem biztosak.
Amikor egy profi mgis ktelezettsget vllal, konkrt szmokat s idpontokat
mond, s tartja is magt hozzjuk. A legtbb esetben azonban a profik nem tesznek
ilyen ktelezettsgvllalst. Ehelyett a valsznsgt becslik meg annak, hogy vrha
tan mikorra fejeznek be egy feladatot, s hogy ettl milyen eltrsek lehetsgesek.
A profi szoftverfejlesztk a csapatuk tbbi tagjval kzsen igyekeznek mindenki
szmra elfogadhat becslseket adni a dntshozknak
Az ebben a fejezetben ismertetett eljrsok csak pldk azokra a klnbz md
szerekre, amelyeknek a segtsgvel a profi programozk gyakorlati becslseket k
sztenek. Lteznek ms hasonl eljrsok is, amelyek esetleg mg jobbak is lehetnek.
Csak azrt ezeket mutattam be, mert ezek azok, amelyek nlam bevltak.
IRODALOMJEGYZK
[McConnell2006]: Steve McConnell: Software Estimation: Demystifying the Black Art.
Redmond, WA. Microsoft Press, 2006.
[Boehm81]: Barry W. Boehm: Software Engineering Economics. Upper Saddle River,
NJ. Prentice Hall, 1981.
[Grenning2002]: James Grenning: Planning Poker or How to A void Analysis Paralysis
while Release Planning. http://renaissancesoftware.net/papers/14-papers/44-plann
ing-poker.html, 2002. prilis.
11. FEJEZET
NYOMS
Kpzeld el, hogy testen kvli lmnyben van rszed, s ltod magad a mtasztalon,
mikzben a sebsz nyitott szvmttet hajt vgre rajtad. A sebsz megprblja meg
menteni az leted, de az id szkre szabott, ezrt gyorsan kell vgeznie: mg
"
lap
zrta
"
- az leted lapjainak lezrsa - eltt.
Milyen viselkedst vrsz el az orvostl? Azt szeretnd, ha nyugodt s sszeszedett
lenne? Azt szeretnd, ha vilgos s precz utastsokat adna az asszisztenseinek? Azt sze
retnd, ha azt csinln, amire tantottk, s a szakmja szablyaihoz tartan magt?
NYOMS 159
Vagy azt akarod, hogy izzadjon s kromkodjon? Csapkodja az asztalt, s orvosi
eszkzket hajigljon? Szidja a vezetst a kptelen elvrsok miatt, s meglls nlkl
panaszkodjon, hogy semmire sincs elg id? Azt szeretnd, hogy profiknt viselked
jen, vagy gy, mint egy tipikus szoftverfejleszt?
Egy profi programoz nyoms alatt is higgadt s dntskpes marad. Ha a nyoms
n, a szakmai tudsra tmaszkodik, mert tudja, hogy ez a legjobb mdja annak,
hogy tartani tudja a hatridket, s eleget tudjon tenni a vllalt ktelezettsgeinek,
amelyek a vllt nyomjk.
1988-ban a Clear Communications nev jdonslt cgnl dolgoztam, amely iga
zn soha nem tudott elemelkedni a fldtl. Az els klcsnnek hamar a nyakra hg
tunk, gy msodszor, majd harmadszor is klcsnrt kellett folyamodnunk.
A termknkrl alkotott kezdeti elkpzelsnk gretesnek tnt, de a termk fel
ptst nem igazn sikerlt kitallnunk Kezdetben egyarnt gondolkodtunk szaft
verben s hardverben, aztn csak a szoftver maradt. A szaftverplatform PC-krl
Sparcstation-kre vltozott, a megrendelink kre pedig az ignyes vsrlktl elto
ldott a belp szint fel. Vgl a cg teljesen elvetette az eredeti termktervet, mi
kzben olyasvalamit igyekezett tallni, ami bevtelt tudna termelni. A kzel ngy v
alatt, amelyet ott tltttem, a vllalkozs valsznleg egy fillrt sem keresett.
Taln mondanom sem kell, hogy mi, szoftverfejlesztk, jelents nyoms alatt ll
tunk. Jnhnyszor tlrztunk, s egsz htvgket tltttnk az irodban, a termi
nlunknl. Olyan C-fggvnyeket rtunk, amelyek 3000 sornyi hosszsgak voltak.
Ordtozssal s egyms szidalmazsval tarktott vitkat folytattunk Frtuk egymst,
s rgyeket kerestnk, hogy kibjhassunk a feladatok all. Volt, aki kllel verte
a falat, msok a tollukat vgtk a tblhoz, karikatrkat vstek a falra ceruzaheggyel
az idegest kollgkrl, s a dh s a stressz soha nem fogyott ki az utnptlsbL
A hatridket klnfle esemnyekhez igaztottk. Az egyes szolgltatsokkal
szakmai vsrokra s gyflbemutatkra kellett elkszlnnk Brmit is krt egy
gyfl, mi elksztettk a kvetkez bemutatra, fggetlenl attl, hogy mekkora os
tobasg volt. Mindig szkben voltunk az idnek, s mindig elmaradsban voltunk
a munkval. Az temtervek mindig fesztett tempt diktltak.
Ha 80 rt dolgoztl egy hten, hs lehettL Ha sszecsaptl valami szemtkupa
cot egy gyflbemutathoz, akkor is. Ha elg sokszor csinltad, ellp tettek. Ha nem,
akkor kirgtak. Indul cgknt minden az
"
izzadsgbl felhalmozott tkrl
"
szlt.
1988-ban, kzel 20 v tapasztalattal a htam mgtt, tetszett az tlet.
Fejlesztsi vezetknt n voltam az, aki tbb s gyorsabb munkra utastottam az
alm tartoz programozkat Jmagam a
"
80 rsok
"
kz tartoztam, aki hajnali
kettkor 300 0 soros C-fggvnyeket rt, mikzben a gyerekei otthon durmoltak gy,
hogy alig lttk az apjukat. n is vgtam tollakat a tblhoz, s n is ordtoztam.
Kirgattar azokat, akik kptelenek voltak sszekapni magukat. Szrny voltam.
Rettenetes.
160 11.FEJEZET
Egy napon aztn a felesgem arra knyszertett, hogy alaposan nzzem meg ma
gam a tkrben. Nem tetszett, ami lttam. A felesgem azt mondta, nem szvesen
mutatkozna egytt velem, s egyet kellett rtenem vele. Persze kibortott a dolog,
ezrt dhsen kiviharzottam a hzbl, s cltalanul bolyongani kezdtem. Vagy fl
rt stltam, magamban fortyogva, amikor eleredt az es.
Ekkor valami a helyre kattant az agyamban, s einevettem magam. Az ostobas
gomon nevettem. A feszlt idegllapotomon. A frfin a tkrben, a szerencstlen bal
fcnon, aki megkesertette a sajt s msok lett - mirt is?
Aznap minden megvltozott. Abbahagytam az rlt tlrzst Feladtam a stresszes
letmdot. Nem hajigltam tbbet tollakat, s nem rtam 3000 soros C-fggvnyeket.
Eltkltem magamban, hogy lvezni fogom a munkm, gy, hogy jl csinlom, s
nem ostobn.
A tlem telhet legnagyobb szakmai korrektsggel otthagytam az llst, s tancs
adknt folytattam a plyafutsomat Azta a nap ta senkit nem szltok
"
fnknek
"
.
A NYOMS ELKERLSE
A legjobb mdja annak, hogy nyoms alatt is nyugodt maradj, ha elkerld azokat
a helyzeteket, amelyek nyomst eredmnyeznek. A kitr viselkeds nem biztos, hogy
teljesen megsznteti a nyomst, de jelentsen cskkentheti azt, s lervidtheti a leg
nagyobb stresszel jr idszakokat.
KTELEZETTSGVLLALS
Ahogy a 10. fejezetben lthattad, fontos, hogy ne vllalj ktelezettsget olyan hatr
idkre, amelyeket nem biztos, hogy tartani tudsz. Az zleti dntshozk mindig
ragaszkodnak az ilyen ktelezettsgek vllalshoz, mert ki akarjk kszblni a koc
kzatakat Amit azonban neknk tennnk kell, az az, hogy szmszerstsk a kock
zatokat, s tudassuk ezeket a szmokat a dntshozkkat hogy megtehessk
a megfelel lpseke t. Ha kptelen vllalsokba megynk bele, azzal meghistjuk ezt
a clt, s krt okozunk mind az zleti vllalkozsnak, mind magunknak.
Nha elfordul, hogy msok vllalnak ktelezettsget a nevnkben. Megesik, hogy
a cg anlkl tesz greteket az gyflnek, hogy elbb megbeszln velnk a dolgot.
Ha ilyesmi trtnik, ktelessgnk segteni a vllalkozsnak, hogy megoldst talljon
ezeknek a vllalsoknak a teljestsre. Mindazonltal, arra nem ktelez semmi, hogy
elogadjuk a nevnkben tett vllalsokat.
Ez lnyeges klnbsg. Egy profi mindig segt a cgnek, hogy mdot talljon
a cljai elrsre, de nem felttlenl fogadja el a megkrdezse nlkl tett greteket.
Ha nincs md egy vllals teljestsre, vgssoron annak kell vllalnia a felelssget,
aki az gretet tette.
NYOMS 161
Ezt persze mondani knny, de ha a vllalkozs a tnk szlre kerl, s a teljestet
len vllalsok miatt ksik a fizetsi csekked, rd is ugyngy nyoms fog nehezedni.
Ha viszont profiknt viselkedtl, legalbb felemelt fejjel nzhetsz j lls utn.
A TISZTASG MEGRZSE
Ahhoz, hogy gyorsan haladhass, s tartani tudd a hatridket, meg kell rizned
a tisztasgo t. Egy profi nem enged a csbtsnak, hogy a gyors halads rdekben csak
gy sszecsapjon valamit. A profik tisztban vannak vele, hogy a "gyors s piszkos
"
nellentmonds: a "piszkos
"
mindig "lasst" jelent.
A nyomst gy kerlheted el, ha a rendszereidet, a kdjaidat s azok szerkezett
annyira tisztn tartod, amennyire csak lehetsges. Ez nem azt jelenti, hogy a vgte
lensgig fnyestgeted a kdot, csupn azt, hogy nem trd el a rendetlensget. Tudod,
hogy a szemthalmok csak lelasstanak; miattuk leksed a hatridket, s kptelen
leszel teljesteni a vllalsaidat, ezrt mindent megteszel annak rdekben, hogy a kd
jaid a lehet legtisztbbak legyenek.
AZ ELVEK MEGRZSE VSZHELYZETBEN
Ha megfigyeled, hogyan viselkedsz vszhelyzetben, megtudhatod, miben hiszel. Ha
vszhelyzetben a szakmai alapelveidet kveted, akkor valban hiszel bennk. Ha vi
szont ilyenkor megvltoztatod a viselkedsed, akkor nem igazn vagy meggyzdve
a szoksos megoldsaid hatkonysgrl.
Ha szokvnyos esetben a tesztvezrelt fejleszts elveit kveted, de vszhelyzetben
feladod azokat, akkor valjban nem hiszel benne, hogy a tesztvezrelt fejleszts segt.
Ha szokvnyos esetben gyelsz a kdjaid tisztasgra, de vszhelyzetben szemthalma
kat gyrtasz, akkor valjban nem hiszel benne, hogy a szemthalmok lelasstanak Ha
vszhelyzetben pros programozshoz folyamodsz, de mskor ltalban nem, akkor a
prmunkt valjban hatkonyabbnak gondolod az nll programozsnL
Vlassz olyan szakmai megoldsokat, amelyeket vszhelyzetben is meggyzds
sel tudsz kvetni, majd minden krlmnyek kztt ragaszkodj hozzjuk. gy kerl
heted el a legbiztosabban a vszhelyzeteket
Vlsgos pillanatokban se vltaztass a viselkedseden. Ha valban a legjobb megol
dsokat vlasztottad, akkor a legslyosabb helyzetekben is ezeket kell alkalmaznod.
A NYOMS KEZELSE
A nyoms megelzsre, enyhtsre s kikszblsre tett lpsek hasznosak, de
nha minden vintzkeds ellenre nyoms al kerlsz. Lehet, hogy a projekt egysze
ren tovbb tart, mint brki gondolta volna. Az is megeshet, hogy az eredeti terv
162 11. FEJEZET
egyszeren rossz, s t kell dolgozni. Elfordul, hogy elveszted a csapat egy rtkes
tagjt vagy egy rtkes gyfelet. Nha olyasmit vllalsz, amit vgl nem tudsz telje
steni. Mit tehetsz ilyen esetben?
NE ESS PNIKBA!
Ne add meg magad a stressznek Az lmatlan jszakk nem gyorstjk fel a munkt.
Ha csak lsz, s bosszankodsz, az sem. A legrosszabb pedig, amit tehetsz, ha kap
kodni kezdesz. Ennek a csbtsnak mindenron llj ellen. A kapkods csak mlyti
a ktyt, amelybe kerltL
Ehelyett lassts, s gondold t a problmt. Tervezd meg a lehet legjobb kimene
telhez vezet utat, majd sszer, egyenletes tempban menj vgig rajta.
KOMMUNIKLJ!
Tudasd a csapatoddal s a feletteseiddel, hogy bajban vagy. Ismertesd velk, hogy mi
lyen terveid vannak arra, hogy kikecmeregj a ktybL Krj tlk segtsget s t
mutatst. Ne okozz kellemetlen meglepetseket, mert semmi sem dhti fel, s
fosztja meg az sszer gondolkodstl jobban az embereket, mint egy kellemetlen
meglepets. Minden meglepets tzszeresre nveli a nyomst.
TMASZKODJ A SZAKMAl ELVEIDREl
Ha nehzsgekbe tkzl, bzz a szakmai elveidben. Azrt vannak szakmai elveid,
hogy tmutatst adjanak, amikor nagy rajtad a nyoms. Ilyenkor klnsen oda kell
figyelned a kvetskre. Nem ez az a pillanat, amikor meg kell krdjelezned vagy fel
kell adnod ket.
Ahelyett, hogy ktsgbeesetten kutatnl valami - brmi - utn, ami segthet, hogy
gyorsabban vgezz, mg eltkltebben kvesd a vlasztott elveidet. Ha a tesztvezrelt
fejleszts mellett tetted le a voksod, akkor rj mg tbb tesztet a szoksosnl. Ha knyr
telen jratervez vagy, akkor vgezz mg tbb jratervezst. Ha a lehet legrvidebb
fggvnyek rsra szaktl trekedni, akkor rj mg rvidebb fggvnyeket. A nyomst
csak gy gyrheted le, ha arra tmaszkodsz, amirl mr tudod, hogy mkdik.
KRJ SEGfTSGET!
Keress magadnak prt. Ha forr a helyzet, keress valakit, aki hajland prban prog
ramozni veled. gy gyorsabban s kevesebb hibval vgezhetsz. A trsad gyel r, hogy
a szakmai elveidhez tartsd magad, s ne ess pnikba. A trsad kiszr olyan dolgokat
is, amelyek elkerltk a figyelmedet, hasznos tletekkel ll el, s tveszi a helyed, ha
mr nem tudsz sszpontostani.
Ugyangy, ha azt ltod, hogy valaki ms kerlt nyoms al, ajnld fel, hogy betr
sulsz mell. Segts neki kikeemeregni a ktybL
NYOMS 163
SSZEFOGLALS
A nyomst gy kezelheted a legjobban, ha elkerld, ha csak tudod, s ellenllsz neki,
ha nem tudsz elle kitrni. gy kerlheted el, ha megfontoltan vllalsz ktelezetts
geket, mindig kveted a szakmai elveidet, s megrzd a kdjaid tisztasgt; s gy
llhatsz neki ellen, hogy nyugodt maradsz, kommuniklsz, megint csak kveted
a szakmai elveidet, s segtsget krsz.
12.FEJEZET
EGYTTMKDS
A legtbb szaftvert csapatok ksztik, a csapatok pedig akkor a leghatkonyabbak, ha
a tagjaik kztt szakmai egyttmkds van. Egy csapatban magunkba zrkzni s
elklnlni a tbbiektl amatr viselkeds.
1974-ben 22 ves voltam. Alig hat hnappal korbban vettem el nagyszer feles
gemet, Ann Marie-t. Els gyermeknk, Angela, csak egy vvel ksbb szletett. Ak
koriban a Teradyne Chicago Laser Systems nev rszlegnl dolgoztam.
Munkatrsam volt a kzpiskolai haverom, Tim Conrad. Tim s n jnhny cso
daszmba men dolgot alkottunk. Szmtgpeket ptettnk a pincjben, Jkob
EGYTTMKDS 165
lajtorjjt az enymben. Megtantottuk egymst a PDP-8 programozsra, illetve
hogy miknt lehet integrlt ramkrket s tranzisztorokat sszedrtozva mkd
szmolgpet kszteni.
Programozknt egy olyan rendszeren dolgoztunk, amely lzerrel vgott mretre
elektronikai alkatrszeket, pldul ellenllsokat s kondenztorokat, rendkvl nagy
pontossggal. Mi ksztettk pldul a kristlyt az els digitlis rhoz, a Motorola
Pulsarhoz.
A szmtgp, amelyet programoztunk, a Teradyne sajt PDP-8-klnja, az M365-s
volt. A programokat assemby nyelven rtuk, a forrsfjlokat pedig mgnesszalag-te
kercseken troltuk. Br kpernyn is vgezhettk volna a szerkesztst, az eljrs elg
bonyolult volt, ezrt a legtbb kdunkat kinyomtatva olvastuk, s az els fzisban gy
is szerkesztettk.
Semmilyen eszkznk nem volt, amivel a kdalapban kereshettnk volna. Nem
volt r md, hogy megtalljuk egy adott fggvnyhvs vagy lland sszes elfor
dulsi helyt. Nyilvn el tudod kpzelni, mennyire htrltatott ez minket.
Ezrt aztn egy nap Tim s n elhatroztuk, hogy runk egy kereszthivatkozs
elllt programot, amely kpes beolvasni a forrsszalagokat, s kirni az sszes
szimblumot az llomny s sor szmval, ahol az adott szimblum elfordul.
A program els vltozatt meglehetsen knny volt megrni. A program egysze
ren beolvasta a forrsszalagot, elemezte az assembler nyelvtant, ltrehozott egy
szimblumtblt, s hozzadta a hivatkozsokat a tbla elemeihez. Nagyszeren m
kdtt, de borzaszt lass volt. A f kezelprogramunk (a "MOP" - Master Operating
Program) feldolgozsa tbb mint egy rig tartott neki.
Azrt volt ilyen lass, mert az egyre bvl szimblumtblt egyetlen tmeneti
memriatrban troltuk. Amikor j hivatkozsra bukkantunk, beszrtuk azt az t
meneti trba, a tr tartalmt pedig nhny bjttal lejjebb cssztattuk, hogy helyet
csinljunk.
Tim s n nem voltunk szakrti az adatszerkezeteknek s az algoritmusoknak.
Soha nem hallottunk mg hasttblkrl vagy binris keressrL Fogalmunk sem
volt, hogyan gyorsthatnnk fel egy algoritmust. Csak azt tudtuk, hogy amit alkot
tunk, az tl lass.
Ezrt aztn klnfle megoldsokkal prblkoztunk. Megprbltuk a hivatkoz
sokat lncolt listkba helyezni. Prbltunk helyet hagyni a tmbben, s csak akkor
nvelni az tmeneti tr mrett, ha minden hely betelt. Megprbltunk lncolt list
kat ltrehozni az res helyekbl. Mindenfle rlt tletet kiprbltunk
Az irodnkban llt egy tbla, amelyre diagramokat rajzoltunk az adatszerkezete
inkrl, s szmtsokat vgeztnk, hogy megjsoljuk a hatkonysgukat. Minden nap
j tlettel rkeztnk. Megszllottan tmogattuk egymst.
Akadtak prblkozsaink, amelyek nveltk a hatkonysgot, msok azonban
csak tovbb lasstottak a programon. rjt volt. Ekkor tudatosult bennem elszr,
166 12.FEJEZET
milyen nehz optimlis mkdsre brni egy szoftvert, s milyen nehz rjnni
a megoldsra.
Vgl sikerlt 15 perc al szortanunk az idt, ami nagyon kzel volt ahhoz,
amennyi idbe telt egyszeren beolvasni a forrsszalagot. Elgedettek voltunk az
eredmnnyel.
PROGRAMOZK S EMBEREK
Nem azrt vlasztottuk a programozi hivatst, mert szeretnk emberek kztt dol
gozni. A szemlyes kapcsolatokat tbbnyire macersnak s kaotikusnak tallj uk. Azok
nak a gpeknek a tiszta s megjsolhat viselkedst szeretjk, amelyeket programo
zunk. Akkor vagyunk a legboldogabbak, ha rkon t egyedl lhetnk a szobnkban,
s egy igazn rdekes problma megoldsra sszpontosthatunk
Na j, ez ersen eltlzott ltalnosts, ami all rengeteg a kivtel. Nagyon sok
programoz jl tud egytt dolgozni msokkal, s lvezi a kihvst. Az tlag azonban
inkbb arra hajlik, amit lertam. Mi, programozk, lvezzk, ha nmileg kevesebb
rzkszervnket kell hasznlnunk, s begubzva elmlylhetnk valamiben.
PROGRAMOZKSMUNKAADK
A hetvenes-nyolcvanas vekben, mikzben programozknt dolgoztam a Teradyne-nl,
megtanultam, hogyan lehetek nagyon j a hibakeress ben. Imdtam a kihvst, s nagy
lendlettel, lelkesen vetettem r magam minden problmra. Egyetlen hiba sem rej
tzhetett ellem sokig.
Amikor megfejtettem egy hiba okt, az olyan diadalittas rzs volt, mintha vgez
tem volna a Gruffacsrral. Ilyenkor rgtn szaladtam a fnkmhz, Ken Finderhez,
a dfke pengvel a kezemben, s szenvedlyesen eljsgoltam neki, milyen izgalmas
hiba volt. Egy nap vgl Ken mrgesen kifakadt:
"
A hibk nem izgalmasak. A hibkat
csak ki kell javtani!
"
Valamit megtanultam aznap: rdemes szenvedllyel csinlni azt, amit csinlsz, de
az sem rt, ha szem eltt tartod azoknak a cljait, akiktl a fizetsed kapod.
Egy profi programoznak az az elsdleges ktelessge, hogy kielgtse a munka
adja ignyeit. Ebbe beletartozik, hogy a fnkeiddel, az zleti elemzkkel, a teszte
lkkel s a csapat ms tagjaival egyttmkdve igyekezz vilgosan megrteni az zleti
clokat. Ez nem azt jelenti, hogy ltnys tkfejj kell tkpezned magad, azt viszont
igen, hogy tisztban kell lenned vele, mirt rod a kdot, amit ppen rsz, s hogyan
fog hasznot hzni belle a tged foglalkoztat cg.
A legrosszabb, amit egy profi programoz tehet, hogy angyali nyugalommal be
zrkzik a technolgia srkamrjba, mikzben az zleti vllalkozs recsegve-ropogva
sszedl krltte. A munkd rsze, hogy a vz felett tartsd a vllalkozs hajjt.
EGYTTMKDS 167
Egy profi programoz teht idt szakt r, hogy megrtse az zlet mkdst. Be
szl a felhasznlkkal a szoftverrl; megkrdezi az rtkestket s a reklmszakem
bereket, hogy milyen problmkat kell megoldaniuk; megtudakolja a feletteseitl,
hogy milyen rvid s hossz tv clokat tztek ki a csapat szmra.
Rviden, figyelmet szentel a hajnak, amelyen szolgl.
Az egyetlen alkalomra, amikor kirgtak egy programozi llsbl, 1976-ban ke
rlt sor. Akkoriban az Outboard Marine Corp.-nl dolgoztam; egy gyrtsautomati
zl rendszer megrsban segdkeztem, amely IBM System/7 tpus szmtgpek
segtsgvel alumniumfrccsnt gpek tucatjait felgyelte.
A munka szakmai szempontbl kihvst jelentett, s nagyon sokat lehetett tanulni
belle. A System/7 lenygz felptssel rendelkezett, maga a gyrtsautomatizl
rendszer pedig kimondottan rdekes volt.
Ezen fell a cg remek csapatot szedett ssze. A csapatot egy hozzrt s lelkes
szakember, John vezette, s a kt segtksz programoztrsammal is kellemes volt
egytt dolgozni. A projekt szmra lefoglaltak egy labo rt, s mindnyjan ott vgeztk
a munknkat. Az zleti partnernk, aki rdekldtt a munknk irnt, szintn ott
volt velnk a laborban. A fnknk, Ralph, rtette a dolgt, mindig szem eltt tartotta
a clt, s kzben tartotta a csapatot.
Mindennek nagyszeren kellett volna alakulnia. A problmt n jelentettem.
A projekthez s a technolgihoz elg lelkesen lltam hozz, de lemedett kor 24
vesknt egyszeren nem tudtam magam rvenni, hogy rdekeljen az zlet vagy
a vllalkozs bels politikai viszonyai.
Az els hibt mr a legels munkanapomon elkvettem. Nyakkend nlkl jelen
tem meg. Az llsinterjra ktttem egyet, s lttam, hogy mindenki ms visel nyak
kendt, de nem raktam ssze a kpet. gy aztn az els napomon Ralph odajtt hoz
zm, s szimpln ennyit mondott: "Mi itt nyakkendt hordunk.
"
El nem tudom mondani, mennyire zokon vettem ezt. Mlyen megsrtdtem. Min
dennap ktttem nyakkendt, de gylltem. De mirt? Tudtam, mibe megyek bele.
Tudtam, mi a szoks. Mirt dhtett fel mgis ennyire a dolog? Azrt, mert egy nz,
nimd kis grcs voltam.
Egyszeren kptelen voltam idben berni a munkahelyemre, radsul azt hittem,
hogy ez nem lnyeges - hiszen "j munkt vgeztem". Ez igaz is volt: nagyon j prog
ramokat rtam. Messze n voltam a legjobb programoz a csapatban. Gyorsabban s
jobb kdot rtam, mint brki ms. Gyorsabban ismertem fel s oldottam meg a prob
lmkat. Tudtam, hogy rtkes vagyok. gy aztn a pontossg s a hatridk mit sem
szmtottak nekem.
A dnts akkor szletett meg a kirgsomrl, amikor elmulasztottam megjelenni
egy kiemeit fontossg rtekezleten. John mindnyjunkkal tudatta, hogy htfn be
kell mutatnunk a mr mkd szolgltatsokat - bizonyra n is rtesltem rla, de
a dtumokat s idpontokat egsz egyszeren nem tartottam fontosnak.
168 12.FEJEZET
A fejleszts kzepn jrtunk; a rendszert mg nem adtuk t. Semmi sem indo
kolta, hogy a rendszer akkor is fusson, ha ppen senki nem tartzkodik a laborban.
Pnteken valsznleg n tvoztam utolsknt, s nyilvn lekapcsoltam a rendszert.
Az a tny, hogy htfn fontos nap lesz, egyszeren nem ragadt meg az agyamban.
Htfn egy rt kstem, s amikor megrkeztem, azt lttam, hogy mindenki ko
maran ll a nem mkd rendszer krl. John krdre vont:
"
Mirt nem mkdik
ma a rendszer, Bob?
"
. Azt feleltem, hogy fogalmam sincs, s leltem, hogy megkeres
sem a hibt. Mg ekkor sem bredtem r, hogy aznap bemutatt kellene tartani, de
a tbbiek testbeszde elrulta, hogy valami nem stimmel. Aztn John odajtt hoz
zm, s a flembe sziszegte:
"
Mi van, ha Stenberg gy dnt, hogy benz?
"
, s undo
rodva elstlt.
Stenberg az automatizlsrt felels igazgat-helyettes volt-ma informatikai igaz
gatnak hvnnk-, ezrt nem is rtettem a krdst.
"
s akkor mi van?
"
- gondol
tam. -
"
A rendszert mg nem helyeztk zembe. Mire a felhajts?
"
Aznap dlutn megkaptam az els figyelmeztet levelemet. Azt rtk benne, hogy
vagy haladktalanul vltoztatok a hozzllsomo n, vagy
"
zros hatridn bell meg
szntetik a munkaviszonyomat
"
. Elborzadtam.
Beletelt nmi idbe, mire kielemeztem a viselkedsemet, s rbredtem, mit csi
nltam rosszul. Beszltem rla Johnnal s Ralph-faL Elhatroztam, hogy megvlto
zom, s komolyan veszem a munkm.
gy is tettem! Nem kstem tbbet. Figyelni kezdtem a munkahelyi erviszonyokat.
Kezdtem rteni, mirt tartott John Stenbergtl. Lassan felfogtam, milyen knos hely
zetbe hoztam t azzal, hogy a rendszer nem mkdtt htfn.
De ez tl kevsnek bizonyult, s tl ksn jtt. A kocka el volt vetve. Egy hnappal
ksbb megkaptam a msodik rsbeli figyelmeztetst egy jelentktelen hiba miatt,
amit elkvettem. Ezen a ponton r kellett volna jnnm, hogy a levelek nem jelente
nek tbbet puszta formalitsnl, mert a kirgsomrl szl dnts mr megszletett.
De eltkltem, hogy megmentem a helyzetet, ezrt mg kemnyebben dolgoztam.
Nhny httel ksbb behvattak, s tadtk a felmondlevelemet.
Hazamentem a 22 ves, terhes felesgemhez, s meg kellett mondanom neki, hogy
kirgtak. Azt az rzst soha nem szeretnm jra tlni.
PROGRAMOZKSPROGRAMOZK
A programozknak gyakran okoz nehzsget ms programozkkal egytt dolgozni,
ami szrny problmkhoz vezet.
SAJAT KD .. Az egyik legslyosabb jele annak, hogy egy csapat nem mkdik jl, ha
minden programoz falat pt a sajt kdja kr, s nem engedi meg a tbbi programo
znak, hogy hozznyljon. Egyes cgeknl olyat is tapasztaltam, hogy a programozk
me
g
mutatni sem hajlandk a kdjukat egymsnak. Ez a katasztrfa biztos receptje.
EGYTTMKDS 169
Egyszer tancsokat adtam egy cgnek, amelyik cscsminsg nyomdagpeket
gyrtott. Ezek a kszlkek szmos klnbz alkatrszbl - adagol, nyomtatfej,
nyomattlca, tzgp, vggp stb.- lltak, amelyek ms-ms rtket kpviseltek az
zleti vllalkozs szmra. Az adagolkat fontosabbak tartottk a nyomattlcknl,
s semmi sem volt fontosabb, mint a nyomtatfej.
Minden programoz a sajt eszkzn dolgozott. Egyikk az adagol, msikuk
a tzgp kdjt rta. Mindnyjan titokban tartottk az ltaluk alkalmazott megol
dsokat, s senkinek sem engedtk meg, hogy hozznyljon a kdjukhoz. Az egyes
programozk politikai ereje kzvetlen l sszefggtt azzal, hogy a vllalkozs meny
nyire tartotta rtkesnek a hozzjuk tartoz eszkzt. Az a programoz, aki a nyom
tatfejen dolgozott, rinthetetlen volt.
Mszaki szempontbl mindez katasztrft eredmnyezett. Tancsadknt lttam,
hogy a kdban hatalmas mrtk az ismtlds, s a modulokat sszekapcsol fel
letek teljesen torzak. Egyetlen rver sem tudta azonban meggyzni a programozkat
(vagy az zleti dntshozkat), hogyvltoztassanak a munkamdszerkn, mert a fi
zetsemelsk elvlaszthatatlan volt a kezkben lev eszkz jelentsgtL
Kzs TULAJDON'"' Sokkal jobb lebontani az sszes falat, ami krlveszi a kdok tu
lajdonjogt, s a csapat kezbe adni a teljes kdot. n az olyan csapatokat rszester
elnyben, ahol brmelyik tag brmelyik modult megvizsglhatja, s brmilyen m
dostst vgrehajthat rajtuk, amit szksgesnek vl. Azt szeretem, ha a kd a csapat,
s nem az egyes programozk tulajdonban ll.
Egy profi programoz nem llja tjt annak, hogy msok is belenyljanak a kdba,
s nem pt birtokhatrt jelz falakat a kd kr. Ehelyett a tbbiekkel kzsen mun
klkodik, mghozz a rendszer lehet legnagyobb rszn. A profik tanulnak egyms
tl, mikzben kzsen dolgoznak a rendszer klnbz rszein.
PARMUNKA Sok programoz utlja a pros programozst. n ezt klnsnek tal
lom, hiszen a legtbb programoz vszhelyzetben ppen hogy prmunkhoz folya
modik. Mirt? Mert egyrtelmen ez a leghatkonyabb mdja a problma megold
snak. Ahogy a monds is tartja: tbb szem tbbet lt. Ha viszont vszhelyzetben
a prmunka a leghatkonyabb mdszer arra, hogy megoldjunk egy problmt, akkor
mirt nem tartjuk a leghatkonyabb mdszernek ms krlmnyek kztt is?
Nem fogok tanulmnyokat idzni, br van nhny, amelyet rdemes lenne. Nem
fogok anekdotkat meslni, br sok j sztorim van. Azt sem fogom megmondani ne
ked, hogy mennyi prmunkt vgezz. Csak annyit mondok, hogy a profik prban
szaktak programozni. Mirt? Mert - legalbbis bizonyos problmk esetben - ez
a leghatkonyabb megolds. De nem ez az egyetlen ok.
A profik azrt is programoznak prban, mert gy oszthatjk meg a legjobban a tu
dsukat egymssal. Egy profi nem pt tudsraktrakat Inkbb trsul valakivel, hogy
170 12. FEJEZET
megismerje a rendszer s az zleti vllalkozs klnbz rszeit. Tisztban van azzal,
hogy br a csapat minden tagjnak megvan a maga posztja, minden csapattagnak
tudnia kell jtszani ms posztokon is, ha gy hozza a szksg.
A profik azrt programoznak prban, mert ez a legjobb mdszer a kd fellvizs
glatra. Egyetlen rendszernek sem lenne szabad olyan kdot tartalmaznia, amelyet
nem vizsgltak fell ms programozk. A kd-fellvizsglat lefolytatsnak szmos
mdja van, de a legtbbjk egyltaln nem hatkony. A kd-fellvizsglat leghatko
nyabb mdszere az, ha a kdot tbben, kzsen rjk.
KISAGYAK
2000 egyik reggeln, a dot com-fellendls cscsn, Chicagba vonatoztam. Ahogy
lelptem a vonatrl a platformra, egy hatalmas reklmtbla fogadott a kijrat felett.
Egy jl ismert szaftvercg jele dszelgett rajta, amely programozkat igyekezett tobo
rozni. Aszveg ez volt: "Come rub cerebellums wi th the best" (
"
Gyere, s drgld sz
sze a kisagyad a legjobbakval!
"
).
Azonnal padlt fogtam a reklm szrny ostobasgtL A szerencstlen reklm
szakemberek a programozk magas mszaki tuds, tanult, intelligens rtegt igye
keztek megszltani, akik viszont nem valami jl trik az ostobasgot. Akik a rekl
mot ksztettk, azt a kpet igyekeztek a clkznsg el vetteni, hogy a cgnl nagyon
intelligens emberek osztjk meg a tudsukat, csakhogy szerencstlen mdon az agy
nak arra a rszre (kisagy, cerebellum) hivatkoztak, amelyik a finom izommozgso
krt, s nem az intelligencirt felel. gy aztn pontosan azok legyintettek megvet
gnnyal a hirdetsre, akikhez a hirdetk szlni szerettek volna.
De volt mg valami ms is a hirdets ben, ami szget ttt a fejembe. Megprbl
tam elkpzelni, milyen az, amikor emberek sszedrglik a kisagyukat. Mivel a kis
agy az agy hts rszn tallhat, ez gy megy a legknnyebben, ha egymsnak ht
tal llunk. Lttam magam eltt a flkkben dolgoz programozk csapatt, akik
a sarokban, egymsnak httal lve bmuljk a kpernyjket, a flkn fejhallgat
val. Na, gy lehet sszedrglni a kisagyakat Csakhogy ez nem csapat.
A profik egytt dolgoznak. Ha viszont a sarokban lsz, a fleden fejhallgatvaL
nem tudsz egytt dolgozni msokkal. Ahhoz krl kell lni egy asztalt, egymssal
szemben. rezni kell egyms minden rezdlst. Meg kell hallani, amit valaki ide
gesen mormol. Verblis s testbeszden keresztli, izgalmas kommunikcira van
szksg. Egyetlen egysgknt kell mkdni.
Lehet, hogy azt hiszed, hogy egyedl jobban tudsz dolgozni. Taln igazad is van,
de ez nem jelenti azt, hogy a csapat is jobban dolgozik, ha te magadban tevkenykedsz.
Valjban az is rendkvl valszntlen, hogy neked tnyleg jobban megy a munka,
ha egyedl dolgozol.
EGYTTMKDS 171
Vannak helyzetek, amikor az a helyes, ha egyedl dolgozol. Megesik, hogy egysze
ren alaposan vgig kell gondolnod egy problmt. Az is lehet, hogy a feladat annyira
egyszer, hogy pazarls lenne mg egy embert rlltani. ltalban azonban az a leg
jobb, ha szorosan egyttmkdsz msokkal, s az id legnagyobb rszben prban
programoztok.
SSZEFOGLALS
Lehet, hogy nem azrt vlasztottad a programozi hivatst, hogy emberek kztt le
gyl. Peched van, mert a programozs ppen arrl szl, hogy msokkal kzsen dol
gozol. Egytt kell mkdnd az zleti dntshozkkal, s a programoz munkatr
saiddal is.
Tudom, tudom. Nagyszer lenne, ha egyszeren bezrnnak egy szobba hat hatal
mas kpernyvel, egy T 3-as vonallal, prhuzamosan dolgoz szupergyors processzorok
kal, korltlan memria- s lemezterlettel, s soha ki nem fogy ditskla-s fszeres
kukoricacsipsz-kszlettel. Ez azonban sajnos csak vgylom. Ha tnyleg programoz
knt szeretnl tevkenykedni, meg kell tanulnod beszlgetni - az emberekkeP
l Utals a Zld szja (Soylen Green) cm flm zrszavra.
13.FEJEZET
CSAPATOK S PROJEKTEK
Mi a helyzet akkor, ha a csapatodnak sok kis programot kell elksztenie? Hogyan
oszd el a feladatokat a programozk kztt? s ha egyetlen nagy projektet kell tet
al hoznotok?
VEGYTH ET?
Az vek sorn szmos banknak s biztosttrsasgnak dolgoztam tancsadknt, de
gy tnt, egy valami kzs bennk: az a furcsa md, ahogy a feladatokat kiosztjk.
CSAPATOK S PROJEKTEK 173
A bankoknl a szaftverprojektek viszonylag kis munkk, amelyek egy-kt prog
ramozt ktnek le nhny htre. A projektet ltalban egy projektvezet irnytja,
aki al ms projektek is tartoznak. A munkban rszt vesz egy zleti elemz, aki ms
projektek szmra is sszellt kvetelmnyeket, programozk, valamint egy-kt
tesztel, akik egyarnt dolgoznak ms projekteken is.
Ltod, hogyan mkdik a dolog? A feladat annyira kicsi, hogy senkit nem lehet
teljes idben rlltani- az idejnek mindenki csak az 50 vagy akr csak a 25 szza
lkt tlti a projekttel.
Pedig van egy alapszably: nincs olyan, hogy fl ember.
Semmi rtelme arra utastani egy programozt, hogy az ideje egyik felt az "P, a m
sik felt pedig a
"
B
"
projekttel tltse, klnsen ha a kt projekten ms-ms projekt
vezetk, zleti elemzk, programozk s tesztelk dolgoznak. Hogy az rdgbe lehet
egy ilyen borzalmat csapatnak hvni? Ez nem csapat, hanem valami katyvasz, ami
kijtt a turmixgpbl.
AZ SSZESZOKOTT CSAPAT
Egy csapatnak id kell, hogy kialakuljon: a csapat tagjai kztt kapcsolatok szvd
nek; megtanulnak egymssal egyttmkdni; megismerik egyms rigolyit, erss
geit s gyengit, mg vgl a csapat elkezd sszeszokni.
Egy sszeszokott csapatban van valami igazn varzslatos. Egy sszeszokott csa
pat csodkra kpes. Kitalljk egyms gondolatait, falaznak egymsnak, tmogatjk
egymst, s kihozzk egymsbl a legjobbat. Megvalstjk az lmokat.
Egy sszeszokott csapat rendszerint gy egy tucat emberbl ll. Lehetnek hszan,
vagy akr csak hrman is, de a csapattagok idelis szma krlbell tizenkett. A csa
patban helyet kell kapjanak programozk, tesztelk s elemzk, s lennie kell egy
projektvezetnek is.
A programozk s tesztelk, illetve elemzk arnya eltr lehet, de a 2:1-hez j ki
indulpont. Egy jl sszeszokott, tizenkt emberbl ll csapatban teht lehet mond
juk ht programoz, kt tesztel, kt elemz s egy projektvezet.
Az elemzk kidolgozzk a kvetelmnyeket, s automatizlt elfogadsi teszteket r
nak hozzjuk. A tesztelk ugyancsak automatizlt elfogadsi teszteket rnak- a kett
kztt a nzpont jelenti a klnbsget. Mind az elemzk, mind a tesztelk kvetel
mnyeket lltanak fel, de az elemzk az zleti rtkre, mg a tesztelk a program
helyessgre sszpontostanak Az elemzk a derlt teszteseteket rjk meg, a tesz
telk azonban azzal foglalkoznak, ami elromolhat, s a negatv utas teszteseteket,
illetve a hatreseteket fogalmazzk meg.
A projektvezet nyomon kveti, hogyan halad a csapat, s gyel r, hogy annak
minden tagja tisztban legyen az temtervvel s a feladatok fontossgi sorrendjveL
A csapat egyik tagja rszben egyfajta oktat ("mester") szerepet is betlthet; eb
ben az esetben az feladata, hogy gyeljen a csapat elveire s munkamegosztsra.
174 13.FEJEZET
a csapat lelkiismerete, aki vigyz, hogy a csapat a hatridk szortsban se trjen
le a helyes trl.
RS Egy ilyen fajta csapatnak idbe telik, amg a tagjai elsimtjk a nzetklnb
sgeiket, megszakjk egymst, s valban sszerzdnak - taln hat hnapba, de az
is lehet, hogy egy egsz vbe. Ha azonban a csapat egyszer kialakult, onnantl mr
csodlatosan mkdik. Egy sszeszokott csapat kzsen tervez, kzsen oldja meg
a problmkat, kzsen nz szembe a nehzsgekkel, s elri a clt.
Ha a csoda megtrtnt, nevetsges csak azrt megbontani a csapatot, mert egy
projekt vget rt. A legjobb egytt tartani ket, s tovbbi feladatokat adni nekik.
MELYIK VOLT ELBB: A CSAPAT VAGY A PROJEKT? A bankok s a biztosttrsasgok
projektek kr prblnak csapatokat szervezni, ami ostoba megkzelts, az ilyen
csapatok ugyanis nem tudnak sszeszokni. A tagjaik csak rvid ideig, s akkor is csak
rszidben dolgoznak az adott projekten, ezrt soha nem tanuljk meg, hogyan ke
zeljk egymst.
A professzionlis fejlesztcgek meglev, sszeszokott csapatokat bznak meg egy
egy projekt lebonyoltsval, nem pedig projektekhez rendelnek embereket. Egy sz
szeszakott csapat prhuzamosan tbb projekten is kpes dolgozni, s a sajt beltsa,
illetve a tagjai kpessgei s erssgei szerint osztja szt a feladatokat. Egy sszeszo
kott csapat tbb projekttel is megbirkzik, s elri a clt.
DE HOGYAN LEHET MINDEZT KZBEN TARTANI?
Minden csapatnak van egy sebessge (velocity).1 Egy csapat sebessge egyszeren az
a munkamennyisg, amit adott id alatt el tudnak vgezni. Egyes csapatok pont per
htben mrik a sebessgket, ahol egy-egy pont egy egysgnyi bonyolultsgot jelent.
A csapat felbontja a program szolgltatsait, amelyen dolgozik, s megbecsli azok
pontrtkt; majd azt mri, hogy egy ht alatt hny pontot tud teljesteni.
A sebessg statisztikai mrszm. A csapat az egyik hten lehet, hogy 38 ponttal
vgez, egy msik hten 42-vel, egy harmadikon pedig 25-t teljest. Idvel ezek az r
tkek egy tlagot adnak ki.
A vezets klnfle clokat tzhet ki a csapatnak kiosztott projektekhez. Ha a csa
pat tlagos sebessge pldul 50, s hrom projekten dolgoznak egyidejleg, a vezets
arra krheti ket, hogy az erfesztseiket 15-15-20 arnyban osszk meg.
Azon fell, hogy egy sszeszokott csapat dolgozik a projekteken, ennek a rendszernek
l [RCM2003] 20-22. oldal; [COHN2006] A sebessg tmakrhez kitn hivatkozsokat tallsz a
trgymutatba n.
CSAPATOK S PROJEKTEK 175
az is elnye, hogy vszhelyzetben a vllalkozs azt mondhatja, hogy
"
a B projekt ktyba
jutott, ezrt a kvetkez hrom htben fordtsatok minden energit erre a projektre
"
.
A feladatok fontossgi sorrendjnek ilyen gyors vltoztatsa egy sszeturmixolt
csapat esetben szinte lehetetlen, a prhuzamosan kt-hrom projekten dolgoz, sz
szeszakott csapatok azonban sokkal rugalmasabbak.
A PROJEKTGAZDA DILEMMJA
Az ltalam hirdetett megkzeltssel szemben az egyik kifogs, amit fel szoktak
hozni, hogy a projektgazda rszben elveszti a hatalmt s biztonsgos helyzett. Az
a projektgazda, akinek a projektjn egy kizrlag erre a feladatra kijellt csapat dol
gozik, szmthat a csapat erforrsaira - mivel egy csapat sszelltsa, illetve meg
szntetse kltsges mvelet, az zleti vllalkozs rvid tv clok rdekben nem
fogja sztszedni a csapatot.
Msrszrl, ha a projekteket sszeszokott csapatokra bzzk, amelyek prhuzamo
san tbb projekten dolgoznak, a vllalkozs szabadon, a pillanatnyi ignyek szerint
vltoztathatja a prioritsokat. Emiatt a projektgaz<k bizonytalannak rezhetik a j
vjket, hiszen az erforrsokat, amelyekre tmaszkodnak, brmikor elvonhatjk.
szintn megmondom, hogy n ez utbbi megoldst rszester elnyben. Egy
zleti vllalkozsnak nem szabad, hogy megksse a kezt a csapatok kialaktsnak
s megszntetsnek szksgtelen nehzsge. Ha a vllalkozs gy dnt, hogy az
egyik projekt elnyt kell lvezzen egy msikkal szemben, kpesnek kell lennie gyor
san tcsoportostani az erforrsokat. Az mr a projektgazda feladata, hogy rveljen
a sajt projektje mellett.
SSZEFOGLALS
Egy csapatot nehezebb felpteni, mint egy programot, ezrt elnysebb lland csa
patokat kialaktani, amelyek egytt haladnak projektrl projektre, s egyidejleg
tbb projektet is kpesek fel vllalni. Egy csapat kialaktsnak akkor van rtelme, ha
a csapatnak van elg ideje sszeszokni, s a csapat egyttmarad, hogy szm os projekt
motorja lehessen.
IRODALOMJEGYZK
[RCM2003]: Robert C. Martin: Agile Software Development: Principles, Patterns, and
Practices. Upper Saddle River, NJ. Prentice Hall, 2003.
[COHN2006]: Mike Cohn: Agile Estimating and Planning. Upper Saddle River, NJ.
Prentice Hall, 2006.
14.FEJEZET
MESTEREK, TANTVNYOK S
A MESTERSGBELI TUDS
A friss diploms informatikusok folyamatosan csaldst okoznak nekem. Nem arrl
van sz, hogy ne lennnek okosak vagy tehetsgesek, csak ppen nem tantjk meg
nekik, hogy mirl is szl valjban a programozs.
A KUDARC FOKOZATAl
Egy llsinterjn egyszer egy olyan ifj hlgyet kellett elbrl nom, aki ppen akkor
dolgozott a mesterdiplomjn egy hres egyetem szmtgp-tudomnyi szakn, s
MESTEREK, TANTVNYOK ... 177
nyri szakmai gyakorlatra jelentkezett. Megkrtem, hogy rjon velem egy kis kdot,
mire azt felelte:
"
Nem igazn szaktam kdot rni.
"
Krlek, olvasd el mg egyszer a fenti bekezdst, majd ugorj a kvetkezre.
Megkrdeztem, hogy milyen programozsi kurzusokat vett fel a mesterfokozat
hoz. Azt vlaszolta, hogy semmilyet
Lehet, hogy most ellrl szeretnd kezdeni a fejezetet, csak hogy biztos legyl benne,
hogy nem kerltl t vletlenl egy alternatv univerzumba, s nem is csak egy rossz
lom ez az egsz.
Most nyilvn azon tprengsz, hogy miknt lehetsges, hogy egy informatikbl
mesterfokozatra kszl hallgatnak nem muszj semmilyen programozi kurzust
felvennie. n is ezt krdeztem magamtl - s ma sem tudom a vlaszt.
Ez termszetesen a legszlssgesebb plda azoknak a csaldsoknak a sorozatbl,
amelyeken a vgzs plyzk llsinterjin t kellett esnem. Nem minden frissen vg
zett informatikus ekkora csalds - messze nem. Azt azonban szrevettem, hogy azok
ban, akik nem okoznak csaldst, van valami kzs: szinte mindegyikk nerbl tanul
meg programozni, mieltt felvennk az egyetemre, s ksbb is nllan kpzi magt.
Ne rts flre. Nem tartom lehetetlennek, hogy egy egyetemen kivl oktatsban
rszeslj. Csak ppen ugyangy lehetsges, hogy gy tekergzz t a rendszeren, hogy
a msik vgn kicsusszanva csak egy diploma legyen a kezedben, semmi ms.
s van mg egy gond. ltalban mg a legjobb szmtstudomnyi szakok sem
ksztik fel a hallgatkat arra, ami az ipargban vrja ket. Ezt nem annyira szemre
hnysnak sznom az informatikai kpzs fel - szinte minden tudomnygat te
kintve ez az igazsg. Amit az iskolban tanulsz, s amivel egy valdi munkahelyen
szembeslsz, gyakran g s fld.
SZAKMAl TMUTATS
Hogyan tanulunk meg programozni? Hadd mondjam el, n hogyan sajttottam el
a szakma fogsait.
DIGI-COMPl-AZ ELS SZAMfTGPEM
1964-ben desanym egy kis manyag szmtgpet vett nekem a tizenkettedik sz
letsnapomra. Az volt a neve, hogy Digi-Camp J.l Hrom darab ktlls manyag
kapcsal s hat logikai s-kapu volt rajta. Az elbbiek kimenett hozz lehetett kap
csalni az utbbiak bemenethez, s az s-kapuk kimenett is a ktlls kapcsolk
bemenethez. Rviden, egy hrombites vges llapotgpet lehetett ltrehozni vele.
l Tbb webhely is ltezik, ahol szimultorokat tallhatsz ehhez az izgalmas kis gp hez.
178 14.FEJEZET
A kszlethez jrt egy hasznlati utasts, amelyben szerepelt nhny futtathat
program. A gpet gy lehetett beprogramozni, hogy az ember apr csveket (kis sz
vszl-darabokat) hzott a ktlls kapcsolkbl kill csapokra. A hasznlati uta
sts pontosan lerta, hov kell tenni az egyes csveket, de azt nem, hogy azok mit is
csinlnak. Ezt nagyon bosszantnak talltam.
rkig bmultam a gpet, s kiokoskodtam, hogyan mkdik a legalacsonyabb
szinten, de az istennek sem tudtam rjnni, hogyan vehetnm r, hogy azt csinlja,
amit n akarok. A hasznlati utasts utols oldala azt mondta, hogy ha kldk nekik
egy dollrt, akkor visszakldenek nekem egy kziknyvet, amely elrulja, hogyan
lehet programozni a gpet. 2
Bekldtem a dollrt, s a tizenkt vesek trelmetlensgvel vrtam a vlaszt.
Amikor a kziknyv megrkezett, azonnal rvetetter magam, s mg aznap felfal
tam. Egyszer rtekezs volt a logikai algebrrl, amely tartalmazta a logikai egyen
letek alaptnyezkre bontst, a trstsi s tagolsi trvnyeket, s a DeMorgan-ttelt.
A kziknyv megmutatta, hogyan lehet egy problmt logikai egyenletek sorozatval
kifejezni, s azt is, hogy miknt lehet ezeket az egyenleteket gy reduklni, hogy be
lefrjenek hat s-kapuba.
Kigondoltam az els programomat Mg ma is emlkszem a nevre: Mr. Patternson's
Computerized Gate (Mr. Patternsan komputerizlt kapuja). Megrtam az egyenlete
ket, redukltam ket, s megfeleltettem a gp csveinek s csapjainak Mkdtt!
Ezt lerni mg ma is borzongat rzs. Ugyanolyan mmort, mint amilyennek
kzel fl vszzada, tizenkt vesen reztem. Meg voltam babonzva, s az letem
rkre megvltozott.
Emlkszel mg arra a pillanatra, amikor elszr lttad mkdni egy programodat?
Megvltoztatta az leted? Elindtott egy ton, amelyrl nem lehetett tbb letrteni?
Persze nem teljesen egyedl talltam ki az egszet. tmutatst kaptam. Nhny
nagyon kedves s hozzrt ember (akiknek rk hlval tartozom) vette a frads
got, s megrt egy kziknyvet a logikai algebrrl, gy, hogy egy tizenkt ves is
megrtse. A matematikai elmletet sszektttk a kis manyag szmtgp gyakor
lati hasznlatval, s tadtk nekem azt a tudst, amivel a kszlket rvehettem,
hogy azt csinlja, amire utastom.
Rongyosra olvastam azt a vgzetes kziknyvet. Ma mr egy visszazrhat tasak
ban tartom, de az id vasfoga alaposan kikezdte: a lapjai megsrgultak s trkenny
vltak. A szavak ereje azonban ma is ugyangy ragyog a lapokrL A logikai algebra
elegns lersa mindssze hrom oldalt ignyelt. A kszlkhez kapott eredeti prog
rarak egyenletein lpsrl lpsre vgigvezet tmutat ma is lenygz. Igazi
2 A kziknyvet mg mindig rzm - kitntetett helye van az egyik knyvespolcomon.
MESTEREK, TANTVNYOK ... 179
mestermunka, ami legalbb egy fiatalember lett megvltoztatta. A szerzi nevt
azonban valsznleg soha nem fogom megtudni.
KZPISKOLA: ECP-18
Tizent ves koromban, els ves kzpiskolai tanulknt, szerettem a matekterem
ben lgni. (Ezt kapd ki!) Egy nap begrgettek egy asztalifrsz-mret gpet: egy
kzpiskolknak sznt oktatsi szmtgp volt, egy ECP-18-as, amelyet az iskolnk
kthetes kiprblsra kapott.
A httrbl figyeltem, mirl beszlnek a tanrok s a technikusok. A gp 15 bites
szavakkal (Mi az a
"
sz"?) s 1024 szavas mgnesdob-memrival dolgozott. (A mg
nesdob-memria addigra mr nem volt ismeretlen a szmomra, de csak elmletben.)
Amikor bekapcsoltk, a gp olyan sivt hangot adott, mint amikor egy sugrhaj
ts repl felszll. Gondolom, a mgnesdob felprgsnek a hangja volt. Miutn
a dob elrte a megfelel sebessget, a gp mr viszonylag halkan zemelt.
Imdtam azt a gpet. Lnyegben egy rasztal volt egy csodlatos vezrlpanellel,
ami gy llt ki a tetejbl, mint egy hadihaj parancsnoki hdja. A vezrlpanelt egy
sor lmpa dsztette, amelyek nyomgombknt is mkdtek. Olyan volt az eltt a gp
eltt lni, mintha Kirk kapitny szkben lnk.
Mikzben figyeltem, ahogy a technikusok a gombokat nyomkodjk, szrevettem, hogy
a bennk lev lmpa felkapcsoldik, amikor a gombot megnyomjk, a kvetkez gomb
nyomsra pedig kialszik a fny. Azt is megfigyeltem, hogy a technikusok tovbbi gombo
kat is megnyomnak, amelyeken olyan feliratok lltak, mint a deposit vagy a run.
A gombokat minden sorban hrom darab ts csoportba osztottk. Az n Digi
Compom szintn hrombites volt, ezrt el tudtam olvasni egy binrisan kifejezett oktlis
szmjegyet. Nem volt nagy szm rjnni, hogy itt csupn t oktlis szmjegyrl van sz.
Mikzben a technikusok a gombokat nyomogattk, hallottam, ahogy magukban
mormolnak. Amikor megnyomtk az l, 5, 2, O, 4 sorozatot a memory bujfer sorban,
ezt mondtk: "trols 20 4-ben
"
. Aztn megnyomtk a l, O, 2, l, 3 sorozatot, s ezt
motyogtk: "213 betltve az akkumultorba". Az egyik gombsor felett az accumulator
felirat dszelgett.
Elg volt tz perc, s a tizent ves agyar tkletesen sszerakta, hogy a 15 a tro
lst, a 10 pedig a betlts t jelenti; hogy az akkumultor tartalma az, aminek a trol
srl vagy betltsrl sz van; s hogy a tbbi szm a mgnesdobon tallhat 1024
sz egyikt adja meg. (Teht ezt jelenti a sz!)
Tudsra szomjaz agyar aprnknt egyre tbbet rtett meg az elmletbl s az
utastskdokbL Mire a technikusok tvoztak, tisztban voltam a gp mkdsnek
alapjaivaL
Aznap dlutn, mikzben a tanulk a kzs helyisgben rtk a leckjket, belo
pztam a mateklaborba, s jtszadozni kezdtem a szmtgppeL Mr jval korbban
megtanultam, hogy bocsnatot krni egyszerbb, mint engedlyt. Beptygtem egy
180 14.FEJEZET
aprcska programot, ami kettvel megszorozta az akkumultor tartalmt, s hozz
adott egyet. Aztn betttem egy 5-st az akkumultorba, futtattam a programot, s
az akkumultor 138 -at rt ki. A program mkdtt!
Betplltar mg nhny ehhez hasonlan egyszer programot, s mindegyik gy
mkdtt, ahogy elterveztem. n voltam a vilgegyetem ura!
Pr nappal ksbb rjttem, milyen ostoba- s szereness- voltam. A matekla
borban ugyanis talltam egy hasznlati utastst, amelyen a klnbz utastsok s
mveletkdok szerepeltek, kztk sok olyan, amit nem tudtam ellesni a technikusok
tl. Elgedettsggel tlttt el, hogy helyesen rtelmeztem azokat, amelyek ismersek
voltak a szmomra, a tbbit pedig nagyon izgalmasnak talltam. Az ismeretlen uta
stsok kztt azonban szerepelt egy HLT nev is. Ez trtnetesen a halt-ot (lellts)
jelentette, s egy csupa nullbl ll sz jelkpezte. Puszta vletlen volt, hogy ppen
egy csupa nullbl ll szt tettem minden programom vgre, hogy az akkumul
torba betltve kirtsem azt. A lellts elve fel sem merlt bennem. Azt hittem, a fut
tats csak gy lell, ha egy program vget rt.
Emlkszem, egyszer a mateklaborban figyeltem, ahogy az egyik tanr kszkdik,
hogy mkdsre brjon egy programot. Kt tzes szmrendszer szmot prblt be
rni a szmtgphez kapcsolt telexgpen, majd kirni az sszegket. Brki, aki pr
blt mr ehhez hasonl programot rni gpi nyelven, miniszmtgpen, tudja, hogy
messze nem egyszer a dolog. Be kell olvastatni a karaktereket, szmjegyekk kell
alakttatni azokat, majd binris alakra hozni, sszeadni, visszaalaktani decimlis
alakra, s visszakdoini karakterekk. Nekem elhiheted, ez sokkal rosszabb, mintha
binrisan tpllnd be a programot a vezrlpanelen.
Figyeltem, ahogy a tanr betpllja a lelltst a programba (Milyen j tlet!), majd
lefuttatja a vgig. Ez a primitv trspont lehetv tette neki, hogy megvizsglja a
regiszterek tartalmt, s lssa, mit csinlt a program. Emlkszem, ahogy azt dny
nygte:
"
H, ez aztn gyors volt!
"
. Te j g, ha tudn!
Fogalmam sem volt, milyen algoritmust alkalmazott. Ez a fajta programozs ak
kor mg mindig rejtlyes volt a szmomra, pedig soha nem szlt hozzm, mikzben
a hta mgl figyeltem. Valjban senki nem magyarzta el nekem a szmtgp m
kdst. Azt hiszem, olyan nygnek tekintettek, akivel jobb nem foglalkozni, hadd
zizegjen csak a mateklaborban, mint egy molylepke. Azt hiszem, sem n, a dik, sem
a tanrok nem lltak tl magas fokn a trsas rintkezsnek.
A tanr vgl mkdsre brta a programjt. Lenygzve figyeltem. A kt szmot
lassan rta be, mert korbbi felkiltsa ellenre a gp nem volt gyors. (Gondolj csak
bele, milyen lehetett kt egymst kvet szt beolvasni egy forg mgnesdobrll967-
ben.) Amikor lettte a Return-t a msodik szm utn, a szmtgp vad villdzsba
kezdett, majd elkezdte kirni az eredmnyt - gy msodpercenknt egy szmjegyet.
Amikor az utols kivtelvel az sszes szmjegyet kirta, mg vadabbul kezdett vil
ldzni, majd gy t msodperccel ksbb kirta az utols szmjegyet is, s lellt.
MESTEREK, TANrTVNYOK ... 181
Mirt llt meg az utols szmjegy eltt? Soha nem tudtam meg, de a dolog r
bresztett arra, hogy egy problma megkzeltse dnt hatssal lehet a felhasznl ra.
Br a program helyes eredmnyt adott, gy reztem, valami nem stimmel vele.
Ez is rsze volt a szakmai kpzsemnek - persze nem az a fajta tmutats, amiben
remnykedtem. J lett volna, ha valamelyik tanr a szrnyai al vesz, s megmutatja,
mit kell tennem. De nem szmtott, mert nzhettem ket, s szdt iramban szvtam
magamba a tudst.
AZ TMUTATS SZDKATLAN FORMl
Azrt mondtam el ezt a kt trtnetet, mert mindkett ms-ms mdjt rja le a szak
mai tmutatsnak, s egyik sem illik bele a kifejezs ltal hagyomnyosan sugallt
kpbe. Az els esetben egy nagyon jl megrt kziknyv szerzitl tanultam, mg
a msodikban azltal, hogy olyan embereket figyeltem, akik igyekeztek tudomst sem
venni rlam. A tuds azonban, amelyre szert tettem, mindkt esetben mlyrehat s
ltfontossg volt.
Termszetesen msfajta mesterektl is tanultam. Volt pldul egy kedves szom
szdunk, aki a Teletype-nl dolgozott, s egyszer egy harminc telefonrelt tartalmaz
dobozt hozott nekem, hogy jtsszak vele. Adj egy srcnak pr relt s egy villanyvo
nat-transzformtort, s meghdtja a vilgot!
Akkor ott volt az a kedves szomszd, aki rdisknt dolgozott, s megmutatta ne
kem, hogyan kell hasznlni egy ram- s ellenlls-mrt (amit rgtn tnkre is tet
tem); az irodaszer-boltos, aki megengedte, hogy
"
jtsszak
"
a mregdrga programoz
hat szmolgpvel; vagy a Digital Equipment Corporation rtkestsi irodja, ahol
lehetv tettk, hogy
"
babrljak
"
a PDP-8-asukkal s PDP-10-eskkel.
s persze tanultam a BAL-programoz nagy Jim Carlintl, aki segtett nekem
hibamentesteni egy a tudsomat meghalad Cobol-programot, s gy megmentett at
tl, hogy kirgjanak az els programozi llsombl. Megtantotta, hogyan kell elol
vasni egy maglenyomatot (core dump), s hogyan lehet formzni a kdokat res so
rokkal, csillagokbl ll sorokkal s megjegyzsekkel. adta meg nekem a kezdlkst
az igazi mestersgbeli tuds megszerzse fel. Sajnlom, hogy nem tudtam viszonozni
a szvessgt, amikor egy vvel ksbb esett ldozatul a fnk elgedetlensgnek
De szintn szlva nagyjbl ennyi. A hetvenes vek elejn nem volt tl sok tapasz
talt programoz. Minden ms helyen, ahol dolgoztam, n voltam a rangids. Senki
sem tudott segteni abban, hogy milyen is az igazi professzionlis programozs. Nem
volt pldakpem, aki megtantott volna, hogyan viselkedj ek, vagy hogy mit becsljek
meg. Mindezekre magamnak kellett rjnnm, s egyltaln nem volt knny.
KEMNY TSEK
Ahogy korbban mr emltettem, 1976-ban a gyrtsautomatizl rendszert kszt
cgnl mr nem sztam meg a kirgst. Br szakmailag felkszlt voltam, nem ta-
182 14. FEJEZET
nultam meg, hogy az zleti cloknak is figyelmet kell szentelni. Semmibe vettem
a dtumokat s hatridket. Megfeledkeztem egy fontos htfi bemutatrl, mk
dskptelen llapotban hagytam a rendszert pnteken, s htfn ksve rkeztem, gy
aztn mindenki dhsen nzett rm.
A fnkm kldtt nekem egy figyelmeztet levelet, amelyben azt rta, hogy vagy
haladktalanul vltoztatok a hozzllsomo n, vagy kirgnak Ez kijzantlag hatott
rm. trtkeltem az letemet s a plyafutsamat, s jelentsen vltoztattam a visel
kedsemen - de errl mr szt ejtettem ebben a knyvben. Ez azonban tl kevsnek
bizonyult, s tl ksn jtt. Mr minden tettemet gyanakodva figyeltk, s olyan ap
rsgok is jelentss vltak, amelyek korbban nem szmtottak volna. gy, br ke
mnyen prblkoztam, vgl ajtt mutattak.
Mondanom sem kell, hogy cseppet sem szvdert ilyen hrrel belltani, amikor
az embert egy llapotos felesg s egy ktves kislny vrja otthon. De sszeszedtem
magam, s a kvetkez munkahelyemen mr nem feledtem ezt az lettl kapott lec
kt. Tizent vig maradtam ott- az az lls alapozta meg igazn a ksbbi plyafu
tsomat, s azt, aki ma vagyok.
Vgl tlltem a csapst, s sikeres lettem. Mindazonltal alakulhatott volna sze
renessebben is a dolog. Sokkal jobb lett volna, ha lett volna egy igazi mesterem, aki
megtantja nekem a szakma minden csnjt-bnjt; akit figyelhettem volna, mikzben
segtek neki a kisebb feladatok elvgzsben; aki felgyelte s gyengden irnytotta
volna a kezdeti szrnyprblgatsaimat; aki pldaknt llt volna elttem, s megta
ntotta volna nekem, mik a kvetend rtkek, s milyen a helyes viselkeds. Egy
sensei. Egy valdi mester.
INASVEK
Mit csinlnak az orvosok? A krhzak taln gy veszik fel a vgzs medikusokat,
hogy rgtn belltjk ket a mtbe, hogy az els munkanapjukon hajtsanak vgre
egy szvmttet? Persze hogy nem.
Az orvosi szakma ritulkkal krlbstyzott s hagyomnyokkal megolajozott,
intenzv gyakornokoskodst r el. Az orvosi egyetemek szigor szakmai felgyelet
alatt llnak, s megkvetelik tlk, hogy a lehet legjobb kpzst nyjtsk a hallgatk
nak. Amerikban a kpzs nagyjbl egyenlen oszlik meg az elmleti tanulmnyok
s a krhzakban, szakemberek irnytsa alatt elvgzend klinikai gyakorlat kztt.
A vgzs orvostanhallgatknak, mieltt megkapnk az engedlyket, ktelez jel
leggel egy v szakmai gyakorlatot kell teljestenik, amelynek sorn tapasztalt orvo
sok felgyelik s irnytjk a munkjukat. Ez alatt az idszak alatt intenzv gyakorlati
kpzsben rszeslnek, s az ket oktat orvosok pldaknt llnak elttk.
Miutn a ktelez klinikai gyakorlat vget rt, brmely szakirny kpests meg
szerzshez tovbbi hrom-t v, felgyelet mellett vgzett szakmai gyakorlat szk
sges - ezt hvjk rezidenskpzsnek A rezidensek (gyakorl orvosok) gy tesznek
MESTEREK, TAN[TVNYOK ... 183
szert magabiztossgra, hogy egyre nagyobb felelssggel jr feladatokat bznak r
juk, mikzben tovbbra is tapasztaltabb orvosok veszik krl ket, akik felgyelik
a munkjukat.
Szmos szakirnyou ezen fell mg egy-hrom v gyakornokoskodst kvetel
nek meg, hogy a szakorvosjellt megszerezze a szksges szakirny kpzst s gya
korlatot.
Csak ez utn tehetik le a vizsgikat, s kaphatjk meg a szakorvosi bizonytvnyukat
Az orvosi szakma fenti lersa nmileg idealizlt, s valsznleg rendkvl pon
tatlan, de a tny ettl mg tny marad: ha sok forog kockn, nem zrunk be csak gy
friss diplomsokat egy szobba, s doblunk be nekik idnknt nmi hst, azt vrva,
hogy valami j sl ki belle. De akkor mirt tesszk ezt a szoftverfejlesztkkel?
Igaz, hogy a szaftverhibk szmljra viszonylag kevs halleset rhat. Viszont
gyakran okoznak jelents pnzgyi vesztesget. Egyes cgek hatalmas sszegeket
vesztenek a szoftverfejlesztik elgtelen kpzse miatt.
A szaftverfejlesztsi ipar valamirt abban a hitben l, hogy a programozk egysze
ren programozk, akik miutn megkaptk a diplomjukat, mris tudnak kdot rni.
Egyltaln nem szokatlan, hogy egy cg kzvetlen l az iskolapadbl toborozzon sr
. cokat,
"
csapatokat
"
alaktson bellk, majd arra krje ket, hogy ltfontossg rend
szereket ptsenek neki. rlet!
A szabafestknl nem csinlnak ilyet. A vzvezetk-szerdknl sem. A villanysze
relknl sem. Szerintem taln mg a gyorsttermi szakcsoknl sem. Hiszem, hogy
azoknak a cgeknek, amelyek vgzs informatikusokra vadsznak, tbbet kellene
a szoftverfejlesztik kpzsbe fektetnik, mint amennyit a McDonalds invesztl
a pultosaiba.
Ne ltassuk magunkat azzal, hogy ez lnyegtelen, mert nagyon sok forog kockn.
Az egsz civilizcinkat szmtgpes prograrak mkdtetik. Szmtgpes prog
rarak mozgatjk s kezelik a mindennapi letnket t- meg tszv informcikat
Szoftver vezrli az autinkban a motort, a sebessgvltt s a fket. Szoftver szmtja
ki a bankszmlnk egyenlegt, utalja t a szmlink ellenrtkt, s fogadja a fizet
snket. Szoftver mossa ki a ruhnkat, s mutatja neknk az idt. Szoftver jelenti meg
a kpet a tvnken, kldi el az SMS-einket, trcszza az ltalunk hvott szmokat, s
szrakoztat minket, ha unatkozunk. Mindentt jelen van.
Mivel az aprsgoktl a legfontosabb dolgokig az letnk minden mozzanatt
szoftverfejlesztkre bzzuk, ajnlatos lenne, ha a szoftverfejlesztk kell idej kpz
sen s felgyelet mellett vgzett szakmai gyakorlaton esnnek t.
SZAKMAl GYAKORLAT SZOFTVERFEJLESZTKNEK
Hogyan vezesse be a szaftverfejleszti szakma a friss diplomsokat a profik vilgba?
Milyen lpcsfokokat msszanak meg? Milyen kihvsokkal nzzenek szembe? Mi
lyen clokat kelljen elrnik? Haladjunk visszafel!
184 14. FEJEZET
MESTEREK .. Mesternek azt a programozt tekinthetjk, aki mr tbb jelents szaft
verprojektet is irnytott. Jellemzen legalbb tz vnyi tapasztalattal rendelkezik, s
tbbfle platformon, nyelven s opercis rendszeren dolgozott. Tudja, hogyan kell
irnytani s sszehangolni egyszerre tbb csapatot, hozzrt tervez, s gond nl
kl brkit lekrz a kdolsban. Ajnlottak mr neki vezeti llst, de vagy vissza
utastotta azt; visszakozott, miutn elfogadta; vagy megtartotta mellette az elssor
ban szakmai feladatt. Ezt a szakmai feladatot gy ltja el, hogy olvas, kpzi magt,
gyakorol, tevkenyen rszt vesz a munkban, s tant. A cgek mindig egy mesterre
bzzk a projektek szakmai vezetst. Gondolj Scotty-ra.
INASOK. Az inasok azok a programozk, akik kpzettek, hozzrtk s energikusak.
Plyafutsuknak ebben a szakaszban megtanuljk, hogyan kell csapatban hatko
nyan dolgozni, s hogyan vlhatnak egy csapat vezetjv. Ismerik a legjabb tech
nolgikat, de jellemzen nem rendelkeznek tbbfle rendszeren szerzett tapasztala
tokkal. ltalban csak egy nyelvet, rendszert s platforrot ismernek behatan, de
tovbbiakat is tanulmnyoznak. A tapasztalatuk szintje ersen vltoz, de ltalban
mintegy t v ll a htuk mgtt. A legtbb tapasztalattal rendelkezk mr megk
zeltik a mesteri szintet, mg azok, akik a legkevesebb idt tltttk el a szakmban,
nemrg mg gyakornokok voltak.
Az inasokat mesterek vagy tapasztaltabb inasok terelgetik. A kezd inasok ritkn
kapnak nllsgot; az munkjukat szarosan felgyelik, a kdjukat tzetesen t
vizsgljk. Ahogy nagyobb tapasztalatra tesznek szert, az nllsguk n, a felgye
let rnyaltabb, kevsb kzvetlen lesz, majd vgl talakul egyenrang felek kztti
vlemnycserv.
GYAKORNOKOK .. A vgzsk gyakornokknt kezdik a plyafutsukat. A gyakornokok
nem rendelkeznek nllsggal, ehelyett inasok szaros felgyelete alatt llnak. Kez
detben egyltaln nem bznak rjuk feladatokat; csupn besegtenek az inasoknak.
Ebben az idszakban nagyon intenzv pros programozsra van szksg, mert ekkor
tanuljk meg s tudatostjk magukban a szakma alapelveit s fogsait, s ekkor ala
pozzk meg az rtkrendjket
A gyakornokok tanti az inasok. k gondoskodnak rla, hogy a gyakornokok
megismerjk a tervezsi elveket, mintkat, eljrsokat s ritulkat. Az inasok tant
jk meg ket a tesztvezrelt fejlesztsre, az jratervezsre, a becslsre, s gy tovbb.
Az inasok olvasmnyokat s gyakorlatokat osztanak ki a gyakornokoknak, s felgye
lik a haladsukat.
Egy v gyakornokoskods szksges. Ez utn, amennyiben az inasok hajlandak
maguk kz fogadni a gyakornokot, beajnljk t a mestereknek. Amestereknek meg
kell vizsglniuk a gyakornok alkalmassgt: elbeszlgetnek vele, s ttekintik az ad
digi eredmnyeit. Ha a mesterek beleegyeznek, a gyakornokbl inas vlhat.
MESTEREK, TANTVNYOK ... 185
A VALSG
A fentiek termszetesen ezttal is egy elkpzelt, idealizlt vilgot festenek le. Ha vi
szont kicserled a neveket, s hunyortva nzed a szavakat, rjhetsz, hogy ez a vilg
egyltaln nem ll messze a mai elvrsai nktl. A friss diplomsokat fiatal csapatve
zetk irnytjk, ket pedig projektvezetk, s gy tovbb. A gond csak az, hogy ez az
irnyts a legtbb esetben nem szakmai! A legtbb cgnl egyltaln nincs szakmai
felgyelet. A programozk csupn azrt kapnak fizetsemelst s vgl ellptetst,
mert a programozkat ezzel szoktk jutalmazn i.
A mai gyakorlat s az n idealizlt gyakornaki programom kztt az a klnbsg,
hogy n a hangslyt a szakmai kpzsre, felgyeletre s irnytsra helyezem. A k
lnbsg magban az elvben rejlik, hogy a szakmai rtkrendet s gondolkodst tan
tani, gondozni, tpllni s sztnzni kell. A jelenlegi steril megkzelts legnagyobb
hinyossga, hogy nem kveteljk meg az idsebbektl, hogy tantsk a fiatalokat.
MESTERSGBELI TUDAS
Most mr meghatrozhatjuk, mit is jelent a mestersgbeli tuds kifejezs. Mit rtnk
mestersgbeli tuds alatt? Ahhoz, hogy ezt megrthessk, a mesterember szbl kell
kiindulnunk Ha ezt a szt halljuk, a szakrtelem, a minsg, a tapasztalat s a hoz
zrts jut az esznkbe. A mesterember olyasvalaki, aki gyorsan, de nem kapkodva
dolgozik, relis becslseket ad, s elvgzi, amit vllalt. Egy mesterember tudja, mikor
mondjon nemet, de arra trekszik, hogy igent mondhasson. A mesterember: profi.
A mestersgbeli tuds a mesterember gondolkodsmdja. A mestersgbeli tuds
egy mm, amely szakmai rtkek, ismeretek, eljrsok, viselkedsformk s megol
dsok sszessgt takarja.
De hogyan teszi ezt a mmet a magv egy mesterember? Hogyan sajttja el ezt
a gondolkodsmdot?
A mestersgbeli tuds mmjt a szakemberek adjk t egymsnak. Az idsek meg
tantjk a fiataloknak, az azonos szinten llk kicserlik egyms kztt. Betartjk s
jratanuljk a szablyait, ahogy az idsek figyelik a fiatalokat. A mestersgbeli tuds
fertzs, egyfajta szellemi vrus, amelyet gy kaphatsz el, hogy msokat fgyelsz, s
megengeded, hogy a mm beld hatoljon.
MEGGYZ ER
Senkit nem beszlhetsz r, hogy mesterember legyen. Nem gyzheted meg arrl, hogy
magba fogadja a mestersgbeli tuds mmjt. Az rvek mit sem rnek. Az adatok
lnyegtelenek. Az esettanulmnyok semmit sem jelentenek. Egy mm elfogadsa nem
annyira racionlis, mintsem rzelmi dnts. Mlyen emberi dolog.
186 14.FEJEZET
De akkor hogyan vehetsz r valakit, hogy a magv tegye a mestersgbeli tuds
mmjt? Emlkezz vissza: a mm fertz, de csak akkor, ha megfigyelhet. A mmet
teht megfigyelhetv kell tenned. Te leszel a pldakp. Elszr magad is mesterem
berr vlsz, majd hagyod, hogy a mestersgbeli tudsod sztsugrozzon. A mm
gondoskodik a tbbirl.
SSZEFOGLALS
Az iskola meg tudja tantani a szmtgp-programozs elmlett, arra azonban nem
kpes - s nem is teszi meg-, hogy tadja azt a szakmai tudst s gyakorlatot, amely
lyel egy mesterembernek rendelkeznie kell. Ezeket a dolgokat csak szakemberek sze
mlyes tmutatsa rvn, vek alatt sajtthatod el. Itt az ideje, hogy mi, akik a szaft
veriparban dolgozunk, szembenzznk a tnnyel, hogy nem az egyetemekre, hanem
rnk hrul a feladat, hogy utat mutassunk a szoftverfejlesztk kvetkez nemzed
knek. Itt az ideje, hogy kialaktsuk a szakmai gyakorlat s a hossz tv szakmai
tmutats programjt.
A FGGELK
ESZKZK
1978-ban a Teradyne -nl dolgoztam azon a telefonvizsgl rendszeren, amelyrl ko
rbban mr beszltem. A rendszer mintegy 80KSLOC-nyi M365 assembler-kdbl
llt. A forrskdot mgnesszalagokon troltuk
A szalagok hasonltottak azokhoz a 8-svos sztere kazettkhoz, amelyek olyany
nyira npszerek voltak a 70-es vekben. A meghajt csak egy irnyban tudta moz
gatni a vgtelentett szalagot. A tekercsek 3, 7,5, 15 vagy 30mternyi szalagot troltak.
Minl hosszabb volt a szalag, annl tovbb tartott visszatekerni, mivel a meghajtnak
addig kellett elre mozgatnia, amg el nem rt a
"
betltsi ponthoz
"
. Egy 30mteres
ESZKZK 189
tekercs t perc alatt rt el a betlt si ponthoz, ezrt gondosan vlasztottuk meg, hogy
milyen hossz tekercseket hasznlunk.1
A szalagoklogikailag llomnyokra (fjlokra) oszlottak. Egy szalagon annyi llomny
lehetett, amennyi csak elfrt rajta. Ha meg akartunk keresni egy fjlt, akkor betltttk a
szalago t, majd egyenknt elreugrltunk a fjlok kztt, amg meg nem talltuk a keresett
llomnyt. A forrskd-knyvtr tartalmrl volt egy listnk, amit kitettnk a falra, hogy
tudjuk, hny fjlt kell tugranunk, mire elrnk ahhoz, amelyikre szksgnk van.
A forrskdrl volt egy 30 mteres tekeresre rt msolatunk, amit a laborban tar
tottunk, a polcon. A MASTER cmke llt rajta. Ha mdostani akartunk egy fjlt, be
tltttk a MASTER forrsszalagat az egyik meghajtba s egy 3 mteres res tekereset
a msikba. Addig ugrltunk elre a MASTER szalagon, amg el nem rtk a keresett
llomnyt, majd a fjlt az res szalagra msoltuk. Ezt kveten mindkt szalagat
"
visszatekertk
"
, s a MASTER tekereset visszatettk a polcra.
A mesterszalag tartalmrl kln listnk volt egy tbln a laborban. Miutn le
msoltuk a szerkeszteni kvnt fjlt, egy sznes gombostt tettnk a tbln a neve
mell. Ez felelt meg a fjl
"
kivtelnek
"
(check out).
A szalagokat egy kpernyn szerkesztettk. A szvegszerkesztnk (egy ED-402-es)
kifejezetten jl mkdtt- nagyon hasonltott a vi-re. Beolvastunk egy
"
oldalt
"
a szalagrl, mdostottuk a tartalmt, majd kirtuk az oldalt, s beolvastuk a kvet
kezt. Egy oldal jellemzen 50 kdsorbl llt. A szalagon nem lehetett elrekukkan
tani, hogy lssuk, milyen oldalak kvetkeznek, s vissza sem lehetett menni a mr
szerkesztett oldalakhoz, ezrt kinyomtatott kdlistkat hasznltunk
A vgrehajtani kvnt mdostsokat valjban a nyomtatott kdlistkon jelltk
meg, s csak ez utn szerkesztettk a fjlokat, a jellseknek megfelelen. Senki sem
rt vagy mdostott kdot a terminlnL ngyilkossg lett volna.
Miutn minden mdostani kvnt fjlon vgrehajtottuk a szksges vltoztatso
kat, beleolvasztottuk a fjlokat a mesterpldnyba, hogy ltrehozzunk egy munkapl
dnyt. Ezt a szalagat hasznltuk a fordtsi s a tesztmveletek futtatshoz.
Amikor vgeztnk a tesztelss el, s meggyzdtnk rla, hogy a mdostsok m
kdnek, megnztk a tblt. Ha nem voltak rajta j gombostk, egyszeren t
cmkztk a munkapldnyt MASTER-r, s kihztuk a gombostinket. Ha viszont
idkzben felkerlt nhny j t a tblra, a sajt tink levtele utn tadtuk a mun-
Amint emltettem, a szalagokat csak egy irnyban lehetett mozgatni, ezrt ha olvassi hiba merlt
fel, nem lehetett egyszeren visszatekerni a szalagot, s megismtelni a beolvasst. Abba kellett
hagynunk, amit csinltunk, vissza (pontosabban elre) kellett tekernnk a szatagot a betltsi pont
hoz, majd ellrl kezdeni az egszet. Ez naponta kt-hrom alkalommal megesett. Az rsi hibk
ugyancsak megszakottak voltak, a meghajt azonban nem volt kpes szlelni ezeket, ezrt a szala
gokat mindig prban rtuk, s amikor elkszltnk, ellenriztk a msikt. Ha valamelyik szalag
hibsnak bizonyult, rgtn msolatot ksztettnk a prjrL Ha mindkett hibs volt, ami nagyon
ritkn fordult el, az egsz r veletet ellrl kezdtk. Ilyen volt az let a 70-es vekben.
190 A FGGELK
kaszalagat annak, akinek a ti mg ott voltak a tbln, s neki kellett elvgeznie az
sszeolvaszts t.
Hrman dolgoztunk a laborban, s mindegyiknk ms-ms szn gombostket
hasznlt, gy knnyen t lehetett tekinteni, hogy ki milyen fjlokat vett ki mdos
tsra. Mivel pedig egy helyisgben dolgoztunk, s folyamatosan beszltnk egyms
hoz, fejbl tudtuk, hogy mi van a tbln. A tbla teht ltalban felesleges volt, s
sokszor nem is hasznltuk.
ESZKZK
A szoftverfejlesztk ma eszkzk szles krbl vlogathatnak. A tbbsgkkel nem
ri meg veszdni, de van nhny, amelynek a hasznlatt minden szaftverfejlesz tnek
el kell sajttania. Ez a fejezet az n jelenlegi eszkztramat rja le. Nem vgeztem
teljeskr felmrst a ltez egyb eszkzkrl, ezrt a lers semmikppen sem te
kinthet tfog rtkelsnek, csupn az ltalam hasznlt eszkzket mutatja be.
FORRSKD-KEZELS
Ha forrskd-kezelsrl van sz, ltalban a nylt forrs eszkzk bizonyulnak a leg
jobb vlasztsnak. Mirt? Mert fejlesztk rjk ket fejlesztknek - sajt maguknak,
amikor olyasmire van szksgk, ami tnyleg mkdik.
Jnhny drga, kereskedelmi forgalomban kaphat,
"
vllalati
"
(enterprise) vlto
zatkvet rendszer ltezik, de tapasztalataim szerint ezeknek nem igazn a fejlesztk
jelentik a clcsoportj t, hanem a menedzserek s dntshozk, valamint egy bizonyos
"
eszkzcsoportot
"
hasznlk. Az ilyen rendszerek kpessgeinek listja igencsak fi
gyelemremlt - csak sajnos ppen azokat a szolgltatsokat nem nyjtjk, amelyekre
a fejlesztknek tnylegesen szksgk lenne. A legfontosabb ezek kzl a sebessg.
EGY
"
VLLALATI
"
FORRSKD-KEZEL RENDSZER
Tegyk fel, hogy a cged kisebb vagyont ruhzott be egy
"
vllalati
"
forrskd-kezel
rendszerbe. Ha ez a helyzet, rszvtem. Politikailag valsznleg nem kifizetd kr
berohanni, s mindenkit figyelmeztetni, hogy
"
Bob bcsi azt mondta, ne hasznl
juk!
"
. Van viszont egy egyszer megolds.
Az egyes munkafzisok vgn (gy kthetente) betltheted (
"
bejelentkeztetheted
"
,
check in) a forrskclod a
"
vllalati
"
rendszerbe, mikzben addig valamelyik nylt
forrs rendszert hasznlod. gy mindenki boldog lesz, nem szegsz meg semmilyen
cges elrst, viszont hatkonyan tudsz dolgozni.
ESZKZK 191
PESSZIMISTA S OPTIMISTA ZROLS
A pesszimista zrols j tletnek tnt a 80-as vekben, hiszen az egyidej mdosts
problmjt a mdostsok sorba lltsval a legegyszerbb kikszblni: ha n szer
kesztek egy fjlt, te jobb, ha nem teszed. A sznes gombostk rendszere, amelyet
a 70-es vek vgn mi hasznltunk, valjban a pesszimista zrols egyik fajtja volt.
Ha egy fjl neve mellett gombostt lttam, tudtam, hogy nem szabad szerkesztenem
azt a fjlt.
A pesszimista zrolsnak termszetesen megvannak a maga htulti. Ha zrol ok
egy fjlt, majd elmegyek szabadsgra, mindenki ms, akinek mdostania kellene az
adott fjlt, elakad. Ha egy fjlt egy-kt napig zrolva tartok, akr szndkosan is ks
leltethetem msok munkjt.
Az eszkzeink azta sokkal gyesebb vltak a prhuzamosan szerkesztett forrs
fjlok beolvasztsban. Ha az ember belegondol, egszen lenygz, mire kpesek.
Az eszkz megvizsgl kt klnbz fjlt, illetve azok kzs st, majd klnfle
mdszerekkel kitallja, hogyan egyestheti az egyidejleg vgrehajtott mdostsokat
- s egsz jl csinlja.
A pesszimista zrols kora teht vget rt. Amikor kivesznk (
"
kijelentkeztetnk
"
,
check out) egy fjlt a rendszerbl, tbb mr nem kell zrolnunk azt. Valjban egy
ltaln nem kell trdnnk az egyes fjlok kijelentkeztetsvel - kivehetjk az egsz
rendszert, s tetszleges fjlokat mdosthatunk benne.
Amikor kszen llunk a mdostsok visszatltsre, egy
"
frisstsi
"
mveletet
(update) kell vgrehajtanunk A mvelet elrulja neknk, hogy bejelentkeztetett-e
kdot valaki ms is elttnk, automatikusan beolvasztja (merge) a legtbb mdos
tst, megkeresi az tkzseket, s segt a fennmarad mdostsok beolvasztsban.
Ezt kveten vglegesthetjk (commit) az sszeolvasztott kdot.
A fejezet ksbbi rszben bvebben is szt ejtek arrl, hogy milyen szerepet jt
szanak az automatizlt tesztek s a folyamatos bepts ebben a folyamatban, most
azonban csak azt szeretnm leszgezni, hogy soha nem jelentkeztetnk be olyan k
dot, amelyik nem teljesti valamennyi tesztet Soha, de soha.
CVS/SVN
A rgi j
"
kszenlti
"
forrskd-kezel rendszer a CVS. A maga korban nagysze
ren megfelelt, de a mai projektekhez mr kiss elavult. Az egyes fjlok s knyv
trak kezelsben nagyon j, de az llomnyok tnevezsvel vagy a knyvtrak
trlsvel mr vannak gondjai. A padlsa pedig ... nos, minl kevesebbet tudunk
rla, annl jobb.
A Subversion (SVN) ezzel szemben kitnen mkdik. Lehetv teszi, hogy egyet
len mvelettel kijelentkeztesd a teljes rendszert; a frissts, az sszeolvaszts s a vg
legests egyszeren vgrehajthat; s amg nem kell kdgakkal foglalkozni, az SVN
rendszerek meglehetsen knnyen kezelhetk.
192 A FGGELK
KDELGAZTATS A legegyszerbb formit kivve 2008-ig kerltem a kdelgazta
tst (branching). Ha egy fejleszt j kdgat hozott ltre, az gat a munkafzis vgn
vissza kellett csatornzni a fgba. Olyan szigor voltam a kdelgztatssal kapcso
latban, hogy az ltalam vezetett projektekben csak nagyon ritkn fordult el ilyesmi.
Ha az SVN-t hasznlod, szerintem ma is ezt az elvet rdemes kvetned. Ugyanak
kor megjelent nhny j eszkz, amelyek teljesen talakthatjk a jtkszablyokat.
Az elosztott forrskd-kezel rendszerekre gondolok, amelyek kz l a g i t a kedven
cem, ezrt bvebben is ki szeretnk trni r.
GIT .. A g i t-et 2008 vgn kezdtem hasznlni, s teljesen megvltoztatta, amit a for
rskd-kezelsrl korbban gondoltam. Azt elmagyarzni, hogy mirt vltoztatja
meg a jtkszablyokat ez az eszkz, tlmutatna ennek a knyvnek a keretein, de r
demes rviden sszevetni az A. l. s A.2. brkat.
Az A.l. bra a FITNESSE projekt nhny htnyi fejlesztst mutatja, az SVN fel
gyelete alatt. Lthatod rajta a kdelgaztatst szigoran tilt szablyaim hatst.
Egyszeren nem hoztunk ltre kdgakat. Ehelyett nagyon srn vgeztnk friss
tst, sszeolvasztst s vglegestst a fgon.
A.l. bra
Mre bug fixes
t Docs now say that Java 1.5 is reqired.
Bug fix
, Mny usability and behaviorial imrovements.
Clean up
t Added PAGE_NAME an PAGE_PAT H to pre-delined variables.
Added . to !pth widgt
link to the Iixtura gallery
Iixtur gallery release 2.0 (208-06.9) cpied into the !ruk wiki at
Firefax cmpatablity for invisible cllapsibia sectios; remeved .c
Updaed documentaion suite for a chanes sinc last releae.
Enhancemnt to handie nulls in saved and realled symbos. Adde
Added a "Prune" Propeties aUributa to exclude a page and ils ch l<
FIXed type-o
Added chek for existing child page on rename.
Added "Renam link to Symbolic Links proparty section; renmad
Adjusted page properties on rcntly aded pages such that they c
Enhanced Symbolic Links to allo ali relative and absaiute pth for
Cleaned up renamPageReponer a bit more.
Cleaned Up PathParsar names a bit. Pop -> RemveNaeFroE
Cleaned up RenamePageResponder a bit. Fixed TestContentsHell
udated usage mssage
Fixed a bug wherein varab es delind in a parent's peformated bl
Added epicit responde "getPae" to render a page i n case query
Tweas to TOC help text.
New proery: Help text; TOCWidget has rollover balcon with new
Redundant to the JUnii tests and elemantal acptac tests.
+ Remved the Iasi of the [ac tags.
! !conents -1 option enhacment to show suite fillars in TOC list; fix
TOC enhancmnts for proprties (-p and PROPERTY_TOC an F
1) Render the tas on non-WikiWor links;
Added hHpJ/ prefix to google.cm for firewall transparency.
Isolate query action from adilianl qery argumnts. For exarle
Acmmodte query strings like "?suite&suiteFilter=X"; prior logic \
; leep AliaslinkWidget a bit.
A FitNesse a Subversion-ban
ESZKZK 193
Az A.2. bra ugyanennek a projektnek mutatja nhny heti fejldst, de ezttal a
QJThasznlatvaL Amint lthatod, tele van elgazsokkal s sszeolvasztsokkaL En
nek nem az volt az oka, hogy laztottam a kcelgaztats tilts n - egyszeren ez volt
a legkzenfekvbb s legknyelmesebb mdja a munknak. Az egyes fejlesztk nagyon
rvid let kdgakat hoztak ltre, majd igny szerint sszeolvasztottk azokat.
P.2.DI
P|\NCSSC Q|\DCD
l!
o o o
l
ImpJemented fixture chinng with instancs
Refactord, 8 that MethdExecutionResult keeps 1
Fixure Chaining wi th instancs stord in Slim varia
! .-
Mrge reote branh 'upstreammaster'
husekeeping
l '
fixed bg which included TearDown in SuiteStUp
' husekeeping
1
Mrge branch master' of https:J/github.cm/rkus
Mrge branch master' of github.cm:MarkusGaertn
,.. Mrge branch 'master' of http:/github.cmunclel
JJJ husekeeping
methods in MehodExecuto protectec
fix orer of preopile sceario libarias
ad beginTable and endai e cal ls to Decisi or
Precmila Snarios at and above the suite lev1
otimzed i mports
mrge
Show test and suite rutims i n Ul
Remve static BseForatter.testme
husekeeping
Mrge branch master' of http:/github.cmclarelfitn
Aded Help widget 8 the "help text" that apears il
Remte_debug shold now work for more langagE
Mrge branch master' of http://github.cmMarkusC
aded missing properie files
Aapted Payroll example test as shown by Gojko o
husekeeping
.
Arra is felfigyelhetsz, hogy nem lthat egy igazi fg-mert nincs ilyen. Ha a QJt-et
hasznlod, nincs olyan, hogy kzponti kdtr (central repository) vagy fg (main
line). Minden fejleszt kln pldnnyal rendelkezik a projekt teles trtnetbl a
sajt gpn. Ezt a helyi msolatot jelentkeztetik be s ki, s akkor olvasztjk ssze
a tbbiekvel, amikor szksges.
Igaz, hogy fenntartok egy klnlegesen becses trol t, amelyben elraktrozam az
sszes kztes s kiadsi vltozatot, de ezt a trat fgnak hvni tveds lenne. Csupn
194 A FGGELK
egy knyelmesen megtekinthet pillanatfelvtelt nyjt a projekt teljes trtnetrl,
amelyet minden fejleszt a sajt gpn alakt.
Ha nem vilgos a dolog, sebaj. A g i t elsre okoz nmi fejtrst-hozz kell szak
nod, hogyan mkdik. A vlemnyem azonban az, hogy agit s a hozz hasonl
eszkzk jelentik a forrskd-kezels jvjt.
SZERKESZTK S FEJLESZTKRNYEZETEK
Fejlesztknt kdok olvassval s szerkesztsvel tltjk a legtbb idt. Az erre
a clra hasznlt eszkzeink ugyanakkor hatalmas vltozson mentek keresztl az v
tizedek sorn. Vannak kztk olyanok, amelyek rendkvl nagy tudsra tettek szert,
de olyanok is, amelyek alig vltoztak a 70-es vek ta.
VI
Azt hihetnd, hogy azok a napok, amikor a vi-t hasznltuk els szm programszer
keszt eszkzknt, mr rgen elmltak, hiszen manapsg mr olyan eszkzk ltez
nek, amelyek messze tlszrnyaljk a vi s a hozz hasonl egyszer szerkesztk
kpessgeit. Az igazsg azonban az, hogy egyszersgnek, knny hasznlhats
gnak, gyorsasgnak s rugalmassgnak ksznheter a v i ismt komoly npsze
rsgnek rvend. Lehet, hogy a v i nem olyan sokoldal, mint az Emacs vagy az
Eclipse, de mg mindig gyors s hatkony szerkesztnek szmt.
Ezzel egytt ma mr nem vagyok vi-guru. Volt id, amikor gy ismertek, mint
a
"
vi-istent
"
, de annak mr rgen vge. Idrl idre elveszem a vi-t, ha gyorsan kell
szerkesztenem egy szvegfjlt, st nemrg egy tvoli krnyezetben lev Java-forrs
fjlon hajtottam vgre vele egy gyors mdostst, de az elmlt tz vben elenyszen
kevs alkalommal hasznltam valdi kdolsra.
EMACS
Az Emacs mg mindig az egyik legsokoldalbb szerkeszt a piacon, s valsznleg
mg vtizedekig az is marad. Ezt a bels Lisp-modell szavatolja. Az ltalnos cl
szerkeszteszkzk kztt semmi sem rhet a nyomba. Msrszrl, azt hiszem, az
Emacs nem igazn kpes versenyre kelni a ma a piacot ural egyedi cl egyestett
(integrlt) fejlesztkrnyezetekkel (IDE). A kdszerkeszts ugyanis nem ltalnos
cl szerkesztsi feladat.
A 90-es vekben megszllott rajongja voltam az Emacs-nek. Semmi mst nem
voltam hajland hasznlni. Az akkori rmutats-kattingats szerkesztk nevetsges
jtkszerek voltak csupn, amelyeket egyetlen fejleszt sem vehetett komolyan.
A 2000-es vek elejn azonban megismerkedtem az IntelliJ-vel, amely ma a kedvenc
fejlesztkrnyezetem, s soha tbb nem nztem vissza.
ESZKZK 195
E CLl PS E/l NTELLIJ
InteiliJ-felhasznl vagyok. Egyszeren imdom. Java-, Ruby-, Clojure-, Scala-, Java
Script- s szmtalan ms nyelv kdot rok benne. Ezt az eszkzt programozk k
sztik, akik rtik, mire van szksge egy programoznak, amikor kdot r. Az vek
sorn ritkn okoztak csaldst, s szinte mindig a kedvemre tettek.
Az Eclipse az InteliiJ-hez hasonl tuds s hatkonysg eszkz. Mindkett
nagysgrendekkel az Emacs felett ll, ha Java-kd szerkesztsrl van sz. Lteznek
msIDE-k is ebben a kategriban, de nem trek ki rjuk, mert nincs kzvetlen ta
pasztalatom a mkdskrl.
Az, ami ezeket a fejlesztkrnyezeteket az Eracs-hoz hasonl eszkzk fl emeli,
a rendkvli sokoldalsg, ahogy a kdokat kezelhetjk bennk. Az InteiliJ-ben pl
dul egyetlen paranccsal kinyerheted egy osztly sosztlyt. Ezenkvl tnevezhetsz
vltozkat, kinyerhetsz tagfggvnyeket, rklst sszettell alakthatsz t - s ez
csak nhny a szmtalan nagyszer szolgltats kzl.
Ezekkel az eszkzkkel a kdszerkeszts tbb nem annyira sorokrl s karakte
rekrl szl, mint sszetett mveletekrl. Nem a kvetkezknt begpelend nhny
karakteren s soron kell trnd a fejed, hanem az eltted ll transzformcikon.
Rviden, a programozsi modell jelentsen klnbzik, s rendkvl hatkony.
Ennek a sokoldalsgnak persze megvan az ra. Az emltett fejlesztkrnyezetek hasz
nlatt idbe telik megtanulni, s a projektek belltsa sem megy gyorsan. Ezek az esz
kzk nem pehelyslyak, s a futsukhoz jelents szmtsi erforrsokat ignyelnek.
TEXTMATE
A TextMate sokoldal s pehelysly. Nem rendelkezik olyan csodlatos kpessgek
kel, mint az IntelliT vagy az Eclipse, hinyzik belle az Emacs hatkony Lisp-motorja
s knyvtra, s nem olyan gyors s knnyed, mint a v i. Msrszrl azonban egy
szeren megtanulhat a hasznlata, s a kezelse sztnsen elsajtthat.
n idnknt hasznlom a TextMate-et, klnsen akkor, ha vletlenl C++-kdot
kell rnom. Egy nagyobb C++-projekthez az Eracs-et vlasztanm, de mivel tbb
nyire csak apr feladatokat kell C++-ban vgrehajtanom, nem veszdm vele.
PROBLMAKVETS
Jelenleg a Pivotal Trackert hasznlom. Elegns s egyszeren hasznlhat rendszer,
amely jl illeszkedik az agilis/iteratv megkzeltshez, s gyors kommunikcit tesz
lehetv a dntshozk s a fejlesztk kztt. Nagyon elgedett vagyok vele.
A legkisebb projektekhez nha a Lighthouse-t vlasztom, mert nagyon gyors,
knnyen bellthat, s egyszeren hasznlhat. A hatkonysga azonban messze
nem mrhet a Trackerhez.
196 A FGGELK
Az is elfordul, hogy egyszeren egy wi kit hasznlok. A wikik bels projektekhez
tkletesen megfelelnek. Tetszleges smra be lehet lltani ket, gy nem knysze
rlsz egy adott eljrs vagy egy merev struktra alkalmazsra. A wikik knnyen
ttekinthetk s hasznlhatk.
Nha a legjobb problmakvet rendszer egy csomag krtya s egy tbla vagy fa
lijsg. A tblt fel lehet osztani olyan oszlopokra, mint
"
Tennivalk
"
,
"
Folyamatban
"
s
"
Ksz
"
, gy a fejlesztknek csak t kell helyeznik a krtykat egyik oszlopbl
a msikba, ahogy elrehaladnak a munkval. Valsznleg ez a legelterjedtebb prob
lmakvet rendszer, amelyet ma az agilis csapatok hasznlnak.
n azt javaslom az gyfeleimnek, hogy kezdjk egy olyan manulis rendszerrel,
mint a falijsg, mieltt bemhznnak egy problmakvet eszkz be. Ha a manulis
rendszert mr rutinosan tudjk hasznlni, elegend ismerettel fognak rendelkezni
ahhoz, hogy kivlasszk a megfelel eszkzt. Mg az is lehet, hogy az a legjobb dn
ts, ha maradnak a manulis rendszer hasznlata mellett.
A PROBLMK SZMA
A fejlesztcsapatoknak termszetesen szksgk van egy listra, amelyen az elvg
zend feladatok szerepelnek, belertve az jonnan megvalstand szolgltatsokat
s a feldertend programhibkat is. A listn brmely viszonylag mretesebb (5-12
fs) csapat esetben nhny tucat, legfeljebb pr szz elem lehet. Nem tbb ezer.
Ha tbb ezer programhibt kell felderteni, akkor valami gond van. Ha szolglta
tsok ezreit kell megvalstani, vagy feladatok ezreit kell elvgezni, szintn. A teendk
listjnak ltalnossgban viszonylag rvidnek s gy kezelhetnek kell lennie egy
olyan pehelysly eszkz segtsgve!, mint egy wiki, a Lighthouse vagy a Tracker.
Lteznek olyan kereskedelmi eszkzk, amelyek elg jnak tnnek. Nekem mg
nem volt szerenesm kzvetlen l dolgozni velk, de az gyfeleim kztt akadtak, akik
hasznltk ket. Nem vagyok ellene az ilyen eszkzknek, amg a teendlista rvid s
kezelhet. Ha viszont egy problmakvet eszkzt tbb ezer ttel kvetsre knysze
rtnk, akkor a
"
problmakvets
"
sz elveszti az rtelmt, s inkbb beszlhetnk
"
problmalerakrl
"
(ami gyakran olyan szagot is raszt, mint egy szemtlerak).
FOLYAMATOS BEPTS
Az utbbi idben a Jenkinst hasznlom motorknt a folyamatos beptshez, mert pe
helysly, egyszer, s a hasznlataszinte azonnal megtanulhat. Csak letltd, elind
tod, gyorsan elvgzel nhny egyszer belltst, s mr dolgozhatsz is. Nagyon klassz.
A folyamatos beptssei kapcsolatos filozfim egyszer: kapcsold ssze a forrs
kd-kezel rendszerrel. gy amikor csak valaki bejelentkeztet egy kdot, a rendszer
nmkden bepti, majd llapotjelentst kld a csapatnak.
ESZKZK 197
A csapatnak csak annyi a dolga, hogy mkdkpesen tartsa az ppen felptett
kdvltozatot Ha a felpts kudarcot vall,
"
le kell lltani a nyomdagpeket
"
, s a
csapatnak vszrtekezletet kell tartania, hogy gyorsan megoldja a problmt. Semmi
lyen krlmnyek kztt nem szabad hagyni, hogy a hiba egy egsz napig vagy mg
tovbb fennlljon.
A FITNESSE projekten minden fejlesztvel lefuttatom a folyamatos beptst vg
rehajt parancsfjlt, mieltt vglegestene egy kdot. A felpts kevesebb mint t
percet ignyel, ezrt a mvelet nem megterhel. Ha problmk merlnek fel, a fejlesz
tknek meg kell oldaniuk ket, mieltt vglegestik a kdot. gy az automatikus fel
pts ritkn vall kudarcot. A leggyakrabban a krnyezettel kapcsolatos okok miatt
kvetkezik be ilyesmi, mivel az automatikus felptst vgz rendszerem jelentsen
klnbzik a programozk fejlesztkrnyezettL
EGYSGTESZTEL ESZKZK
Minden nyelvnek megvan a maga kedvenc egysgtesztel eszkze. n a J avhoz a
JUNIT-ot, a Ruhy-hoz az RSPEC-et, a .N et-hez az NUNIT-ot, a Clojure-hoz a Midje-t,
a C-hez s a C++-hoz pedig a CPPUTEST-et vlasztom.
Nem szmt azonban, melyik egysgtesztel eszkz mellett dntesz, bizonyos
alapszolgltatsokkal mindegyiknek rendelkeznie kell:
l. Az eszkznek lehetv kell tennie a tesztek gyors s egyszer futtatst. Az, hogy
ezt IDE-bvtmnyeken vagy egyszer parancssori eszkzkn keresztl ri el,
lnyegtelen - az a fontos, hogy a fejlesztk brmikor, igny szerint lefuttathassk
a teszteket: Az ehhez szksges parancsnak pofonegyszernek kell lennie.
n a CPPUTEST-tesztjeimet pldul gy futtatom, hogy berom a command -M
parancsot a TextMate-be. Ezt a parancsot gy lltottam be, hogy futassa a
make file-omat, amely automatikusan lefuttatja a teszteket, s egy egyso
ros jelentst r ki rluk, ha minden teszt sikeresen lefutott. Az INTELLIJ a
JUNIT-ot s az RSPEC-et egyarnt tmogatja, gy csak annyit kell tennem,
hogy megnyomok egy gombot. Az NU NIT esetben a tesztgombot a RESHARPER
bvtmny biztostja.
2. Az eszkznek vilgos kpi jelzst kell adnia a sikerrl, illetve kudarcrl. Az
mindegy, hogy ezt egy grafikus zld svval vagy egy
"
Minden teszt teljesl
"
szveg konzolzenettel ri el. A lnyeg az, hogy gyorsan s egyrtelmen
meg tudd llaptani, hogy minden teszt sikeresen futott -e le. Ha ehhez egy
tbbsoros jelentst kell el olvasnod, vagy - ami mg rosszabb - kt fjl kime
nett kell sszehasonltanod, akkor ez a kvetelmny nem teljesl.
3. Az eszkznek vilgos kpi jelzst kell adnia az elrehaladsrL Amg meg
tudod llaptani, hogy minden rendben halad, s a tesztek nem akadtak meg
198 A FGGELK
vagy lltak-e le, addig nem szmt, hogy ezt egy grafikus folyamatsv vagy
pontok sorozata biztostja.
4. Az eszkznek meg kell akadlyoznia, hogy az egyes tesztesetek rintkezze
nek egymssal. A JUNIT ezt gy ri el, hogy minden tesztfggvnyhez j
pldnyt hoz ltre a tesztosztlybl, gy a tesztek nem kommuniklhatnak
egymssal pldnyvltozkon keresztl. Ms eszkzk vletlenszer sorrend
ben futtatjk a tesztfggvnyeket, gy azok nem tmaszkodhatnak a tesztek
sorrendjre. Nem szmt, hogy az eszkz milyen megoldst alkalmaz, a l
nyeg az, hogy a teszteket fggetlentse egymstl. Az egymstl fgg tesztek
olyan mly csapdt jelentenek, amelybe nem tancsos beleesni.
5. Az eszkznek gyerekjtkk kell tennie a tesztek megrst. A JUNIT ezt gy
ri el, hogy egy knyelmes API-t biztost a megerst lltsokhoz (assertion),
valamint visszatekintst (reflection) s Java-jellemzket alkalmaz, hogy meg
klnbztesse a tesztfggvnyeket a norml fggvnyektL Ez egy j fejlesz
tkrnyezetnek lehetv teszi, hogy nmkden azonostsa valamennyi
tesztedet, ami szksgtelenn teszi a tesztcsomagok sszedrtozst, s meg
akadlyozza a hibs tesztlistk ltrehozst.
SSZETEV-TESZTEL ESZKZK
Ezek az eszkzk az sszetevk tesztelsre valk az API szintjn. A feladatuk az,
hogy meggyzdjenek rla, hogy egy sszetev viselkedst olyan nyelven hatroztk
meg, amelyet az zleti elemzk s a minsgellenrk is megrtenek. Valjban az az
idelis, ha az zleti elemzk s a minsgellenrk az eszkz segtsgvel meg tudjk
rni ezt a meghatrozst.
A
"
KSZ
"
FOGALMNAK MEGHATROZSA
Elssorban sszetev-tesztel eszkzk segtsgvel hatrozzuk meg, hogy mit is je
lent a
"
ksz
"
. Ha az zleti elemzk s a minsgellenrk kzsen dolgoznak ki egy
lerst, amely meghatrozza egy sszetev viselkedst, s ezt a lerst egy sikert vagy
kudarcot eredmnyez tesztcsomag formjban vgre lehet hajtani, akkor a ksz tel
jesen egyrtelm jelentst kap: azt, hogy
"
Minden teszt teljeslt
"
.
FITNESSE
A kedvenc sszetev-tesztel eszkzm a FITNESSE. A nagy rszt n rtam, s n
vagyok az els szm felhasznlja. Vagyis az n gyermekem.
A FIT N ESSE egy wiki alap rendszer, amelynek a segtsgvel az zleti elemzk s
a minsgellenrk nagyon egyszer, tblzatos formban rhatnak teszteket. Ezek
a tblzatok mind formjukat s cljukat tekintve hasonlak a Parnas-fle tblkhoz.
ESZKZK 199
A tesztek gyorsan sszellthatk csomagokk (suite), s a csomagok brmikor, igny
szerint lefuttathatk.
A FITNESSE Javban rdott, de brmilyen nyelv rendszert kpes tesztelni, mert
a httrben egy olyan tesztrendszerrel kommunikl, amely tetszleges nyelven meg
rhat. A tmogatott nyelvek kz tartozik a Java, a C#/.NET, a C, a C++, a Python,
a Ruby, a PHP, a Delphi s mg tbb ms nyelv.
A FITNESSE alapjt kt rendszer jelenti: a Fit s a Slim. A Fit szerzje Ward Cun
ningham; eredetileg ez a rendszer ihlette a FITNESSE-t s a hozz hasonl rendszere
ket. A Slim sokkal egyszerbb s hordozhat bb tesztrendszer, amely manapsg np
szer a FrTNESSE-felhasznlk krben.
EGYB ESZKZK
Az albbi eszkzk szintn sszetev-eszkzknek tekinthetk:
RobotFx: A RobotPx-et a Nokia mrnkei fejlesztik. A FIT N ESSE-hez hasonl
tblzatos formt hasznl, de nem wiki ala p, hanem
"
lapos
"
, az Excel vagy
egy msik hasonl programmal elksztett fjlokat hasznl. Az eszkzt
Python nyelven rtk, de megfelel hiadk segtsgvel brmilyen nyelv
rendszert kpes tesztelni.
Green Pepper: A Green Pepper kereskedelmi termk, amely sok hasonls
got mutat a FrTNESSE-szel, s a npszer Conf luence-wikin alapul.
Cucumber: A Cucumber egy sima szveges eszkz, amelyet egy Ruby-motor
hajt, de szmos klnbz platform tesztelsre kpes. A Cucumber nyelve
a npszer
"
ha adott-amikor-akkor
"
(Given/When/Then) stlust kveti.
JBehave: A JBehave hasonlt a Cucumberhez, s a Cucumber logikai szl
jnek tekinthet. Java nyelven rtk.
EGYTTMKDS-TESZTEL ESZKZK
Az sszetev-tesztel eszkzk sok egyttmkdsi teszthez is hasznlhatk, de nem
igazn alkalmasak azokhoz, amelyeket a felhasznli felleten keresztl kell vgre
hajtani. ltalban vve nem ajnlatos tl sok tesztet vgrehajtani a felhasznli fel
leten keresztl, mert a felhasznli fellet hrhedten vltozkony, ami az ilyen tesz
teket nagyon trkenny teszi.
Ezzel egytt vannak tesztek, amelyeket muszj a felhasznli felleten keresztl
vgrehajtani - elssorban a magt a felhasznli felletet vizsgl teszteket, de ezen
kvl bizonyos egymshoz illeszked teszteknek is vgig kell vizsglniuk az egsz
rendszert, belertve a felhasznli felletet is.
A felhasznli fellet tesztelshez n a Seleniumot s a Watirt hasznlom a leg
szvesebben.
200 A FGGELK
UML/MDA
A 90-es vek elejn nagyon remnykedtem benne, hogy a CASE-eszkzket gyrt
iparg radiklis vltozst hoz a szoftverfejlesztk munkamdszerben. Ahogy elre
tekintettem azokban a mmort napokban, azt lttam magam eltt, hogy mindenki
diagramok segtsgvel fog kdoini egy magasabb elvonatkoztatsi szinten, s a sz
veges kd a mlt kdbe vsz.
Istenem, mekkort tvedtem! Nem csak hogy nem vlt valra ez az lom, de min
den ebbe az irnyba mutat prblkozs sznalmas kudarcba fulladt. Vannak ugyan
eszkzk s rendszerek a piacon, amelyekben megvan a lehetsg, de egyszeren kp
telenek igazn valra vltani az lmot, s gy tnik, alig akad valaki, aki hajland
lenne hasznlni ket.
Az lom az volt, hogy a szoftverfejlesztk maguk mgtt hagyhatjk a szveges
kddal val pepecselst, s a diagramok magasabb szint nyelvn alkothatnak rend
szerekeL Az lom szerint lehet, hogy egyltaln nem lenne szksg programozkra.
A szaftvertervezk egsz rendszereket kszthetnnek UML-diagramokbl, amelye
ket nagy tuds, hideg, a mezei programozk szmra utlatos motorok alaktannak
vgrehajthat kdd. Ez volt a modelvezrelt architektra (MDA, Model Driven
Architecture) nagy lma.
Ennek a csods lomnak azonban sajnos van egy aprcska hibja. Az MDA azt
felttelezi, hogy a problma a kdban rejlik. Csakhogy nem a kd a problma. Soha
nem is volt az. A problmt a rszletek jelentik.
A RSZLETEK
Mi, programozk, a rszletekkel foglalkozunk. Ez a munknk. Rendszerek viselke
dst hatrozzuk meg a legaprbb rszletekbe menen. Ehhez trtnetesen szveges
nyelveket ( kdot) hasznlunk, mert a szveges nyelvek rendkvl knyelmesek (ve
gyk pldul az angolt).
Mifle rszletekre kell gyelnnk?
Tudod, mi a klnbsg a \n s a \r karakter kztt? Az els, a \n, soremelst ( line
feed) jelent. A msodik, a \r, kocsivisszt (carriage return). De mi az a kocsi (carriage)?
A 60-as vekben s a 70-es vek elejn a szmtgpek egyik szokvnyos kimeneti
eszkze a telexgp volt. A legszlesebb krben az ASR-33-ast2 hasznltk Ez a ksz
lk egy nyomtatfejbl llt, amely msodpercenknt tz karaktert tudott kinyomtatni.
A nyomtatfejet egy apr henger alkotta, amelyen a dombor karakterek sorakoztak.
A henger gy fordult el s emelkedett meg, hogy a megfelel karakter kerljn szembe
a paprral, majd egy apr kalapcs hozzttte a hengert a paprhoz. A henger s
2 http://en.wikipedia.org/wiki/ASR-33_Teletype
ESZKZK 201
a papr kztt egy tintval titatott szalag futott, gy a kalapcs egy karakter form
jban tintt vitt t a paprra.
A nyomtatfej egy kocsin lt. A kocsi minden karakter kinyomtatsakor egy hely
lyel jobbra csszott, magval cipel ve a nyomtatfejet. Amikor a kocsi elrt a 72 karak
terbl ll sor vgre, kifejezett utastst kellett neki adni a kocsivissza karakterekkel
(\r= O x OD), hogy lljon vissza a sor elejre, klnben a nyomtatfej a tovbbi ka
raktereket is a 72. oszlopba rta, ami gy ronda fekete ngyszgg vltozott.
Ez termszetesen nem volt elg. A kocsi visszalltsa nem grdtette tovbb a pa
prt a kvetkez sorba. Ha visszalltottad a kocsit, de nem adtad ki a soremels pa
rancst (\n = O x OA), akkor az eszkz az elz sor tetejre nyomtatta az jat.
AzASR-33 telexgp esetben teht a sorvgi parancs a
"
\r\n
"
volt. gyelni kellett
a helyes parancsra, mert a kocsinak egytized msodpercnl tovbb tarthatott, amg
visszallt a sor elejre, gy ha azt az utastst adtad ki, hogy
"
\n\r
"
, akkor a kvetkez
karakter j esllyel a kocsi mozgsa kzben nyomdott a paprra, egy elmosdott ka
raktert eredmnyezve a sor kzepn. Ezrt aztn a sorvgi utastst a biztonsg ked
vrt gyakran egy-kt trlkarakterreP (rubout) prnztuk ki (O x FF).
Ahogy a 70-es vekben a telexgpek lassan kikaptak a hasznlatbl, a UNIX-hoz
hasonl opercis rendszerek a
"
sor vge
"
utastst egyszeren
"
\n
"
-re rvidtettk.
Ms opercis rendszerek - pldul a DOS - ugyanakkor megtartottk a hagyom
nyos
"
\r\n
"
parancsot.
Mikor tallkoztl utoljra olyan szvegfjlokkal, amelyek nem a
"
megfelel
"
sor
vge parancsot adtk ki? n legalbb vente egyszer belefutok egy ilyenbe. Kt azonos
tartalm forrsfjl nem egyezik, s ms-ms ellenrzsszeget eredmnyez, mert
mskpp jellik a sor vgt. A szvegszerkesztk nem tudjk helyesen, a szavak vgn
megtrni a sorokat, vagy ketts szkzket szrnak be a szvegbe, mert a sorvgek
"
helytelenek
"
. Az res sorokra nem szmt prograrak sszeomlanak, mert a
"
\r\n
"
utastst kt sornak rtelmezik. Egyes prograrak felismerik a
"
\r\n
"
parancsot, de
a
"
\n\r
"
-t nem. s mg folytathatnm.
Ezt rtem rszletek alatt. Prbld csak kdba nteni a sorvgek tisztzsra szol
gl szrny logikt UML-ben!
NINCS REMNY, NINCS VLTOZS
Az MDA-mozgalom azzal a remnnyel kecsegtetett, hogy a rszletek jelents rszt
kikszblhetjk, ha kd helyett diagramokat hasznlunk. Ez eleddig hi brndnak
3 A trlkaraktereknek nagy hasznt vettk a lyukszalagok szerkesztsekor. A szably az volt, hogy
a trlkaraktereket figyelmen kvl kell hagyni. A kd juk, a O x FF, azt jelentette, hogy a szalag
adott sorban minden pontot ki kell lyukasztani. Ebbl kvetkezen tlyukasztssal brmely karak
tert trlkarakterr lehetett alaktani. Ha teht hibt kvettl el a programod bersakor, csak egy
"visszt
"
kellett nyomnod a lyukaszts utn, majd "trlst'' (rubout), s folytathattad a gpelst.
202 A FGGELK
bizonyult. Kiderlt, hogy egyszeren nincs annyi fls rszlet a kd ba gyazva, amit
kpekkel ki lehetne kszblni. St mi tbb, maguk a kpek is tartalmaznak esetleges
rszleteket. A kpeknek sajt nyelvtanuk, mondattanuk, szablyaik s megktseik
vannak, gy aztn a rszleteket illet klnbsgek vgeredmnyben elhanyagolhatak.
Az MDA remnysugara az volt, hogy a diagramok magasabb elvonatkoztatsi
szinten mkdhetnek a kdnl, ugyangy, ahogy a Java magasabb szint az assemb
lernL Ez is tvedsnek bizonyult. Az elvontsg szintjben jelentkez klnbsg a leg
jobb esetben is csak aprcska.
Vgezetl, tegyk fel, hogy egy nap valaki tnyleg feltall egy valban hasznos di
agramnyelvet. A diagramokat azonban nem szoftverptszek, hanem programozk
fogjk megrajzolni. Csupn annyi trtnik, hogy a diagramok vlnak az j kdd.
Programozkra ugyangy szksg lesz, hogy megrajzolk a kdot, mert a kd vgs
soron a rszletekrl szl, a rszletek pedig a programozkra tartoznak.
SSZEFOGLALS
Ma mr lnyegesen tbb s hatkonyabb szaftverfejleszt eszkz ll rendelkezsre,
mint amikor programozni kezdtem. Az n jelenlegi eszkztramban csak egy apr
tredke tallhat meg a teljes knlatnak A forrskd-kezelshez a g i t-et, a prob
lmakvetshez a Trackert, a folyamatos beptshez a Jenkinst, IDE-knt az IntelliJ-t,
a tesztelshez az XUnit-ot, az sszetev-tesztelshez pedig a FITNESSE-t hasznlom.
A szmtgpem egy Macbook Pro, 2,8 GHz-es Intel Core i7 processzorral, 17 h
velykes matt kpernyvel, 8 GB memrival, 512 GB-os SSD-meghajtval, s kt ki
egszt manitorraL
TRGYMUTAT
20 ra 39
A
acceptance test 128
agilis programozs 93
alkot energia 82, 142
alkudozs 48
alumniumfrccsnt gp 168
alvs 81, 141
ant release 96
ASR-33 201
automatizls 119
automatizlt egysgteszt 95
automatizlt
minsgellenrzs 36
automatizlt tesztek 116
llapottmenet-diagram 40
llsinterj 178
llrtekezlet 138
ramlsi zna 79
ramlat 79
teresztkpessgi teszt 132
tlagos sebessg 175
B
Basic 94
btorsg 97
becsls 113, 147, 149, 150
becslsi hibk 157
bejelentkeztets 191
belertett
ktelezettsgvllals 151
bemenet 142
bemutat 139
biciklizs 142
bizonyossg 96, 149
bizonytalansg 151, 153
bizonytalansgi elv 113
bocsnatkrs 35
Boehm 155
204
bogrvadszat 127
Brtnk s srknyok 140
boundary case 120, 128
Bowling Game 41
branching 193
B-terv 87, 88
buffer 83
build 103
c
cl 138
cldtum 87
cerebeHum 171
check in 191
check out 192
Chicago Laser Systems 165
CI 125
ciklusid 94
Clear Communications 160
component test 130
continuous
integration 125, 129
Conway 105
corner case 120, 128
CPPUTest 198
Cucumber 89, 120, 131, 200
cuke4duke 120
cvs 192
Cs
csapat 174
csapatjtkos 51, 91
csapattagok idelis szma 174
cserkszek szablya 37
D
debugger 83
derlt tesztesetek 120, 128
DFD40
diagramok 201
Digi-Camp I 178
diploma 178
ddzs 105
dokumentci 97
dntsi tbla 40
Dungeons & Dragons 140
dzsiu-dzsicu 107
E
Eclipse 196
ECP-18 180
ED-402 112
edzterem 105
egyetem 178
egyetrts 156
egyetlen felelssgi
kr elve 124
egyidej frissts 84
egyidej mdosts 192
egymstl fgg tesztek 199
egysgteszt 95, 129
egysgtesztek 36, 123, 130
egysgtesztel eszkzk 198
egyttmkds 91, 165
egyttmkdsi tesztek 131
egyttmkds-tesztel eszk-
zk 200
elektronikus recepcis 65
elfogadsi teszt 129
elfogadsi tesztek 89, 115, 119,
120, 123, 128
elkerls 143
elktelezettsg hinynak
felismerse 68
ellenttes szerepek 48
elrehalads 198
eloszls 150
elosztott forrskd-kezel
rendszerek 193
elsbbsg-megfordts 145
elvrsok 70
elvek feladsa 63
elvek megrzse 162
Emacs 195
emberek 167
TRGYMUTAT
ER 65 formagyakorlat 105 harmadik fl 57
erbeoszts 86 forrskd-kezels 191 hromvaricis analzis 152
erforrsok 176 friss diploms hromvaricis becsls 157
eszkzk 191 informatikus 177 hatreset 120, 128
exploratory testing 128 frissts 192 hatrid 87
extrm programozs 93 fggetlen telepthetsg 148 hatridk 161
fgggy-vezrelt
hazafel 86
fejleszts 104
HDD 104
fuvarosok 45
helyes felpts 98
jszakai rutin 33
fuvarosok szakszervezete 82
hinyos teljests 88
letjtk 105 hibaarny-cskkens 96
rs 175
G
hiba-befecskendezsi
rtekezlet 136 arny 96
s-kapu 178
Game of Life 105
hibarzkenysg 76
gpels 76
hibk 35
git 193, 194
hibakeress 82, 85, 167
F
Gdrk szablya 144
hibakeressre
GOF40
fordtott id 85
fradtsg 77, 86
gombost 192
hibaszzalk 35
fegyelem 72
gondterhelt kd 78
HLT 181
fegyelmezett
Gorilla Mart 56
hs 62
ktelezettsgvllals 71
gorombasg 81
huszonkettedik hatvny 103
fejlesztkrnyezet 195 GOTO 95
fejlesztkrnyezetek 19 5
grafikus fellet 131
fejleszt szerepe 121
grafikus felletek 124
felelssg 32, 34
grafikus felleten keresztli
fl ember 174
tesztels 125
IBM System/7 168
felpts 37, 98
Green Pepper 200
IDE 195
felhasznli fellet
GUI 131
idbeoszts 135
tesztelse 200
GUI-tesztek 125
iddobozols 142
feltr teszt 128
GUI-tesztel krnyezet 131
igen 65,71
fellet 124
igen ra 55
Fit 200
Gy
inasok 185
FitNesse 36, 89, 103, 120, integration test 131
131, 199
gyakorls 41, 101
IntelliJ 196
f low 79
gyakorlatok 41
iPhone 56
fg 194
gyakorl orvos 183
izomfkusz 141
fokozatos bepts 40
gyakorlprogram 102
izzadsgbl felhalmozott
fkuszmanna 140
gyakornokok 185
tke 160
folyamatbra 40
gyakornokoskods 183
folyamatos bepts 125, 129,
197
H
folyamatos mdostgats 38
ri vlsg 81
folyamatsv 199 hajltgats 38
fontossgi sorrend 176 hajnali hromkor rt kd 77
J
fordtsi id 103 Hammock-Driven
fordtsi-tesztdsi ciklus 104 Development 104 JBehave 131, 200
fordulsi id 103 hangposta 65, 66 Jenkins 197
fordulpont 144 happy path 120, 128 JUnit 198
TRGYMUTAT 205
K
Kanban 40
kapkods 87, 163
kr 34
karrier 39
kata 41, 105
Kent Beck 94
kereszthivatkozs-elllt 166
kss 87
ksi pontosts 120
ksi tisztzatlansg 114
ksz 88, 199
ksz fogalma 116
kszsgfejleszt
gyakorlatok 101
kezd programozk 91
kziknyv 97
kzi tesztels 119
kigs 39
kijelentkeztets 192
kikapcsols 86
kimenet 142
kisagy 171
kivtelek 120
kocsi 202
kocsivissza 201
kclelgaztats 193
kdols 75
kdolk ddzsja 105
kdpldk 97
kd-jrahasznosts 58
koffein 141
kommunikci 118, 163
konszenzus 155
knyrtelen jratervezs 37
korai pontosts 113
koreogrfiateszt 131
krkrs tmeneti tr 83
korltok 73
krnyezeti ktrtelmsg 114
ktelezettsgvllals 67, 149,
161
ktelezettsgvllals nyelve 74
kvetelmnyek lll
kvetelmnyler 128
kzs cl 48
kzs munka 42
kzs tulajdon 170
kzponti kdtr 194
206
kreativits 142
kreatv tlts 82
kreatv tudatalatti 86
kudarc 95
L
late ambiguity 114
ltkr 108
lellts 181
Lean 40
lefagys 82
lehetetlen kd 61
lehet legjobb megolds 48
le nem fordthatsg 95
Lighthouse 196
Lindstrom 156
logikai algebra 179
Logo 94
M
M365 112, 166
magabiztossg 76
magnleti problmk 79
magasabb szint tesztek 129
mgikus szmok 58
mgnesszalagok 189
magyarzat 50
majdnem biztos 96
manna 140
manulis feltr tesztek 132
manulis tesztels 119
maraton 86
MDA201
medikus 183
megdicsls 62
megfelel fellet 124
megkzeltsek 40
meglepets 163
megoldstartomny 42
megszakts 81
megszaktsvezrl 84
mm 186
merciless refactoring 37
mester 174
mesterek 185
mesterember 186
mesterfokozat 178
mestersgbeli tuds 186
metafizika 140
Midje 198
Mirt? 50
mi s k 43
mindennapi feladatok 41
minsgellenrzs 35, 128
mocsr 145
Model Driven
Architecture 201
modelvezrelt
architektra 201
mdszertanok 40
Motorola Pulsar 166
mkds 34, 36
munkaad43
munkaadk 167
munkafzis-rtkels 139
munkafzis-tervezsi
rtekezlet 138
munkamorl 38
Murphy trvnye 151
mtasztall59
N
nagy szmok trvnye 157
napirend 138
naplzenetek 83
negatv utas tesztesetek 120,
128
Ngyek Bandja 40
nem 47
nma rendezs 157
nemet mondani 47
nem teljesl
egysgteszt 95
nvleges becsls 153
New Age 140
nzeteltrs 139
ni programoz 91
NUnit 198
nylt forrs 108
nylt forrs eszkzk 191
nyoms 159
nyoms elkerlse 161
nyoms kezelse 162
nyomaszt gondok 78
nyomdagp 170
TRGYMUTAT
o Planning Poker 156 s
Pomodoro-technika 142
objektumkzpont
pontosts 113
sajt kd 169
tervezs 40
pont per ht 175
Santana 104
optimlis mkds 167
POSA40
sarokeset 120, 128
optimista becsls 152, 157
precizits 113
Serum 40,93
optimista zrols 192
premature precision 113
sebessg 104, 175
orvos 183 sebsz 159
oszlopdiagram 153
Prime Factars 41
segtsg 89, 90, 163
Outboard Mari ne Corp 168
prmtnyezk 41
segtsgnyjts 81
priorits 176
Selenium 89, 120, 131, 200
priority inversion 143
siker 95
prbafrs 128
sikertelen tesztek 125
nbizalom 76
prblkozs 53
Single Responsibility
nmkd egysgtesztek 36
prblkozni 71, 152
Principle 124
sszeszokott csapat 174
problmk szma 197
Slim 200
sszetev-elfogadsi
profzmus 32
SOLID 40
teszt 130
programhibk 128
sor 84
sszetevtesztek 130, 131
programozsi kata 106
sor vge 202
sszetev-tesztel
programozpr 82
SQINT 102
eszkzk 199
projektgazda 176
SRP 124
sszetev-tesztel
projektgazda
standard eltrs 153
krnyezet 131
dilemmja 176
Structured Analysis 40
sszpontosts 76
Structured Design 40
Q
struktra 37
p
strukturlt analzis 40
QA 35,127
strukturlt
plyzati felhvs 56
Quality Assurance 127
programozs 40
pnik 163
queue 84
strukturlt tervezs 40
pr 163
Subversion 192, 193
paradicsorak 142
SVN 192
prhuzamosan szerkesztett R
System/7 168
forrsfjlok 192
randori 107
prhuzamosan tbb
projekt 176
Rational127
Sz
prmunka 170
remny 87
pros
rendszertesztek 132
szabadid 39
programozs 40, 80, 170
repl ujjak 155
szakmai elmenetel 39
passzv-aggresszv
Resharper 198
szakmai elvek 63, 163
viselkeds 49, 54, 122
rszletek 201
szakmai etika 90
PDP-8 /I 102
rezidenskpzs 183
szakmai gyakorlat 183, 184
PERT 152
Rich Hickey 104
szakmai nzeteltrs 139
pesszimista
robot framework 120
szakmai tmutats 178
becsls 153, 157
RobotFx 200
szmll 83
pesszimista zrols 192 RobotFX89
szleskr Delphi 155, 156
Petri-hl 40 Rose 127
szemlyes kapcsolatok 167
ping-pong 107 rvidzrlat 81 szemthalom 144
piros-zld- rspec 198 szerkeszt 195
jratervezs 79, 103 ruhout202 szerkezeti diagram 40
Pivotal Tracker 196 rugalmassg 37 sztszrtsg 77
TRGYMUTAT 207
sznes gombostk 192
szoftver mkdse 34
szrs 153
T
tallgats 149, 150
tants 42
tanuls 38
tapasztaltabb
programozk 91
tartomny 42
tvozs 137
TDD 36, 85, 93, 129
tekejtk 41, 105
telexgp 201
teljestmnyteszt 132
Teradyne 32
terminl 83
tervezsi elvek 40
tervezsi mintk 40
tervezpker 156
Test Oriven Development 36,
85,93,129
testedzs 142
tesztautomatizlsi
piramis 129
tesztek 38
tesztek automatizlsa 36
tesztek fggetlentse 199
tesztek megvitatsa 122
tesztels 12 7
tesztdsi stratgia 127
tesztlefedettsg 36
tesztnyelv 89
tesztvezrelt fejleszts 36, 40,
85,93,95,98,129
tesztvezrelt fejleszts hrom
trvnye 95
tt 50
TextMate 196
The Bowling Game 105
The Rule ofHoles 144
tipikus projektkirs 56
tisztasg megrzse 162
tisztzatlansg 114
tbbletmunka 120
trlkarakter 202
tovbbkpzs 38
tulajdonjog 170
tlra 88
u
UML40, 201
unhappy path 120
unit test 129
update 192
utlag megrt tesztek 98
jratltds 141
tmutats 91
zleti szablyok 130
zletkeres 57
v
vakon gpels 76
vakvgny 144
vllalati forrskd-kezel
rendszer 191
valdi ktelezettsg
vllals 68
valdi lefedettsg 130
vals idej szmlz-
rendszer 45
valsznlsg-eloszls 150
valsznsgszmts 153
vltozatkvet rendszer 191
vrakozsi sor 84
velocity 175
vszcseng 70
veszekeds 78
vszhelyzet 162
vezetkteszt 131
Vi 195
viselkedsler 128
visszautasts 137
viszonyt becsls 156
vita 139
Vzess 40
vizsglprogram 83
w
wasa 107
Waterfall40
Watir 131, 200
webszolgltats 57
widebaud Delphi 155
wiki197
x
XP 40,93
z
zrols 192
zene 80
Zna 79
zuhany 86
Zs
zskutca 144