Qebûl nekin ku tiştek ku hûn fêm nakin pêşve bibin

Qebûl nekin ku tiştek ku hûn fêm nakin pêşve bibin

Ji destpêka sala 2018-an vir ve, ez di tîmê de pozîsyona pêşeng / serok / pêşdebirkerê pêşeng digirim - hûn jê re çi dixwazin jê re dibêjin, lê xal ev e ku ez bi tevahî ji yek ji modulan û ji bo hemî pêşdebirên ku dixebitin berpirsiyar im. li ser wê. Ev helwest li ser pêvajoya pêşkeftinê perspektîfek nû dide min, ji ber ku ez di pirtir projeyan de beşdar im û bi awayekî çalaktir beşdarî biryardanê dibim. Di van demên dawî de, bi saya van her du tiştan, min ji nişkê ve fêm kir ku pîvana têgihiştinê çiqas bandorê li kod û serîlêdanê dike.

Xala ku ez dixwazim bibêjim ev e ku qalîteya kodê (û hilbera paşîn) ji nêz ve girêdayî ye ku mirovên ku kodê sêwiran dikin û dinivîsin çiqas haydar in ku ew çi dikin.

Dibe ku hûn niha bifikirin, "Spas, Cap. Bê guman, dê xweş be ku hûn bi gelemperî çi dinivîsin fêm bikin. Wekî din, dibe ku hûn komek meymûnan jî bikin da ku bişkojkên keyfî lêxin û wê bihêlin." Û hûn bi rastî rast in. Li gorî vê yekê, ez ji xwe re qebûl dikim ku hûn fêhm dikin ku hebûna ramanek gelemperî ya ku hûn dikin hewce ne. Ji vê re tê gotin asta sifir a têgihiştinê, û em ê wê bi hûrgulî analîz nekin. Em ê bi hûrgulî li tiştê ku hûn hewce ne ku hûn fêm bikin û ew çawa bandorê li biryarên ku hûn her roj didin binihêrin. Ger min van tiştan di pêş de bizanibûya, wê ji min re gelek wext û koda gumanbar xilas bikira.

Her çend hûn ê yek rêzek kodê li jêr nebînin, ez dîsa jî bawer dikim ku her tiştê ku li vir hatî gotin ji bo nivîsandina koda kalîteya bilind, eşkere girîngiyek mezin e.

Asta yekem a têgihîştinê: Çima ew naxebite?

Pêşdebir bi gelemperî di kariyera xwe de pir zû digihîjin vê astê, carinan jî bêyî alîkariya kesên din - bi kêmanî di ezmûna min de. Bifikirin ku we raporek xeletiyê wergirtiye: hin fonksiyonên di serîlêdanê de naxebitin, pêdivî ye ku ew were rast kirin. Hûn ê çawa bimeşin?

Plana standard bi vî rengî xuya dike:

  1. Parçeya kodê ya ku dibe sedema pirsgirêkê bibînin (çawa meriv vê yekê mijarek cihê ye, ez di pirtûka xwe ya di derbarê koda mîrasê de vedigirim)
  2. Guhertinan li vê perçeyê bikin
  3. Piştrast bikin ku xeletî hatî rast kirin û xeletiyên paşveçûnê çênebûne

Naha em bala xwe bidin ser xala duyemîn - guheztina kodê. Du nêzîkatiyên vê pêvajoyê hene. Ya yekem ev e ku hûn bikevin nav tiştê ku bi rastî di koda heyî de diqewime, xeletiyê nas bikin û wê rast bikin. Ya duyemîn: li gorî hestê tevbigerin - lê zêde bikin, bibêjin, +1 li daxuyaniyek şertî an gerokek, bibînin ka fonksiyon di senaryoya xwestî de dixebite, dûv re tiştek din biceribîne, û hwd.

