Taqbilx li tiżviluppa xi ħaġa li ma tifhimx

Taqbilx li tiżviluppa xi ħaġa li ma tifhimx

Mill-bidu tal-2018, ilni nżomm il-pożizzjoni ta’ żviluppatur ewlieni/boxxla/ċomb fit-tim - sejjaħlu kif trid, iżda l-punt huwa li jiena kompletament responsabbli għal wieħed mill-moduli u għall-iżviluppaturi kollha li jaħdmu fuqha. Din il-pożizzjoni tagħtini perspettiva ġdida dwar il-proċess ta’ żvilupp, peress li jien involut f’aktar proġetti u involut b’mod aktar attiv fit-teħid tad-deċiżjonijiet. Riċentement, grazzi għal dawn iż-żewġ affarijiet, f'daqqa waħda indunajt kemm il-miżura tal-fehim taffettwa l-kodiċi u l-applikazzjoni.

Il-punt li rrid nagħmel huwa li l-kwalità tal-kodiċi (u l-prodott finali) hija relatata mill-qrib ma 'kemm in-nies li qed jiddisinjaw u jiktbu l-kodiċi huma konxji ta' dak li qed jagħmlu.

Forsi qed taħseb bħalissa, “Grazzi, Kap. Naturalment, ikun sabiħ li tifhem dak li qed tikteb b'mod ġenerali. Inkella, tista’ wkoll tikri grupp ta’ xadini biex jolqtu ċwievet arbitrarji u jħallu hekk.” U għandek assolutament raġun. Għaldaqstant, nieħu bħala fatt li tirrealizza li huwa meħtieġ li jkollok idea ġenerali ta’ dak li qed tagħmel. Dan jista 'jissejjaħ il-livell żero ta' fehim, u mhux se janalizzawh fid-dettall. Aħna se nħarsu fid-dettall lejn dak li għandek bżonn tifhem eżatt u kif dan jaffettwa d-deċiżjonijiet li tieħu kuljum. Kieku kont naf dawn l-affarijiet minn qabel, kien iffrankatni ħafna ħin moħli u kodiċi dubjuż.

Għalkemm mhux se tara linja waħda ta 'kodiċi hawn taħt, xorta nemmen li dak kollu li jingħad hawn huwa ta' importanza kbira għall-kitba ta 'kodiċi espressiv ta' kwalità għolja.

L-ewwel livell ta' fehim: Għaliex ma jaħdimx?

L-iżviluppaturi normalment jilħqu dan il-livell kmieni ħafna fil-karriera tagħhom, xi kultant anke mingħajr ebda għajnuna minn ħaddieħor - għall-inqas fl-esperjenza tiegħi. Immaġina li rċevejt rapport tal-bug: xi funzjoni fl-applikazzjoni ma taħdimx, jeħtieġ li tiġi ffissata. Kif se tipproċedi?

L-iskema standard tidher bħal din:

  1. Sib il-biċċa kodiċi li qed tikkawża l-problema (kif tagħmel dan huwa suġġett separat, nkopriha fil-ktieb tiegħi dwar il-kodiċi wirt)
  2. Agħmel bidliet għal dan is-snippet
  3. Kun żgur li l-bug huwa ffissat u ma seħħew l-ebda żbalji ta 'rigressjoni

Issa ejja niffukaw fuq it-tieni punt - tagħmel bidliet fil-kodiċi. Hemm żewġ approċċi għal dan il-proċess. L-ewwel huwa li wieħed jidħol f'dak li qed jiġri eżattament fil-kodiċi attwali, jidentifika l-iżball u rranġah. It-tieni: jimxu b'sens - żid, ngħidu aħna, +1 għal dikjarazzjoni kondizzjonali jew loop, ara jekk il-funzjoni taħdimx fix-xenarju mixtieq, imbagħad ipprova xi ħaġa oħra, u l-bqija ad infinitum.

L-ewwel approċċ huwa korrett. Kif jispjega Steve McConnell fil-ktieb tiegħu Code Complete (li nirrakkomanda ħafna, anzi), kull darba li nbiddlu xi ħaġa fil-kodiċi, għandna nkunu nistgħu nbassru b'kunfidenza kif se taffettwa l-applikazzjoni. Qed nikkwota mill-memorja, imma jekk bugfix ma taħdimx kif stennejt, għandek tkun allarmat ħafna u għandek tiddubita l-pjan ta 'azzjoni kollu tiegħek.

