kritikuya
produkty, ne udovletvoryayushchie etomu interfejsu.
|to otlichitel'nyj primer tehnologii, rekomendovannoj v glave 6 dlya
dostizheniya edinoobraziya putem pooshchreniya drugih storon neposredstvenno
vklyuchat' v svoi produkty imeyushchijsya kod vmesto razrabotki novyh programm
soglasno imeyushchimsya specifikaciyam.
Sud'ba WIMP: ustarevanie. Nesmotrya na vse dostoinstva, po moemu mneniyu,
interfejs WIMP cherez pokolenie stanet dostoyaniem istorii. Ukazanie kursorom
ostanetsya sposobom zadaniya sushchestvitel'nyh pri upravlenii nashimi
komp'yuterami. Dlya vyrazheniya glagolov stanet ispol'zovat'sya rech'. Takie
instrumenty, kak Voice Navigator dlya Makov i Dragon dlya PC, uzhe
predostavlyayut takuyu vozmozhnost'.
Ne razrabatyvajte programm na vybros, kaskadnaya model' neverna!
V glave 11 daetsya radikal'nyj sovet: "planirujte vybrosit' pervuyu
programmu, vam vse ravno pridetsya eto sdelat'". Sejchas ya schitayu eto
oshibochnym - ne v silu chrezmernogo radikalizma, no v silu chrezmernoj
uproshchennosti.
Samoj bol'shoj oshibkoj etoj koncepcii yavlyaetsya kosvennoe prinyatie
klassicheskoj posledovatel'nosti - v vide kaskada - modeli sozdaniya
programmy. |ta model' proishodit ot struktury diagrammy Granta dlya
poetapnogo processa, kotoruyu chasto izobrazhayut, kak na risunke 19.1. V
klassicheskoj stat'e 1970 goda Vinton Rojs (Winton Royce) usovershenstvoval
posledovatel'nuyu model' putem:
- dobavleniya nekotoroj obratnoj svyazi s predshestvuyushchimi etapami;
- ogranicheniya obratnoj svyazi tol'ko neposredstvennymi
predshestvennikami, chtoby isklyuchit' vyzyvaemye imi izderzhki i zaderzhki v
vypolnenii grafika.
On predvoshitil "MCH-M", rekomendovav razrabotchikam "delat' rabotu
dvazhdy"8. Glava 11 - ne edinstvennaya, na kotoruyu povliyala kaskadnaya model'.
Ona prohodit cherez vsyu knigu, nachinaya s pravila planirovaniya v glave 2. |to
prakticheskoe pravilo otvodit 1/3 vremeni na planirovanie, 1/6 - na napisanie
programm, 1/4 - na testirovanie komponentov i 1/4 - na sistemnoe
testirovanie.
Ris. 19.1 Kaskadnaya model' sozdaniya programmy
Osnovnoe zabluzhdenie kaskadnoj modeli sostoit v predpolozheniyah, chto
proekt prohodit cherez ves' process odin raz, arhitektura horosha i prosta v
ispol'zovanii, proekt osushchestvleniya razumen, a oshibki v realizacii
ustranyayutsya po mere testirovaniya. Inymi slovami, kaskadnaya model' ishodit iz
togo, chto vse oshibki budut sosredotocheny v realizacii, a potomu ih
ustranenie proishodit ravnomerno vo vremya testirovaniya komponentov i
sistemy.
"Planirujte na vybros" dejstvitel'no rezko napadaet na eto zabluzhdenie.
Oshibka ne v diagnoze, a v lekarstve. Sejchas ya predpolozhil, chto pervuyu
sistemu mozhno otbrosit' ili pereproektirovat' ne vsyu celikom, a po chastyam.
Horosho, esli eto tak, no pri etom ne zatragivaetsya koren' problemy. V
kaskadnoj modeli sistemnoe testirovanie, a sledovatel'no i testirovanie
pol'zovatelem, otodvigaetsya v konec processa sozdaniya programmy. Poetomu
est' shans obnaruzhit' krajnie neudobstva dlya pol'zovatelya, ili nepriemlemye
tehnicheskie harakteristiki, ili opasnuyu uyazvimost' k oshibkam ili
zlonamerennym dejstviyam pol'zovatelya lish' v samom konce razrabotki. Izuchenie
specifikacij pri al'fa-testirovanii naceleno na rannee obnaruzhenie takih
oshibok, no nichto ne mozhet zamenit' neposredstvennyh pol'zovatelej.
Vtorym nedostatkom kaskadnoj modeli yavlyaetsya predpolozhenie, chto sistema
stroitsya srazu vsya celikom dlya testirovaniya s nachala do konca posle togo,
kak zaversheny vse proektnye razrabotki, bol'shaya chast' napisaniya programm i
znachitel'naya chast' testirovaniya komponentov.
K neschast'yu, kaskadnaya model', eto preobladavshee v 1975 godu
predstavlenie o programmnyh proektah, byla vklyuchena v DOD-STD-2167 -
specifikaciyu Ministerstva oborony dlya lyubogo voennogo programmnogo
obespecheniya. Po etoj prichine ona prosushchestvovala dolgoe vremya posle togo,
kak bol'shaya chast' dumayushchih praktikov osoznala ee neadekvatnost' i otkazalas'
ot nee. K schast'yu, v MO pozdnee ponyali istinu.9
Neobhodimo dvigat'sya protiv techeniya. Opyt i idei iz kazhdoj
raspolozhennoj nizhe po techeniyu chasti processa sozdaniya programmy, kak
energichnyj losos', dolzhny prygat' vverh po techeniyu, inogda srazu cherez
neskol'ko etapov, i vozdejstvovat' na deyatel'nost' naverhu.
Proektnye razrabotki pokazhut, chto nekotorye predusmotrennye
arhitekturoj vozmozhnosti uhudshayut tehnicheskie harakteristiki, i potomu
arhitektura dolzhna byt' pererabotana. Programmirovanie pri realizacii
vyyavit, chto nekotorye funkcii nepomerno uvelichivayut trebovaniya k pamyati,
poetomu nuzhno vnesti izmeneniya v arhitekturu i razrabotku.
Poetomu vpolne mozhet potrebovat'sya osushchestvit' neskol'ko iteracij cikla
arhitektura-razrabotka, prezhde chem nachat' kakuyu-libo programmnuyu realizaciyu.
Model' poshagovogo sozdaniya luchshe: posledovatel'noe utochnenie
Postroenie karkasa s nachala do konca. Garlan Millz (Harlan Mills),
rabotayushchij v sisteme s razdeleniem vremeni, davno uzhe rekomenduet stroit'
osnovnoj cikl oprosa sistemy real'nogo vremeni s vyzovami podprogramm
(zaglushkami) dlya vseh funkcij (ris. 19.2), no pustymi podprogrammami.
Otkompilirujte ego, protestirujte, i on budet idti cikl za ciklom, bukval'no
nichego ne delaya, no delaya eto bez oshibok.10
Ris. 19.2
Na sleduyushchem shage my naveshivaem modul' vvoda (vozmozhno, primitivnyj) i
modul' vyvoda. Voila! Rabotayushchaya sistema, delayushchaya nechto, vozmozhno,
neinteresnoe. Teper', funkciya za funkciej, my stroim i dobavlyaem moduli. Na
kazhdom shage my imeem rabotayushchuyu sistemu. Pri dostatochnom trudolyubii na
kazhdom shage my imeem otlazhennuyu, protestirovannuyu sistemu. (Po mere rosta
sistemy rastet i tyazhest' povtornogo testirovaniya vseh novyh modulej po vsem
prezhnim kontrol'nym primeram.)
Posle togo kak na primitivnom urovne kazhdaya funkciya rabotaet, my
uluchshaem ili perepisyvaem odin modul' za drugim, poshagovo narashchivaya sistemu.
Inogda dlya nadezhnosti my perepisyvaem ishodnyj dvizhushchij cikl, a vozmozhno, i
ego interfejsy s modulyami.
Poskol'ku v lyuboj moment vremeni u nas est' rabotayushchaya sistema:
- mozhno ochen' rano nachat' testirovanie pol'zovatelyami;
- mozhno prinyat' strategiyu razrabotki v sootvetstvii s byudzhetom,
polnost'yu zashchishchayushchuyu ot pererashoda vremeni ili sredstv (vozmozhno, za schet
sokrashcheniya funkcional'nosti).
V techenie 22 let ya prepodaval v laboratorii programmnoj inzhenerii
Universiteta shtata Severnaya Karolina, inogda vmeste s Devidom Parnasom. Na
etih zanyatiyah brigady, obychno sostoyavshie iz chetyreh chelovek, v techenie
odnogo semestra dolzhny byli postroit' nekotoruyu real'nuyu prikladnuyu
programmnuyu sistemu. Primerno poseredine etogo sroka ya stal prepodavat'
inkrementnuyu razrabotku. YA byl porazhen, kakoj vozbuzhdayushchij effekt na
moral'nyj duh gruppy okazyvaet pervaya kartinka na ekrane, pervaya rabotayushchaya
sistema.
Semejstva Parnasa. Devid Parnas byl glavnym vlastitelem dum v
programmotehnike v techenie vsego etogo 20-letnego perioda. Vsem izvestna ego
ideya skrytiya informacii. Menee izvestna ochen' vazhnaya ideya Parnasa o
proektirovanii programmnogo produkta kak semejstva vzaimosvyazannyh
produktov.11 On trebuet, chtoby proektirovshchik imel v vidu kak dal'nejshee
razvitie, tak i novye versii produkta i opredelyal ih funkcional'nye ili
mezhplatformennye razlichiya tak, chtoby stroit' derevo rodstvennyh produktov
(ris. 19.3).
Ris. 19.3
Fokus pri proektirovanii takogo dereva sostoit v tom, chtoby blizhe k
kornyu pomestit' te resheniya, izmenenie kotoryh naimenee veroyatno.
Takaya strategiya proektirovaniya povyshaet povtornuyu ispol'zuemost'
modulej. Eshche vazhnee, chto ee mozhno rasshirit', vklyuchaya ne tol'ko postavlyaemye
produkty, no i posledovatel'nye promezhutochnye versii, sozdannye po strategii
inkrementiruemyh sborok. V etom sluchae produkt razvivaetsya cherez
promezhutochnye stadii s minimumom vozvrata nazad.
Podhod Microsoft: "ezhevechernyaya sborka". Dzhejms Makkarti (James
McCarthy) opisal mne process, ispol'zovavshijsya im i drugimi v Microsoft. |to
poshagovoe narashchivanie, dovedennoe do logicheskogo konca. On pishet:
Sdelav pervuyu postavku, novye versii my postavlyaem s dopolnitel'nymi
funkciyami, po sravneniyu s sushchestvuyushchim rabotayushchim produktom. Pochemu dolzhen
byt' inym process pervonachal'noj sborki? S momenta dostizheniya nami pervoj
vehi (u pervoj postavki tri promezhutochnyh vehi) my kazhdyj vecher zanovo
sobiraem razrabatyvaemuyu sistemu (i progonyaem kontrol'nye primery). Cikl
sborki stanovitsya ritmom zhizni proekta. Kazhdyj vecher odna ili bolee brigad
programmistov, provodyashchih testirovanie, registriruyut moduli s novymi
funkciyami. Posle kazhdoj sborki u nas est' rabotayushchaya sistema. Esli sborka
okazyvaetsya neudachnoj, my ostanavlivaem ves' process, poka oshibka ne budet
najdena i ispravlena. V lyuboj moment vse v gruppe znayut polozhenie del.
|to dejstvitel'no tyazhelo. Trebuetsya vydelenie bol'shih resursov, no eto
upravlyaemyj process, proslezhivaemyj i ponyatnyj. On vyzyvaet u komandy
doverie k sebe. A doverie opredelyaet moral', emocional'noe sostoyanie.
Takoj process udivlyaet i dazhe shokiruet razrabotchikov v drugih
organizaciyah. Odin iz nih govorit: "YA vzyal sebe za pravilo delat' sborku
kazhduyu nedelyu, no ezhednevnaya sborka, ya dumayu, potrebuet slishkom mnogo
truda." I eto, vozmozhno, verno. Naprimer, v Bell Northern Research sobirayut
sistemu, sostoyashchuyu iz 12 millionov strok, raz v nedelyu.
Inkrementnaya sborka i bystroe maketirovanie. Poskol'ku inkrementnaya
razrabotka pozvolyaet rano nachat' testirovanie real'nymi pol'zovatelyami, v
chem ee otlichie ot bystrogo maketirovaniya? Mne kazhetsya, chto oni svyazany, no
razlichayutsya. Odnim mozhno pol'zovat'sya bez drugogo.
Harel daet poleznoe opredelenie maketa:
(versiya programmy, kotoraya) otrazhaet tol'ko proektnye resheniya, prinyatye
v processe podgotovki konceptual'noj modeli, a ne resheniya, vyzvannye
soobrazheniyami realizacii.12
Mozhno postroit' maket, kotoryj vovse ne yavlyaetsya chast'yu produkta,
razvivayushchegosya v napravlenii postavki. Naprimer, mozhno sozdat' maket
interfejsa, za kotorym stoit ne real'no rabotayushchaya programma, a lish'
konechnyj avtomat, zastavlyayushchij ego imitirovat' prohozhdenie sostoyanij. Mozhno
dazhe maketirovat' i testirovat' interfejsy metodom volshebnika izumrudnogo
goroda, kogda spryatannyj chelovek imitiruet otklik sistemy. Takoe
maketirovanie mozhet byt' ves'ma poleznym dlya bystrogo polucheniya obratnoj
svyazi ot pol'zovatelya, no ono nahoditsya sovershenno v storone ot testirovaniya
produkta, kotoryj gotovitsya k postavke.
Analogichno, razrabotchiki mogut poprobovat' postroit' vertikal'nyj srez
produkta, v kotorom polnost'yu realizovan ves'ma ogranichennyj nabor funkcij,
chtoby zaranee prolit' svet na te mesta, gde mogut tait'sya opasnosti dlya
proizvoditel'nosti produkta. V chem sostoit razlichie mezhdu sborkoj na pervoj
vehe v procedure Microsoft i bystrym maketom? V funkciyah. Produkt s pervoj
vehi mozhet imet' takuyu ogranichennuyu funkcional'nost', chto ni dlya kogo ne
budet predstavlyat' interesa. Gotovnost' produkta k postavke opredelyaetsya
zavershennost'yu v predostavlenii poleznogo nabora funkcij i svoim kachestvom,
uverennost'yu v nadezhnoj rabote.
Parnas byl prav, a ya - net v otnoshenii sokrytiya informacii
V glave 7 ya protivopostavlyayu dve tochki zreniya na to, v kakoj mere
kazhdyj uchastnik komandy mozhet imet' pravo ili pooshchryat'sya k znaniyu proektov i
tekstov programm, sozdannyh kollegami. Vo vremya proekta Operating System/360
my reshili, chto vse programmisty dolzhny videt' ves' material, t.e. u kazhdogo
programmista byla rabochaya tetrad' proekta, kotoraya k koncu naschityvala svyshe
10000 stranic. Harlan Millz ubeditel'no dokazyval, chto "programmirovanie
dolzhno byt' otkrytym processom", chto predostavlenie vsej raboty na obshchee
obozrenie sposobstvuet kontrolyu kachestva kak blagodarya davleniyu so storony
kolleg, zastavlyayushchemu rabotat' horosho, tak i blagodarya tomu, chto kollegi
dejstvitel'no nahodyat promahi i oshibki.
|tot vzglyad rezko protivorechit mneniyu Devida Parnasa o tom, chto
programmnye moduli dolzhny byt' inkapsulirovany, s horosho opredelennymi
interfejsami, a vnutrennost' takih modulej dolzhna byt' chastnoj
sobstvennost'yu programmista, nevidimoj snaruzhi. Programmisty effektivnee
vsego rabotayut, buduchi ograzhdeny ot vnutrennostej chuzhih modulej.13
V glave 7 ya zaklejmil ideyu Parnasa kak "recept katastrofy". Parnas byl
prav, a ya oshibalsya. Segodnya ya ubezhden, chto ogranichenie informacii, chasto
osushchestvlyaemoe teper' metodami ob容ktnogo programmirovaniya, yavlyaetsya
edinstvennym sposobom podnyat' uroven' programmnyh razrabotok.
Ispol'zuya drugie metody, mozhno dejstvitel'no popast' v bedu. Soglasno
metodike Millza programmisty mogut poluchit' podrobnosti semantiki
interfejsov, s kotorymi oni rabotayut, uznav, chto nahoditsya "po tu storonu".
Ukryvanie etoj semantiki mozhet byt' prichinoj sistemnyh oshibok. S drugoj
storony, metodika Parnasa sposobstvuet ustojchivosti pri vnesenii izmenenij i
bol'she podhodit k strategii proektirovaniya, predpolagayushchej izmeneniya v
budushchem.
V glave 16 utverzhdaetsya sleduyushchee:
- bol'shaya chast' rosta proizvoditel'nosti razrabotki programmnogo
obespecheniya obespechena ustraneniem vtorostepennyh trudnostej, takih kak
neudobnye yazyki programmirovaniya i medlennaya oborachivaemost' paketnoj
obrabotki;
- legkih reshenij v etom napravlenii prakticheski ne ostalos';
- radikal'nogo progressa mozhno dobit'sya, razreshiv sushchestvennye
slozhnosti modelirovaniya slozhnyh konceptual'nyh konstrukcij.
Samoe ochevidnoe na etom puti - priznat', chto programmy sostavlyayutsya iz
konceptual'nyh blokov, znachitel'no bolee krupnyh, chem otdel'nye operatory
yazykov vysokogo urovnya: podprogramm, ili modulej, ili klassov. Esli my
sumeem ogranichit' proektirovanie i postroenie programm zadachej soedineniya
vmeste i parametrizacii takih blokov iz ranee sozdannyh naborov, to
radikal'no povysim konceptual'nyj uroven' i izbavimsya ot ogromnogo ob容ma
rabot i shirokih vozmozhnostej dlya oshibok, sushchestvuyushchih na urovne otdel'nyh
operatorov.
Dannoe Parnasom opredelenie modulej s sokrytiem informacii bylo pervym
otkrytym shagom v etoj kriticheski vazhnoj programme issledovanij i idejnym
provozvestnikom ob容ktno-orientirovannogo programmirovaniya. On opredelil
modul' kak programmnyj ob容kt s sobstvennoj model'yu dannyh i sobstvennym
naborom operacij. Dostup k ego dannym mozhet byt' osushchestvlen tol'ko cherez
imeyushchiesya v nem operacii. Sleduyushchij shag yavilsya vkladom neskol'kih
issledovatelej: razvitie modulej Parnasa v abstraktnyj tip dannyh, iz
kotorogo mozhno proizvodit' mnogo ob容ktov. Abstraktnyj tip dannyh
obespechivaet edinoobraznyj sposob predstavleniya i zadaniya interfejsov
modulej, a takzhe disciplinu dostupa, kotoruyu legko osushchestvlyat'.
Tretij shag, ob容ktno-orientirovannoe programmirovanie, vvodit vazhnoe
ponyatie nasledovaniya, pri kotorom klassy (tipy dannyh) po umolchaniyu imeyut
atributy svoih predkov v ierarhii klassov.14 To, chto my rasschityvaem
poluchit' ot ob容ktno- orientirovannogo programmirovaniya, proishodit, v
sushchnosti, ot pervogo shaga, inkapsulyacii modulej, plyus ideya zaranee
podgotovlennyh bibliotek modulej ili klassov, sproektirovannyh i
protestirovannyh s cel'yu povtornogo ispol'zovaniya. Mnogie predpochli
proignorirovat' tot fakt, chto takie moduli ne prosto programmy, a
programmnye produkty v tom smysle, kotoryj raz座asnen v glave 1. Naprasno
rasschityvat' na uspeshnoe povtornoe ispol'zovanie modulej, ne oplachivaya
nachal'nye izderzhki na razrabotku kachestvennyh programmnyh modulej:
obobshchennyh, nadezhnyh, protestirovannyh i dokumentirovannyh. Ob容ktno-
orientirovannoe programmirovanie i povtornoe ispol'zovanie obsuzhdalis' v
glavah 16 i 17.
Naskol'ko mifichen cheloveko-mesyac? Model' i dannye Bema
V techenie ryada let byli vypolneny mnogochislennye kolichestvennye
issledovaniya proizvoditel'nosti truda programmistov i vliyayushchih na nee
faktorov, osobenno sootnoshenij mezhdu obespechennost'yu personalom i grafikom
rabot.
Naibolee obstoyatel'noe issledovanie sdelano Barri Bemom (Barry Boehm)
na osnovanii primerno 63 proektov, v osnovnom v aerokosmicheskoj oblasti, iz
nih okolo 25 - v TRW. Ego rabota "|konomika razrabotki programmnogo
obespecheniya" soderzhit ne tol'ko rezul'taty, no i ryad poleznyh modelej zatrat
s narastayushchej slozhnost'yu. Hotya nesomnenno, chto primenyaemye v modelyah
koefficienty razlichny dlya obychnyh kosmicheskih programm i dlya programm,
sozdavaemyh v aerokosmicheskoj oblasti po pravitel'stvennym standartam, vse
zhe ego modeli podkreplyayutsya ogromnym kolichestvom dannyh. YA dumayu, chto kniga
budet poleznym klassicheskim trudom i cherez pokolenie.
Poluchennye im rezul'taty uverenno podkreplyayut soderzhashcheesya v MCH-M
utverzhdenie o tom, chto sootnoshenie mezhdu chislennost'yu zanyatyh i vremenem
vypolneniya proekta daleko ne linejnoe, chto cheloveko-mesyac dejstvitel'no
yavlyaetsya mificheskoj meroj proizvoditel'nosti. V chastnosti, on schitaet:15
- Sushchestvuet optimal'noe, s tochki zreniya zatrat, vremya vypolneniya
grafika dlya pervoj postavki: T = 2,5 (CHM)1/3. To est' optimal'noe vremya v
mesyacah izmenyaetsya kak kubicheskij koren' predpolagaemogo ob容ma rabot v
cheloveko- mesyacah - formula, poluchennaya iz ocenki razmera i drugih faktorov
v ego modeli. Sledstviem yavlyaetsya krivaya, dayushchaya optimal'nuyu chislennost'
zanyatyh.
- Krivaya stoimosti medlenno rastet, esli zaplanirovannyj grafik dlinnee
optimal'nogo. Rabota zanimaet vse otvedennoe dlya nee vremya.
- Krivaya stoimosti rezko rastet, esli zaplanirovannyj grafik koroche
optimal'nogo.
- Prakticheski ni odin proekt nevozmozhno zavershit' bystree, chem za .
raschetnogo optimal'nogo grafika vne zavisimosti ot kolichestva zanyatyh v nem!
|tot primechatel'nyj rezul'tat daet menedzheru programmnogo proekta solidnoe
podkreplenie, kogda vysshee rukovodstvo trebuet prinyatiya nevozmozhnogo
grafika.
Naskol'ko veren zakon Bruksa? Byli dazhe provedeny tshchatel'nye
issledovaniya zakona Bruksa (namerenno uproshchennogo), soglasno kotoromu
vydelenie dopolnitel'nyh lyudej dlya otstayushchego grafika proekta lish'
zaderzhivaet ego vypolnenie. Luchshe vsego eto sdelano Abdel'-Hamidom
(Abdel-Hamid) i Madnikom (Madnick) v chestolyubivoj i cennoj knige "Dinamika
programmnogo proekta: integrirovannyj podhod".16 V knige razrabotana
kolichestvennaya model' dinamiki proekta. Glava o zakone Bruksa bolee podrobno
vnikaet v to, chto proishodit pri razlichnyh dopushcheniyah otnositel'no togo,
kogo dobavlyayut, i kogda. CHtoby issledovat' eto, avtory razvivayut sobstvennuyu
tshchatel'nuyu model' programmnogo proekta srednego razmera, predpolagaya, chto u
vnov' dobavlyaemyh lyudej est' krivaya obucheniya, i uchityvaya dopolnitel'nye
izderzhki na obshchenie i obuchenie. Oni prihodyat k vyvodu, chto "dobavlenie novyh
lyudej k zapazdyvayushchemu proektu vsegda privodit k ego udorozhaniyu, no ne
vsegda k bolee pozdnemu zaversheniyu" (kursiv avtorov). V chastnosti,
uvelichenie chislennosti rabotnikov v nachale proekta gorazdo bezopasnee, chem v
konce, poskol'ku dobavlenie novyh lyudej vsegda vyzyvaet otricatel'nyj
effekt, dlya kompensacii kotorogo trebuyutsya nedeli.
SHtucke (Stutzke) predlagaet bolee prostuyu model' dlya provedeniya
analogichnyh issledovanij, i s tem zhe rezul'tatom.17 On provodit podrobnyj
analiz processa i izderzhek, svyazannyh s privlecheniem novyh rabotnikov, yavnym
obrazom uchityvaya otvlechenie nastavnikov ot neposredstvennoj raboty nad
proektom. On proveryal svoyu model' na real'nom proekte, v kotorom chislennost'
rabotnikom byla udvoena, blagodarya chemu udalos' ulozhit'sya v pervonachal'nyj
grafik, nesmotrya na otstavanie v seredine. On rassmatrivaet al'ternativy
dobavleniyu novyh rabotnikov, osobenno sverhurochnuyu rabotu. Naibol'shuyu
cennost' predstavlyayut ego mnogochislennye prakticheskie sovety o tom, kak
privlekat' novyh rabotnikov, obuchat' ih, obespechivat' instrumentariem i
t.d., chtoby minimizirovat' otricatel'nyj effekt uvelicheniya personala.
Osobenno dostojno vnimaniya ego zamechanie, chto dopolnitel'no privlekaemye na
pozdnih stadiyah proekta rabotniki dolzhny byt' igrokami komandy, stremyashchimisya
vojti v igru i vpisat'sya v process, a ne pytat'sya izmenit' ili
usovershenstvovat' sam process!
SHtucke schitaet, chto dopolnitel'naya tyazhest' obmena informaciej v krupnom
proekte imeet vtoroj poryadok malosti, i ne vklyuchaet ee v svoyu model'. Ne
vpolne yasno, uchityvayut li ee Abdel'-Hamid i Madnik, i esli da, to kak. Ni v
odnoj iz modelej ne uchityvaetsya to obstoyatel'stvo, chto rabota dolzhna byt'
pereraspredelena - process, kotoryj dlya menya chasto okazyvalsya netrivial'nym.
"Krajne uproshchennaya" formulirovka zakona Bruksa stanovitsya bolee
poleznoj, buduchi dopolnena etimi tshchatel'no sdelannymi nadlezhashchimi
ogovorkami. Podytozhivaya, ya prodolzhayu priderzhivat'sya ishodnogo utverzhdeniya
kak priblizheniya k istine nulevogo poryadka, prakticheskogo pravila,
preduprezhdayushchego menedzherov o nerazumnosti instinktivnoj popytki vytyanut'
zapazdyvayushchij proekt.
Kadry reshayut vse (ili pochti vse)
Nekotorye chitateli udivlyayutsya, chto bol'shaya chast' rassuzhdenij MCH-M
posvyashchena administrativnym storonam programmnoj inzhenerii, a ne
mnogochislennym tehnicheskim problemam. Takoj perekos chastichno vyzvan toj
rol'yu, kotoruyu ya igral v IBM Operating System/360 (teper' MVS/370). Esli
smotret' glubzhe, eto proishodit ot ubezhdeniya, chto kachestvo lyudej, zanyatyh v
proekte, ih organizaciya i administrirovanie imeyut gorazdo bol'shee znachenie
dlya uspeha, chem instrumenty, kotorymi oni pol'zuyutsya, ili primenyaemye imi
tehnicheskie resheniya.
Posleduyushchie issledovaniya podkrepili moyu uverennost'. Model' COCOMO Bema
priznaet, chto kachestvo komandy yavlyaetsya vazhnejshim faktorom ee uspeha,
prakticheski vchetvero bolee vazhnym, chem sleduyushchij za nim po znachimosti.
Bol'shinstvo nauchnyh issledovanij po programmnoj inzhenerii sosredotochilos' na
instrumentah. YA lyublyu horoshij instrument i zhazhdu ego. Tem ne menee otradno
videt' prodolzhenie issledovatel'skih programm v otnoshenii zaboty o lyudyah, ih
rosta i podderzhki, a takzhe razvitiya upravleniya razrabotkoj programmnogo
obespecheniya.
CHelovecheskij faktor. Krupnym dostizheniem poslednih let stala kniga
Demarko (DeMarco) i Listera (Lister) "CHelovecheskij faktor: produktivnye
proekty i programmy", izdannaya v 1987 godu. V osnove ee lezhit polozhenie o
tom, chto "glavnye problemy v nashej rabote po prirode svoej ne stol'ko
tehnologicheskie, skol'ko sociologicheskie". Ona izobiluet takimi zhemchuzhinami,
kak "zadacha menedzhera ne zastavit' lyudej rabotat', a sdelat' tak, chtoby oni
mogli rabotat'". V nej govoritsya o takih prozaicheskih veshchah, kak pomeshchenie,
mebel', sovmestnoe pitanie komandy. Demarko i Lister privodyat real'nye
dannye iz svoego "Programmirovaniya voennyh igr", kotorye pokazyvayut
porazitel'nuyu korrelyaciyu mezhdu proizvoditel'nost'yu programmistov iz odnoj i
toj zhe organizacii, a takzhe mezhdu harakteristikami rabochih mest i urovnem
produktivnosti i nalichiya oshibok.
V pomeshcheniyah naibolee produktivnyh programmistov tishe, oni bolee
lichnye, luchshe zashchishcheny protiv neproshenogo vtorzheniya, i oni prosto bol'she...
Ponimaete li vy, chto pokoj, prostranstvo i uedinennost' sposobstvuyut luchshej
rabote vashih tepereshnih rabotnikov ili (s drugoj storony) sposobstvuet
privlecheniyu i sohraneniyu luchshih rabotnikov?18
YA iskrenne rekomenduyu etu knigu vsem moim chitatelyam.
Peredacha proektov. Demarko i Lister udelyayut bol'shoe vnimanie spayannosti
komandy, neulovimomu, no vazhnomu kachestvu. YA dumayu, chto neponimanie
administraciej spayannosti sluzhit prichinoj toj gotovnosti, s kotoroj, kak ya
nablyudal, v kompaniyah, raspolozhennyh na neskol'kih ploshchadkah, proekty
peredayutsya iz odnoj laboratorii v druguyu.
V svoej praktike ya nablyudal, vozmozhno, s poldyuzhiny peredach proekta, i
ni odna iz nih ne byla uspeshnoj. Mozhno s uspehom peredavat' zadaniya. No vo
vseh sluchayah popytki peredat' proekt novaya komanda fakticheski nachinala
snachala, nesmotrya na nalichie horoshej dokumentacii, nekotorogo prodvizheniya v
proekte i nekotoryh lyudej iz peredayushchej komandy. YA dumayu, chto razrushenie
spayannosti prezhnej komandy privodit k vykidyshu proekta, nahodyashchegosya v
embrional'nom sostoyanii, i osushchestvleniyu ego s nachal'noj tochki.
Sila otkazat'sya ot vlasti
Esli soglasit'sya, chto, kak ya neodnokratno dokazyval na protyazhenii etoj
knigi, tvorchestvo ishodit ot lichnostej, a ne organizacionnyh struktur i
processov, togda glavnaya zadacha menedzhera programmnogo proekta - sozdat'
organizacionnuyu strukturu i rabochij process, sposobstvuyushchij tvorchestvu i
iniciative, a ne podavlyayushchie ih. K schast'yu, eta problema prisushcha ne tol'ko
programmnym organizaciyam, i nad nej rabotali mnogie bol'shie umy. E. F.
SHumaher (E. F. Schumacher) v klassicheskoj rabote "Maloe prekrasno: ekonomika
radi lyudej" predlagaet teoriyu organizacii predpriyatij, maksimiziruyushchuyu
tvorcheskuyu aktivnost' i radost' rabotnikov. V kachestve pervogo principa on
vydvigaet "princip vspomogatel'noj funkcii" iz encikliki Quadragesimo Anno
papy Piya XI:
Peredacha bol'shemu i vyshestoyashchemu soobshchestvu togo, chto mogut delat'
men'shie i nizhestoyashchie organizacii yavlyaetsya nespravedlivost'yu i v to zhe vremya
ser'eznym zlom i narusheniem pravil'nogo poryadka. Ibo vsyakaya obshchestvennaya
deyatel'nost' po suti svoej dolzhna predostavlyat' pomoshch' chlenam social'noj
gruppy, a ne razrushat' i pogloshchat' ih... Tem, kto upravlyaet, sleduet byt'
uverennymi, chto chem luchshe sredi razlichnyh soobshchestv sohranyaetsya
differencirovannyj poryadok v soblyudenii principa vtorostepennoj funkcii, tem
krepche budet vlast' i effektivnost' v obshchestve, tem bolee schastlivym i
procvetayushchim gosudarstvo.19
SHumaher privodit raz座asnenie:
Princip vtorostepennoj funkcii uchit nas, chto vlast' i effektivnost'
centra uvelichatsya, esli budut tshchatel'no ohranyat'sya svoboda i otvetstvennost'
bolee nizkih formirovanij, a v itoge organizaciya v celom budet "bolee
schastlivoj i procvetayushchej".
Kak mozhno dobit'sya takoj organizacii? ... Bol'shaya organizaciya dolzhna
sostoyat' iz mnozhestva poluavtonomnyh edinic, kotorye mozhno nazvat'
kvazi-firmami. Kazhdaya iz nih dolzhna obladat' znachitel'noj svobodoj, chtoby
predostavit' nailuchshie vozmozhnosti dlya tvorchestva i predpriimchivosti...
Kazhdaya iz kvazi- firm dolzhna imet' svoj uchet pribylej i poter', a takzhe
balansovyj otchet.20
K chislu naibolee zamechatel'nyh dostizhenij programmnoj inzhenerii
prinadlezhat pervye etapy prakticheskogo osushchestvleniya takih organizacionnyh
idej. Prezhde vsego, mikrokomp'yuternaya revolyuciya sozdala novuyu programmnuyu
industriyu s sotnyami vnov' voznikshih firm, kotorye iznachal'no maly i otmecheny
entuziazmom, svobodoj i tvorchestvom. Sejchas industriya menyaetsya po mere
pogloshcheniya melkih firm krupnymi. Posmotrim, pojmut li krupnye firmy vazhnost'
sohraneniya tvorcheskoj aktivnosti melkih, pogloshchaemyh imi.
Eshche bolee primechatel'no, chto vysshee rukovodstvo ryada krupnyh firm
predprinyalo mery po peredache vlasti vniz otdel'nym komandam, rabotayushchim nad
programmnymi proektami, chto sblizhaet ih s kvazi-firmami SHumahera po
strukture i otvetstvennosti. Rezul'taty vyzvali udivlenie i udovletvorenie.
Dzhim Makkarti iz Microsoft opisyval mne svoj opyt emansipacii komand:
U kazhdoj brigady (30-40 chelovek) est' svoj nabor razrabatyvaemyh
ob容ktov, svoj grafik i dazhe svoi pravila razrabotki, realizacii i postavki.
V brigade est' specialisty v chetyreh ili pyati oblastyah, v tom chisle
realizacii, testirovanii i dokumentirovanii. Brigada sama ulazhivaet
raznoglasiya po pustyakam, nachal'nik ne vmeshivaetsya. Ne boyus' pereocenit'
vazhnost' peremeshcheniya vlasti, kogda brigada samostoyatel'no neset
otvetstvennost' za svoi dostizheniya.
|rl Uiler (Earl Wheeler), byvshij rukovoditel' programmnyh razrabotok
IBM, podelilsya so mnoj svoim opytom delegirovaniya vniz polnomochij, byvshih v
techenie dolgogo vremeni sosredotochennymi u administracii upravleniya IBM.
Klyuchevym poryvom poslednih let stalo delegirovanie polnomochij vniz. |to
bylo chudom! Uluchshilis' kachestvo, produktivnost', moral'nyj duh. U nas
nebol'shie brigady bez centralizovannogo upravleniya. Brigady sami opredelyayut
pravila proizvodstvennogo processa, no oni ispytyvayut davlenie so storony
rynka. I eto davlenie zastavlyaet ih samih iskat' sposoby resheniya problem.
Obshchenie s otdel'nymi chlenami brigad pokazyvaet, konechno, i
udovletvorenie ot peredachi polnomochij i svobody, a takzhe bolee sderzhannuyu
ocenku togo, v kakoj mere kontrol' dejstvitel'no oslablen. Tem ne menee,
dostignutaya stepen' peredachi polnomochij yavlyaet shag v pravil'nom napravlenii.
Poluchaemye vygoda tochno te, kotorye predskazyvalis' Piem XI: v rezul'tate
delegirovaniya polnomochij centr usilivaet svoyu real'nuyu vlast', a organizaciya
v celom stanovitsya bolee schastlivoj i procvetayushchej.
Kakoj samyj bol'shoj syurpriz? Milliony komp'yuterov
Vse komp'yuternye guru, s kotorymi ya razgovarival, priznayut, chto dlya
nih byli neozhidannost'yu mikrokomp'yuternaya revolyuciya i ee porozhdenie -
proizvodstvo korobochnyh programmnyh produktov. Vne somneniya, eto samoe
znachitel'noe sobytie za dva desyatiletiya posle vyhoda MCH-M. Ono imeet
mnogochislennye posledstviya dlya programmnoj inzhenerii.
Mikrokomp'yuternaya revolyuciya izmenila harakter ispol'zovaniya
komp'yuterov. SHumaher sformuliroval problemu bolee 20 let nazad:
CHego my dejstvitel'no hotim ot uchenyh i tehnologov? YA otvechu tak: nam
nuzhny metody i oborudovanie, kotorye:
- dostatochno deshevy, chtoby byt' dostupnymi prakticheski kazhdomu;
- prigodny dlya nebol'shih prilozhenij;
- sootvetstvuyut potrebnosti cheloveka v tvorcheskoj deyatel'nosti.21
|to kak raz te zamechatel'nye svojstva, kotorye mikrokomp'yuternaya
revolyuciya dala komp'yuternoj promyshlennosti i ee potrebitelyam, kotorymi
teper' stala shirokaya publika. Srednij amerikanec mozhet segodnya pozvolit'
sebe ne tol'ko sobstvennyj komp'yuter, no i nabor programmnyh sredstv, dlya
pokupki kotorogo 20 let nazad potrebovalos' by korolevskoe zhalovan'e. Kazhduyu
iz celej, postavlennyh SHumaherom, stoit rassmotret' otdel'no. Predstavlyaet
takzhe interes, v kakoj mere oni dostignuty - osobenno poslednyaya. V odnoj
oblasti za drugoj obychnym lyudyam i professionalam stanovyatsya dostupny vse
novye sredstva samovyrazheniya.
Otchasti, razvitie v drugih oblastyah proishodit tak zhe, kak v sozdanii
programm - blagodarya ustraneniyu pobochnyh trudnostej. Pobochnye ogranicheniya na
rukopisi nakladyvalis' dlitel'nost'yu i stoimost'yu perepechatyvaniya dlya
vneseniya ispravlenij. Rabotu ob容mom v 300 stranic inogda prihodilos'
perepechatyvat' kazhdye tri ili shest' mesyacev, a v pereryve chirkat' v
rukopisi. Trudno bylo ocenit' vliyanie vnesennyh izmenenij na obshchij hod mysli
i ritm slov. Sejchas chudesnym obrazom rukopisi stali postoyanno menyayushchimisya.22
Analogichnuyu izmenchivost' komp'yuter pridal mnogim drugim materialam:
kartinam hudozhnikov, planam postroek, chertezham mehanizmov, muzykal'nym
sochineniyam, fotografiyam, kinofil'mam, slajdovym prezentaciyam, mul'timedijnym
rabotam i dazhe elektronnym tablicam. V kazhdom sluchae pri ruchnom sposobe
izgotovleniya dlya togo, chtoby uvidet' izmeneniya v kontekste, trebovalos'
kopirovanie bol'shih neizmennyh chastej. Teper', nezavisimo ot materiala, my
mozhem pol'zovat'sya takimi zhe vygodami, kakie rabota v rezhime razdeleniya
vremeni prinesla v programmirovanie: vozmozhnost' redaktirovaniya i mgnovennoj
ocenki rezul'tata bez poteri hoda mysli.
Tvorcheskie vozmozhnosti usililis' takzhe blagodarya novym gibkim
vspomogatel'nym instrumentam. Odin primer - sochinenie prozy, pri kotorom my
pol'zuemsya proverkoj orfografii, grammatiki, stilisticheskimi podskazkami,
sistemami bibliografii i zamechatel'noj vozmozhnost'yu odnovremenno videt'
stranicy v okonchatel'no otformatirovannom vide. My eshche ne ocenili znacheniya
mgnovennogo dostupa k enciklopediyam i bezgranichnym resursam vsemirnoj
pautiny dlya ispol'zovaniya pisatelem improvizirovannogo poiska.
Samoe glavnoe, obretennaya izmenchivost' materiala uproshchaet izuchenie
mnogih v korne razlichnyh vozmozhnostej, kogda tvorcheskaya rabota tol'ko
obretaet formu. Vot drugoj primer, kogda poryadok velichiny v kolichestvennom
parametre - v dannom sluchae, vremeni, neobhodimom dlya vneseniya izmenenij, -
proizvodit kachestvennyj skachok v podhode k zadache.
Instrumenty dlya chercheniya pozvolyayut proektirovshchikam zdanij za chas
tvorcheskoj raboty issledovat' gorazdo bol'she variantov. Podklyuchenie
komp'yuterov k sintezatoram i programmy, pozvolyayushchie avtomaticheski zapisyvat'
ili proigryvat' noty, znachitel'no oblegchayut fiksaciyu brenchaniya po klavisham.
Cifrovaya obrabotka fotografij, kak v Adobe Photoshop, pozvolyaet v techenie
schitannyh minut provesti eksperimenty, dlya kotoryh potrebovalis' chasy raboty
v fotolaboratorii. |lektronnye tablicy pozvolyayut legko issledovat' desyatki
al'ternativnyh scenariev tipa "chto, esli".
Nakonec, blagodarya vezdesushchesti personal'nyh komp'yuterov sozdaetsya
sovershenno novyj material. Giperteksty, predlozhennye Vannevarom Bushem v 1945
godu, osushchestvimy tol'ko s pomoshch'yu komp'yuterov.23 Mul'timedijnye prezentacii
i opyty byli slozhnejshimi zadachami - slishkom mnogo hlopot - do togo, kak
stalo vozmozhnym provodit' ih s pomoshch'yu komp'yuterov i sootvetstvuyushchego
bogatogo programmnogo obespecheniya. Sistemy virtual'noj real'nosti, poka eshche
dorogie i ne shiroko rasprostranennye, v budushchem stanut takimi i sozdadut
novyj material dlya tvorchestva.
Mikrokomp'yuternaya revolyuciya izmenila harakter razrabotki programmnogo
obespecheniya. Tehnologii razrabotki programmnogo obespecheniya 1970-h sami
izmenilis' v rezul'tate mikrokomp'yuternoj revolyucii i vyzvavshih ee
tehnicheskih dostizhenij. Ustranena znachitel'naya chast' vtorostepennyh
slozhnostej tehnologij razrabotki programmnogo obespecheniya. Bystrye
personal'nye komp'yutery stali obychnym instrumentom razrabotchika, i vremya
oborachivaemosti stalo pochti ustarevshim ponyatiem. Segodnyashnij personal'nyj
komp'yuter bystree ne tol'ko superkomp'yutera 60-go goda, no i Unix-stancii
1985-go. |to znachit, chto kompilyaciya bystro osushchestvlyaetsya dazhe na skromnyh
po moshchnosti mashinah, a blagodarya bol'shomu ob容mu pamyati otpali zaderzhki pri
komponovke s ispol'zovaniem diskov. Bol'shaya pamyat' pozvolyaet takzhe hranit' v
pamyati tablicy simvolicheskih imen vmeste s ob容ktnym kodom, v rezul'tate
chego stanovitsya obychnoj vysokourovnevaya otladka bez perekompilyacii.
Za poslednie 20 let my pochti pokonchili s ispol'zovaniem razdeleniya
vremeni kak metodologiej razrabotki programmnogo obespecheniya. V 1975 godu
razdelenie vremeni tol'ko-tol'ko vytesnilo paketnuyu obrabotku v kachestve
naibolee rasprostranennoj tehnologii. Set' ispol'zovalas' dlya togo, chtoby
dat' razrabotchiku programmnogo obespecheniya dostup kak k obshchim fajlam, tak i
k bol'shim vychislitel'nym moshchnostyam dlya kompilyacii, komponovki i
testirovaniya. Segodnya vychislitel'nuyu moshchnost' obespechivaet personal'naya
rabochaya stanciya, a set' ispol'zuetsya v osnovnom dlya obespecheniya sovmestnogo
dostupa k fajlam brigady, razrabatyvayushchej produkt. Klient-servernye sistemy
menyayut i uproshchayut tehnologiyu obshchego dostupa dlya zagruzki, sborki i
vypolneniya kontrol'nyh primerov.
Shodnyj progress proizoshel s pol'zovatel'skimi interfejsami. Interfejs
WIMP obespechivaet gorazdo bol'shie udobstva pri redaktirovanii tekstov
programm i tekstov na estestvennom yazyke. |kran razmerom 24 stroki na 72
kolonki smenilsya polnostranichnym ili dazhe dvuhstranichnym ekranom, poetomu
programmisty mogut videt' izmeneniya, kotorye oni delayut, v znachitel'no bolee
shirokom kontekste.
Celaya novaya programmnaya otrasl' - korobochnye pakety
Ryadom s klassicheskoj industriej programmnyh produktov shiroko razvilas'
eshche odna. Prodazhi programmnyh produktov chislyatsya sotnyami tysyach i dazhe
millionami. Celye moshchnye pakety mozhno priobresti po cene men'shej, chem
stoimost' oplaty odnogo rabochego dnya programmista. |ti dve otrasli vo mnogom
razlichny i sushchestvuyut parallel'no.
Klassicheskaya programmnaya industriya. V 1975 godu programmnaya industriya
imela neskol'ko otdel'nyh i do nekotoroj stepeni razlichnyh sostavnyh chastej,
sushchestvuyushchih po sej den':
- Proizvoditeli komp'yuterov, postavlyayushchie takzhe operacionnye sistemy,
kompilyatory i utility dlya svoih produktov.
- Pol'zovateli prilozhenij, naprimer, v informacionno-upravlyayushchih
sistemah, bankah, strahovyh kompaniyah, pravitel'stvennyh uchrezhdeniyah,
sozdayushchie pakety programm dlya sobstvennogo upotrebleniya.
- Razrabotchiki zakaznyh programm, rabotayushchie po kontraktu s
pol'zovatelem. Mnogie iz etih podryadchikov specializiruyutsya na prilozheniyah
dlya voennoj sfery, gde trebovaniya, standarty i marketingovye procedury nosyat
specificheskij harakter.
- Razrabotchiki kommercheskih paketov, v to vremya razrabatyvavshie, v
osnovnom, bol'shie prilozheniya dlya specificheskih rynkov, takie kak pakety
statisticheskogo analiza i avtomaticheskogo proektirovaniya.
Tom Demarko otmechaet fragmentaciyu klassicheskoj industrii razrabotki
programmnogo obespecheniya, osobenno v chasti pol'zovatelej prilozhenij:
YA ne ozhidal, chto eta oblast' raspadetsya na otdel'nye nishi. Priemy
raboty v bol'shej stepeni opredelyayutsya nishej, chem ispol'zovaniem obshchih
metodov analiza sistem, yazykov programmirovaniya i tehnologij testirovaniya.
Ada byl poslednim iz yazykov obshchego naznacheniya, i on stal yazykov nishi.
V nishe obychnyh kommercheskih prilozhenij znachitel'nyj vklad sdelan
yazykami chetvertogo pokoleniya (4GL). Bem pishet, chto "naibolee udachnye iz 4GL
yavilis' rezul'tatom napisaniya kakoj-libo chasti oblasti prilozhenij na yazyke
opcij i parametrov". Naibolee shiroko rasprostranennymi iz etih 4GL yavlyayutsya
generatory prilozhenij i kombinirovannye pakety baz dannyh i svyazi s yazykami
zaprosov.
Miry operacionnyh sistem ob容dinilis'. V 1975 godu bylo izobili
operacionnyh sistem - u kazhdogo proizvoditelya komp'yuterov byla, po krajnej
mere, odna patentovannaya operacionnaya sistema dlya kazhdoj proizvodstvennoj
serii, a chasto i dve. Naskol'ko izmenilos' polozhenie segodnya! Lozungom dnya
stali otkrytye sistemy, i ostalos' lish' pyat' glavnyh operacionnyh sred, dlya
kotoryh sozdayutsya pakety prilozhenij (v hronologicheskom poryadke):
- IBM MVS i VM
- DEC VMS
- Unix v tom ili inom variante
- IBM PC, bud' to DOS, OS/2 ili Windows
- Apple Macintosh.
Industriya korobochnyh produktov. |konomicheskie zakony dlya razrabotchikov
v etoj otrasli sovershenno otlichny ot teh, kotorye dejstvuyut v klassicheskoj
industrii: stoimost' razrabotki nuzhno delit' na bol'shoe kolichestvo
ekzemplyarov, rashody na upakovku i marketing vysoki. V klassicheskoj
industrii pri vnutrifirmennoj razrabotke grafik rabot i nabor funkcij mogli
byt' izmeneny, v otlichie ot stoimosti razrabotki. Na otkrytom rynke zhestkoj
konkurencii sroki i funkcional'nost' polnost'yu dominiruyut nad zatratami na
razrabotku.
Kak i sledovalo ozhidat', stol' razlichnye ekonomicheskie trebovaniya
porodili ves'ma razlichayushchiesya kul'tury programmirovaniya. V klassicheskoj
industrii lidiruyushchee polozhenie zanyali krupnye firmy s ustanovivshimisya
stilyami upravleniya i kul'turoj raboty. V korobochnoj industrii, naprotiv,
voznikli sotni nachinayushchih firm, nichem ne svyazannyh i sosredotochennyh na
konechnoj celi, a ne na processe. V takoj atmosfere talant otdel'nogo
programmista vsegda cenitsya znachitel'no vyshe, i sushchestvuet podspud