Rêbaza yekem rast e. Wekî ku Steve McConnell di pirtûka xwe ya Code Complete de (ya ku ez pir pêşniyar dikim, rave dike), her gava ku em di kodê de tiştek diguhezînin, divê em karibin bi pêbawerî pêşbîn bikin ka ew ê çawa bandorê li serîlêdanê bike. Ez ji bîranînê vedibêjim, lê heke xeletiyek bi awayê ku we hêvî dikir nexebite, divê hûn pir hişyar bin û divê hûn tevahiya plansaziya çalakiya xwe bipirsin.

Ji bo kurtkirina tiştên ku hatine gotin, ji bo ku hûn rastkirinek xeletiyek baş a ku kalîteya kodê xirab neke, hûn hewce ne ku hem tevahiya avahiya kodê û hem jî çavkaniya pirsgirêka taybetî fam bikin.

Asta duyemîn a têgihîştinê: Çima ew dixebite?

Ev ast ji ya berê pir kêmtir bi têgihiştinî tê fam kirin. Ez, dema ku ez hîn pêşdebirek nû bûm, bi saya serokê xwe fêr bûm, û dûv re çend caran ji nûhatiyan re esasê mijarê rave kir.

Vê carê, em bifikirin ku we du raporên xeletiyê di carekê de wergirtine: ya yekem li ser senaryoya A ye, ya duyemîn li ser senaryoya B ye. Di her du senaryoyan de, tiştek xelet diqewime. Li gorî vê yekê, hûn pêşî xeletiya yekem çareser dikin. Bi karanîna prensîbên ku me ji bo têgihîştina Asta XNUMX pêşve xistin, hûn koda têkildar bi pirsgirêkê re kûr dikolin, fêhm dikin ka çima ew dibe sedem ku serîlêdan bi awayê ku di senaryo A de tevdigere, û verastkirinên maqûl ên ku encama ku hûn dixwazin derxînin çêbikin. . Her tişt baş diçe.

Dûv re hûn derbasî senaryoya B dibin. Hûn bi hewildanek ku xeletiyek provoke bikin senaryoyê dubare dikin, lê - şaş! - Niha her tişt wekî ku divê dixebite. Ji bo ku texmîna xwe piştrast bike, hûn guheztinên ku we dema ku hûn li ser xeletiya A dixebitin paşde bikin, û xeletiya B vedigere. Bugfix-a we her du pirsgirêk çareser kir. Şayî!

Te qet hesabê vê yekê nekir. We rêyek peyda kiriye ku hûn xeletiya di senaryoya A de rast bikin û hûn nizanin ka çima ew ji bo senaryoya B xebitî. Di vê qonaxê de, pir dilşewat e ku hûn bifikirin ku her du peywir bi serfirazî hatine qedandin. Ev pir mentiqî ye: xal ji holê rakirina xeletiyan bû, ne wusa? Lê kar hîn neqediyaye: hîn jî divê hûn fêhm bikin ka çima kirinên we xeletiya di senaryoya B de rast kirin. Çima? Ji ber ku dibe ku ew li ser prensîbên xelet bixebite, û hingê hûn hewce ne ku li rêyek din bigerin. Li vir çend mînakên rewşên weha hene:

  • Ji ber ku çareserî li gorî xeletiya B nehatiye çêkirin, hemî faktoran li ber çavan digirin, dibe ku we bi nezanî fonksiyona C şikandiye.
  • Mimkun e ku di heman demê de xeletiyek sêyemîn jî li cîhek veşêre, ku bi heman fonksiyonê ve girêdayî ye, û xeletiya we ji bo xebata rast a pergalê di senaryoya B de bi wê ve girêdayî ye. Her tişt niha baş xuya dike, lê rojek ev xeletiya sêyemîn dê were dîtin û rast kirin. Dûv re di senaryoya B de xeletî dê dîsa çêbibe, û heke tenê li wir be baş e.

Hemî ev kaosê li kodê zêde dike û dê rojek were serê we - bi îhtîmalek mezin di demek herî neguncan de. Hûn ê neçar in ku îradeya xwe berhev bikin da ku xwe neçar bikin ku wextê xwe derbas bikin fêm bikin ka çima her tişt dixebite, lê ew hêja ye.

Asta sêyemîn a têgihîştinê: Çima ew dixebite?