Biex tqassar dak li ntqal, sabiex twettaq bug fix tajjeb li ma tiddegradax il-kwalità tal-kodiċi, trid tifhem kemm l-istruttura sħiħa tal-kodiċi kif ukoll is-sors tal-problema speċifika.

It-tieni livell ta' fehim: Għaliex jaħdem?

Dan il-livell jinftiehem b'mod ferm inqas intuwittiv minn dak preċedenti. Jien, filwaqt li għadni żviluppatur novizzi, tgħallimtha grazzi għall-imgħallem tiegħi, u sussegwentement spjegajt ripetutament l-essenza tal-kwistjoni lil dawk ġodda.

Din id-darba, ejja nimmaġinaw li rċevejt żewġ rapporti ta 'bugs f'daqqa: l-ewwel huwa dwar ix-xenarju A, it-tieni huwa dwar ix-xenarju B. Fiż-żewġ xenarji, jiġri xi ħaġa ħażina. Għaldaqstant, tindirizza l-ewwel bug l-ewwel. Bl-użu tal-prinċipji li żviluppajna għall-fehim tal-Livell XNUMX, inti tħaffer fil-fond fil-kodiċi rilevanti għall-problema, issib għaliex tikkawża li l-applikazzjoni ġġib ruħha kif tagħmel fix-Xenarju A, u tagħmel aġġustamenti raġonevoli li jipproduċu r-riżultat li trid. . Kollox sejjer mill-aqwa.

Imbagħad timxi fuq ix-xenarju B. Irrepeti x-xenarju f'tentattiv biex tipprovoka żball, imma—sorpriża! — issa kollox jaħdem kif suppost. Biex tikkonferma l-raden tiegħek, inneħħu l-bidliet li għamilt waqt li tkun qed taħdem fuq il-bug A, u l-bug B jiġi lura. Il-bugfix tiegħek solviet iż-żewġ problemi. Lucky!

Inti ma kontx fuq dan xejn. Inti ħriġt b'mod kif tirranġa l-iżball fix-xenarju A u m'għandek l-ebda idea għaliex ħadmet għax-xenarju B. F'dan l-istadju, huwa jitħajjar ħafna li wieħed jaħseb li ż-żewġ kompiti tlestew b'suċċess. Dan huwa pjuttost loġiku: il-punt kien li jiġu eliminati l-iżbalji, hux? Iżda x-xogħol għadu mhux lest: għad trid tara għaliex l-azzjonijiet tiegħek ikkoreġu l-iżball fix-xenarju B. Għaliex? Minħabba li jista 'jkun qed jaħdem fuq il-prinċipji żbaljati, u allura jkollok bżonn tfittex mod ieħor biex toħroġ. Hawn huma ftit eżempji ta 'każijiet bħal dawn:

  • Peress li s-soluzzjoni ma kinitx imfassla għall-iżball B, b'kont meħud tal-fatturi kollha, jista 'jkollok mingħajr ma taf il-funzjoni C miksura.
  • Huwa possibbli li jkun hemm ukoll it-tielet bug lurking x'imkien, relatat mal-istess funzjoni, u l-bugfix tiegħek jiddependi minnu għat-tħaddim korrett tas-sistema fix-xenarju B. Kollox jidher tajjeb issa, iżda xi darba dan it-tielet bug se jiġi nnutat u ffissat. Imbagħad fix-xenarju B l-iżball jerġa 'jseħħ, u huwa tajjeb jekk hemm biss.

Dan kollu jżid il-kaos mal-kodiċi u xi darba jaqa 'fuq rasek - x'aktarx fl-iktar mument inopportun. Int ser ikollok tiġbor ir-rieda tiegħek biex iġġiegħel lilek innifsek tqatta 'ħin tifhem għaliex kollox jidher li jaħdem, iżda worth it.

It-tielet livell ta' fehim: Għaliex jaħdem?

