KopÅ” 2018. gada sÄkuma komandÄ ieÅemu vadoÅ”Ä/priekÅ”nieka/vadoÅ”Ä izstrÄdÄtÄja amatu - sauciet kÄ gribat, bet bÅ«tÄ«ba ir tÄda, ka esmu pilnÄ«bÄ atbildÄ«gs par vienu no moduļiem un par visiem izstrÄdÄtÄjiem, kas strÄdÄ uz tÄ. Å is amats man sniedz jaunu skatÄ«jumu uz attÄ«stÄ«bas procesu, jo esmu iesaistÄ«jies vairÄk projektos un aktÄ«vÄk iesaistos lÄmumu pieÅemÅ”anÄ. Nesen, pateicoties Ŕīm divÄm lietÄm, es pÄkÅ”Åi sapratu, cik ļoti izpratnes mÄrs ietekmÄ kodu un lietojumprogrammu.
Es vÄlos uzsvÄrt, ka koda (un galaprodukta) kvalitÄte ir cieÅ”i saistÄ«ta ar to, cik cilvÄki, kuri izstrÄdÄ un raksta kodu, ir informÄti par to, ko viÅi dara.
IespÄjams, jÅ«s Å”obrÄ«d domÄjat: "Paldies, Cap. Protams, bÅ«tu jauki saprast, ko tu vispÄr raksti. PretÄjÄ gadÄ«jumÄ jÅ«s varÄtu arÄ« nolÄ«gt pÄrtiÄ·u grupu, lai nospiestu patvaļīgus taustiÅus un atstÄtu to pie tÄ. Un jums ir pilnÄ«ga taisnÄ«ba. LÄ«dz ar to es uzskatu par paÅ”saprotamu, ka jÅ«s saprotat, ka ir nepiecieÅ”ams vispÄrÄjs priekÅ”stats par to, ko jÅ«s darÄt. To var saukt par izpratnes nulles lÄ«meni, un mÄs to sÄ«kÄk neanalizÄsim. MÄs detalizÄti aplÅ«kosim, kas tieÅ”i jums ir jÄsaprot un kÄ tas ietekmÄ jÅ«su ikdienas pieÅemtos lÄmumus. Ja es bÅ«tu zinÄjis Ŕīs lietas iepriekÅ”, tas man bÅ«tu aiztaupÄ«jis daudz laika un apÅ”aubÄma koda.
Lai gan zemÄk neredzÄsit nevienu koda rindiÅu, es joprojÄm uzskatu, ka visam Å”eit teiktajam ir liela nozÄ«me augstas kvalitÄtes, izteiksmÄ«ga koda rakstÄ«Å”anai.
Pirmais izpratnes lÄ«menis: kÄpÄc tas nedarbojas?
IzstrÄdÄtÄji parasti sasniedz Å”o lÄ«meni ļoti agri savÄ karjerÄ, dažreiz pat bez citu palÄ«dzÄ«bas ā vismaz manÄ pieredzÄ. IedomÄjieties, ka esat saÅÄmis kļūdu ziÅojumu: kÄda lietojumprogrammas funkcija nedarbojas, tÄ ir jÄlabo. KÄ jÅ«s turpinÄsiet?
Standarta shÄma izskatÄs Å”Ädi:
- Atrodiet koda daļu, kas rada problÄmu (kÄ to izdarÄ«t, ir atseviŔķa tÄma, es to aplÅ«koju savÄ grÄmatÄ par mantoto kodu)
- Veiciet izmaiÅas Å”ajÄ fragmentÄ
- PÄrliecinieties, vai kļūda ir novÄrsta un nav raduÅ”Äs regresijas kļūdas
Tagad pievÄrsÄ«simies otrajam punktam ā izmaiÅu veikÅ”anai kodÄ. Å im procesam ir divas pieejas. Pirmais ir iedziļinÄties tajÄ, kas tieÅ”i notiek paÅ”reizÄjÄ kodÄ, identificÄt kļūdu un novÄrst to. OtrkÄrt: pÄrvietojieties pÄc sajÅ«tas ā pievienojiet, teiksim, +1 nosacÄ«juma priekÅ”rakstam vai cilpai, pÄrbaudiet, vai funkcija darbojas vÄlamajÄ scenÄrijÄ, pÄc tam izmÄÄ£iniet kaut ko citu un tÄ tÄlÄk bezgalÄ«gi.
PirmÄ pieeja ir pareiza. KÄ StÄ«vs Makkonels skaidro savÄ grÄmatÄ Code Complete (kuru, starp citu, es ļoti iesaku), katru reizi, kad kaut ko mainÄm kodÄ, mums vajadzÄtu bÅ«t iespÄjai droÅ”i paredzÄt, kÄ tas ietekmÄs lietojumprogrammu. Es citÄju no atmiÅas, bet, ja kļūdu labojums nedarbojas tÄ, kÄ jÅ«s gaidÄ«jÄt, jums vajadzÄtu bÅ«t ļoti satrauktiem un apÅ”aubÄ«t visu savu rÄ«cÄ«bas plÄnu.
Apkopojot teikto, lai veiktu labu kļūdu labojumu, kas nepasliktinÄtu koda kvalitÄti, ir jÄsaprot gan visa koda struktÅ«ra, gan konkrÄtÄs problÄmas avots.
Otrais izpratnes lÄ«menis: kÄpÄc tas darbojas?
Å is lÄ«menis tiek uztverts daudz mazÄk intuitÄ«vi nekÄ iepriekÅ”Äjais. Es, vÄl bÅ«dams iesÄcÄjs izstrÄdÄtÄjs, to uzzinÄju, pateicoties savam priekÅ”niekam, un pÄc tam atkÄrtoti izskaidroju lietas bÅ«tÄ«bu jaunpienÄcÄjiem.
Å oreiz iedomÄsimies, ka saÅÄmÄt divus kļūdu ziÅojumus uzreiz: pirmais ir par scenÄriju A, otrais ir par scenÄriju B. Abos gadÄ«jumos notiek kaut kas nepareizs. TÄdÄjÄdi vispirms jÄnovÄrÅ” pirmÄ kļūda. Izmantojot principus, ko izstrÄdÄjÄm XNUMX. lÄ«meÅa izpratnei, jÅ«s iedziļinÄties ar problÄmu saistÄ«tajÄ kodÄ, noskaidrojiet, kÄpÄc tas liek lietojumprogrammai rÄ«koties tÄ, kÄ tas darbojas A scenÄrijÄ, un veiciet saprÄtÄ«gas korekcijas, kas nodroÅ”ina vÄlamo rezultÄtu. . Viss notiek lieliski.
PÄc tam jÅ«s pÄrejiet uz scenÄriju B. JÅ«s atkÄrtojat scenÄriju, mÄÄ£inot izraisÄ«t kļūdu, taÄu ā pÄrsteigums! ā tagad viss darbojas kÄ nÄkas. Lai apstiprinÄtu savu minÄjumu, jÅ«s atsaucat izmaiÅas, ko veicÄt, strÄdÄjot ar kļūdu A, un kļūda B tiek atgriezta. JÅ«su kļūdu labojums atrisinÄja abas problÄmas. Veiksmi!
JÅ«s ar to nemaz nerÄÄ·inÄjÄties. JÅ«s esat izdomÄjis veidu, kÄ labot kļūdu scenÄrijÄ A, un jums nav ne jausmas, kÄpÄc tas darbojÄs scenÄrijÄ B. Å ajÄ posmÄ ir ļoti vilinoÅ”i domÄt, ka abi uzdevumi ir veiksmÄ«gi izpildÄ«ti. Tas ir diezgan loÄ£iski: mÄrÄ·is bija novÄrst kļūdas, vai ne? Bet darbs vÄl nav pabeigts: jums joprojÄm ir jÄizdomÄ, kÄpÄc jÅ«su rÄ«cÄ«ba izlaboja kļūdu scenÄrijÄ B. KÄpÄc? Jo tas var darboties pÄc nepareiziem principiem, un tad jums bÅ«s jÄmeklÄ cita izeja. Å eit ir daži Å”Ädu gadÄ«jumu piemÄri:
- TÄ kÄ risinÄjums nebija pielÄgots kļūdai B, Åemot vÄrÄ visus faktorus, iespÄjams, jÅ«s neapzinÄti esat lauzis funkciju C.
- IespÄjams, ka kaut kur slÄpjas arÄ« treÅ”Ä kļūda, kas saistÄ«ta ar to paÅ”u funkciju, un jÅ«su kļūdas labojums ir atkarÄ«gs no tÄ pareizai sistÄmas darbÄ«bai scenÄrijÄ B. Tagad viss izskatÄs labi, bet kÄdu dienu Ŕī treÅ”Ä kļūda tiks pamanÄ«ta un izlabota. Tad B scenÄrijÄ kļūda atkÄrtosies, un tas ir labi, ja tikai tur.
Tas viss papildina kodu haosu un kÄdreiz uzkritÄ«s tev uz galvas ā visticamÄk, visnepiemÄrotÄkajÄ brÄ«dÄ«. Jums bÅ«s jÄpieliek gribasspÄks, lai piespiestu sevi pavadÄ«t laiku, lai saprastu, kÄpÄc Ŕķiet, ka viss darbojas, taÄu tas ir tÄ vÄrts.
TreÅ”ais izpratnes lÄ«menis: kÄpÄc tas darbojas?
Mans nesenais ieskats attiecas tieÅ”i uz Å”o lÄ«meni, un, iespÄjams, tas man bÅ«tu devis vislielÄko labumu, ja es bÅ«tu nonÄcis pie Ŕīs idejas agrÄk.
Lai padarÄ«tu to skaidrÄku, aplÅ«kosim piemÄru: jÅ«su modulis ir jÄpadara savietojams ar funkciju X. JÅ«s neesat Ä«paÅ”i pazÄ«stams ar funkciju X, taÄu jums teica, ka, lai tas bÅ«tu saderÄ«gs ar to, jums ir jÄizmanto F ietvars. moduļi, kas integrÄjas ar X, strÄdÄ tieÅ”i ar viÅu.
JÅ«su kods vispÄr nav kontaktÄjies ar F ietvaru kopÅ” tÄ pirmÄs dzÄ«ves dienas, tÄpÄc tÄ ievieÅ”ana nebÅ«s tik vienkÄrÅ”a. Tam bÅ«s nopietnas sekas dažÄm moduļa daļÄm. TomÄr jÅ«s iesaistÄties attÄ«stÄ«bÄ: pavadÄt nedÄļas, rakstot kodu, testÄjot, izlaižot izmÄÄ£inÄjuma versijas, saÅemat atsauksmes, labojat regresijas kļūdas, atklÄjat neparedzÄtas komplikÄcijas, neievÄrojat sÄkotnÄji norunÄtos termiÅus, rakstÄt vÄl kÄdu kodu, testÄjat, saÅemat atgriezenisko saziÅu, regresijas kļūdu laboÅ”ana - tas viss, lai ieviestu F ietvaru.
Un kÄdÄ brÄ«dÄ« jÅ«s pÄkÅ”Åi saprotat ā vai varbÅ«t dzirdat no kÄda ā, ka, iespÄjams, ietvars F vispÄr nenodroÅ”inÄs saderÄ«bu ar funkciju X. VarbÅ«t viss laiks un pÅ«les tam tika ieguldÄ«ts pilnÄ«gi nepareizi.
Kaut kas lÄ«dzÄ«gs reiz notika, strÄdÄjot pie projekta, par kuru biju atbildÄ«gs. KÄpÄc tas notika? Jo man bija maz izpratnes par to, kas ir funkcija X un kÄ tÄ ir saistÄ«ta ar ietvaru F. Kas man bija jÄdara? PalÅ«dziet personai, kas uzdod izstrÄdes uzdevumu, skaidri paskaidrot, kÄ iecerÄtÄ rÄ«cÄ«ba noved pie vÄlamÄ rezultÄta, nevis vienkÄrÅ”i atkÄrtot to, kas tika darÄ«ts citiem moduļiem, vai pieÅemt vÄrdu, ka tas ir tas, kas X funkcijai ir jÄdara.
Å Ä« projekta pieredze man iemÄcÄ«ja atteikties sÄkt izstrÄdes procesu, lÄ«dz mÄs skaidri sapratÄ«sim, kÄpÄc mums tiek prasÄ«ts darÄ«t noteiktas lietas. Atteikties tieÅ”i. SaÅemot uzdevumu, pirmais impulss ir nekavÄjoties to uzÅemties, lai netÄrÄtu laiku. TaÄu politika āiesaldÄt projektu, lÄ«dz mÄs iedziļinÄsimies visÄs detaļÄsā var par daudzÄm kÄrtÄm samazinÄt izŔķÄrdÄto laiku.
Pat ja viÅi mÄÄ£ina uz jums izdarÄ«t spiedienu, piespiest jÅ«s sÄkt darbu, lai gan jÅ«s nesaprotat tÄ pamatojumu, pretojieties. Vispirms noskaidrojiet, kÄpÄc jums tiek dots Å”Äds uzdevums, un izlemiet, vai tas ir pareizais ceļŔ uz mÄrÄ·i. Man tas viss bija jÄiemÄcÄs cietajÄ ceÄ¼Ä - es ceru, ka mans piemÄrs atvieglos dzÄ«vi tiem, kas to lasa.
Ceturtais izpratnes līmenis: ???
ProgrammÄÅ”anÄ vienmÄr ir ko mÄcÄ«ties, un es uzskatu, ka esmu tikai saskrÄpÄjis izpratni par tÄmu. KÄdus citus izpratnes lÄ«meÅus esat atklÄjis gadu gaitÄ, strÄdÄjot ar kodu? KÄdus lÄmumus jÅ«s pieÅÄmÄt, kas pozitÄ«vi ietekmÄja koda un lietojumprogrammas kvalitÄti? KÄdi lÄmumi izrÄdÄ«jÄs nepareizi un deva jums vÄrtÄ«gu mÄcÄ«bu? Dalieties pieredzÄ komentÄros.
Avots: www.habr.com