Têgihîştina min a vê dawiyê bi rastî bi vê astê re têkildar e, û belkî ew e ku heke ez berê bihatama vê ramanê dê herî zêde feydeya min bidaya.

Ji bo ku ew zelaltir bibe, em li mînakekê binêrin: pêdivî ye ku modula we bi fonksiyona X-ê re lihevhatî be. Hûn bi taybetî bi fonksiyona X nizanin, lê ji we re hate gotin ku ji bo ku hûn pê re hevaheng bin divê hûn çarçoveya F-yê bikar bînin. Ya din modulên ku bi X-ê re tevdigerin tam bi wî re dixebitin.

Koda we ji roja yekem a jiyana xwe ve qet bi çarçoweya F re têkilî çênebûye, ji ber vê yekê bicîhkirina wê ew qas hêsan nabe. Ev ê ji bo hin beşên modulê encamên cidî hebe. Lêbelê, hûn xwe davêjin pêşkeftinê: hûn bi hefteyan kodê dinivîsin, ceribandin, guhertoyên pîlot digirin, bersiv digirin, xeletiyên paşverûtiyê rast dikin, tevliheviyên nediyar kifş dikin, negihîştina muhletên ku di destpêkê de hatine lihev kirin, dinivîsin hin kodên din, ceribandin, ragihandina bersivê digirin, rastkirina xeletiyên regresyonê - ev hemî ji bo pêkanîna çarçoveya F.

Û di deqekê de hûn ji nişka ve pê dihesin - an jî dibe ku ji kesekî bibihîzin - ku dibe ku çarçoweya F qet bi taybetmendiya X-ê re hevahengiyê nede we. Dibe ku ew hemî dem û hewldan bi tevahî xelet ji bo wê hatî danîn.

Tiştekî bi vî rengî carekê dema ku li ser projeyek ku ez jê berpirsiyar bûm dixebitî qewimî. Çima ev yek çêbû? Ji ber ku min kêm têgihîştina fonksiyona X bû û ew çawa bi çarçoweya F re têkildar bû. Divê min çi bikira? Ji kesê ku peywira pêşkeftinê peywirdar dike bipirse ku bi zelalî rave bike ka qursa armancê ya çalakiyê çawa digihîje encamek xwestî, li şûna ku bi tenê tiştê ku ji bo modulên din hatine kirin dubare bike an jî gotina xwe ji bo wê bigire ku ev taybetmendiya X hewce dike ku bike.

Tecrûbeya vê projeyê min fêr kir ku ez red bikim ku pêvajoya pêşkeftinê dest pê bikim heya ku em têgihiştinek zelal nebe ka çima ji me tê xwestin ku hin tiştan bikin. Bi tevahî red dikin. Dema ku hûn peywirek distînin, îhtîmala yekem ev e ku hûn tavilê wiya bikin da ku wext winda nekin. Lê sîyaseta "cemidandina projeyê heta ku em têkevin hemî hûrguliyan" dikare bi fermanên mezin dema windakirinê kêm bike.

Her çend hewl bidin ku zextê li we bikin, we bi zorê bidin destpêkirin, her çend hûn eqlê vê yekê fam nekin jî, li berxwe bidin. Pêşî, fêm bikin ka çima peywirek wusa ji we re tê dayîn, û biryar bidin ka gelo ev riya rast e ji bo armancê. Diviya bû ku ez van hemîyan bi awayê dijwar fêr bibim - ez hêvî dikim ku mînaka min dê jiyanê ji kesên ku vê dixwînin re hêsantir bike.

Asta çaremîn a têgihiştinê: ???

Di bernamekirinê de her gav hîn bêtir heye, û ez bawer dikim ku min tenê rûyê mijara têgihiştinê xera kiriye. Di salên xebata bi kodê de we kîjan astên din ên têgihiştinê kifş kir? We çi biryar girt ku bandorek erênî li ser kalîteya kod û serîlêdanê kir? Kîjan biryar şaş derketin û derseke hêja da we? Tecrûbeya xwe di şîroveyan de parve bikin.

Source: www.habr.com

Add a comment