L-għarfien reċenti tiegħi jirrelata preċiżament ma 'dan il-livell, u probabbilment huwa dak li kien jagħtini l-aktar benefiċċju li kieku ġejt għal din l-idea qabel.

Biex tagħmilha aktar ċara, ejja nħarsu lejn eżempju: il-modulu tiegħek jeħtieġ li jsir kompatibbli mal-funzjoni X. M'intix partikolarment familjari mal-funzjoni X, iżda qallek li biex tkun kompatibbli magħha trid tuża l-qafas F. Oħrajn moduli li jintegraw ma 'X jaħdmu eżattament miegħu.

Il-kodiċi tiegħek ma kien f'kuntatt mal-qafas F xejn mill-ewwel jum tal-ħajja tiegħu, għalhekk l-implimentazzjoni tiegħu mhux se tkun daqshekk faċli. Dan ikollu konsegwenzi serji għal xi partijiet tal-modulu. Madankollu, titfa’ lilek innifsek fl-iżvilupp: tqatta’ ġimgħat tikteb kodiċi, tittestja, tħaddem verżjonijiet pilota, tikseb feedback, tiffissa żbalji ta’ rigressjoni, tiskopri kumplikazzjonijiet mhux previsti, ma tissodisfax l-iskadenzi miftiehma oriġinarjament, tikteb ftit aktar kodiċi, tittestja, tikseb komunikazzjoni ta’ feedback, tikkoreġi l-iżbalji tar-rigressjoni - dan kollu sabiex jiġi implimentat il-qafas F.

U f'xi punt tirrealizza f'daqqa - jew forsi tisma 'minn xi ħadd - li forsi l-qafas F ma jagħtik xejn kompatibilità mal-karatteristika X. Forsi dak il-ħin u l-isforz kollu tpoġġew kompletament ħażin għal dak.

Xi ħaġa simili ġrat darba waqt li naħdem fuq proġett li kont responsabbli għalih. Għaliex ġara dan? Għax kelli ftit li xejn nifhem x'kienet il-funzjoni X u kif kienet relatata mal-qafas F. X'għandi għamilt? Staqsi lill-persuna li tassenja l-kompitu ta 'żvilupp biex tispjega b'mod ċar kif il-kors ta' azzjoni maħsub iwassal għar-riżultat mixtieq, aktar milli sempliċement tirrepeti dak li sar għal moduli oħra jew tieħu kelmtu għaliha li dan huwa dak li l-karatteristika X trid tagħmel.

L-esperjenza ta’ dan il-proġett għallmitni nirrifjuta li nibda l-proċess ta’ żvilupp sakemm ikollna fehim ċar ta’ għaliex qed niġu mitluba nagħmlu ċerti affarijiet. Irrifjuta għal kollox. Meta tirċievi biċċa xogħol, l-ewwel impuls huwa li tieħu immedjatament fuqha sabiex ma taħlix il-ħin. Iżda l-politika ta '"iffriżar il-proġett sakemm nidħlu fid-dettalji kollha" tista' tnaqqas il-ħin moħli b'ordnijiet ta 'kobor.

Anke jekk jippruvaw jagħmlu pressjoni fuqek, biex iġiegħlek tibda taħdem, għalkemm ma tifhimx ir-raġuni għal dan, irreżisti. L-ewwel, ara għaliex qed tingħata tali kompitu, u ddeċiedi jekk din hijiex it-triq it-tajba għall-għan. Kelli nitgħallem dan kollu bl-iebsa – nittama li l-eżempju tiegħi jagħmel il-ħajja aktar faċli għal dawk li jaqraw dan.

Ir-raba' livell ta' fehim: ???

Dejjem hemm aktar x'titgħallem fl-ipprogrammar, u nemmen li scratchjt biss il-wiċċ tas-suġġett tal-fehim. Liema livelli oħra ta 'fehim skoprejt matul is-snin ta' ħidma bil-kodiċi? Liema deċiżjonijiet ħadt li kellhom impatt pożittiv fuq il-kwalità tal-kodiċi u l-applikazzjoni? Liema deċiżjonijiet irriżultaw li kienu ħżiena u għallmuk lezzjoni siewja? Aqsam l-esperjenza tiegħek fil-kummenti.

Sors: www.habr.com

Żid kumment