Peidiwch â chytuno i ddatblygu rhywbeth nad ydych yn ei ddeall

Peidiwch â chytuno i ddatblygu rhywbeth nad ydych yn ei ddeall

Ers dechrau 2018, rwyf wedi bod yn dal swydd y datblygwr arweiniol/bos/datblygwr arweiniol ar y tîm – ffoniwch yr hyn yr ydych ei eisiau, ond y pwynt yw fy mod yn gwbl gyfrifol am un o’r modiwlau ac am yr holl ddatblygwyr sy’n gweithio. arno. Mae'r safbwynt hwn yn rhoi persbectif newydd i mi ar y broses ddatblygu, gan fy mod yn ymwneud â mwy o brosiectau ac yn ymwneud yn fwy gweithredol â gwneud penderfyniadau. Yn ddiweddar, diolch i'r ddau amgylchiadau hyn, sylweddolais yn sydyn faint mae'r mesur dealltwriaeth yn effeithio ar y cod a'r cymhwysiad.

Y pwynt yr wyf am ei wneud yw bod ansawdd y cod (a'r cynnyrch terfynol) yn perthyn yn agos i ba mor ymwybodol yw'r bobl sy'n dylunio ac yn ysgrifennu'r cod o'r hyn y maent yn ei wneud.

Efallai eich bod chi'n meddwl ar hyn o bryd, “Diolch, Cap. Wrth gwrs, byddai'n braf deall yr hyn yr ydych yn ei ysgrifennu yn gyffredinol. Fel arall, efallai y byddwch chi hefyd yn llogi grŵp o fwncïod i daro allweddi mympwyol a'i adael ar hynny. ” Ac rydych yn llygad eich lle. Yn unol â hynny, cymeraf yn ganiataol eich bod yn sylweddoli bod cael syniad cyffredinol o’r hyn yr ydych yn ei wneud yn angenrheidiol. Gellir galw hyn yn lefel sero o ddealltwriaeth, ac ni fyddwn yn ei ddadansoddi'n fanwl. Byddwn yn edrych yn fanwl ar beth yn union y mae angen i chi ei ddeall a sut mae'n effeithio ar y penderfyniadau a wnewch bob dydd. Pe bawn i wedi gwybod y pethau hyn ymlaen llaw, byddai wedi arbed llawer o amser wedi'i wastraffu a chod amheus i mi.

Er na welwch un llinell o god isod, rwy'n dal i gredu bod popeth a ddywedir yma o bwysigrwydd mawr ar gyfer ysgrifennu cod mynegiannol o ansawdd uchel.

Lefel gyntaf o ddealltwriaeth: Pam nad yw'n gweithio?

Mae datblygwyr fel arfer yn cyrraedd y lefel hon yn gynnar iawn yn eu gyrfaoedd, weithiau hyd yn oed heb unrhyw gymorth gan eraill - o leiaf yn fy mhrofiad i. Dychmygwch eich bod wedi derbyn adroddiad nam: nid yw rhai swyddogaethau yn y cais yn gweithio, mae angen ei drwsio. Sut y byddwch yn bwrw ymlaen?

Mae'r cynllun safonol yn edrych fel hyn:

  1. Dewch o hyd i'r darn o god sy'n achosi'r broblem (mae sut i wneud hwn yn bwnc ar wahân, rwy'n ei gwmpasu yn fy llyfr am god etifeddiaeth)
  2. Gwnewch newidiadau i'r darn hwn
  3. Gwnewch yn siŵr bod y nam wedi'i drwsio ac nad oes unrhyw wallau atchweliad wedi digwydd

Nawr, gadewch i ni ganolbwyntio ar yr ail bwynt - gwneud newidiadau i'r cod. Mae dwy ffordd o fynd i’r afael â’r broses hon. Y cyntaf yw ymchwilio i beth yn union sy'n digwydd yn y cod cyfredol, nodi'r gwall a'i drwsio. Yn ail: symudwch trwy deimlo - ychwanegu, dyweder, +1 at ddatganiad amodol neu ddolen, gweld a yw'r swyddogaeth yn gweithio yn y senario a ddymunir, yna rhowch gynnig ar rywbeth arall, ac yn y blaen ad infinitum.

Mae'r dull cyntaf yn gywir. Fel yr eglura Steve McConnell yn ei lyfr Code Complete (yr wyf yn ei argymell yn fawr, gyda llaw), bob tro y byddwn yn newid rhywbeth yn y cod, dylem allu rhagweld yn hyderus sut y bydd yn effeithio ar y cais. Rwy'n dyfynnu o'r cof, ond os nad yw atgyweiriad nam yn gweithio'r ffordd roeddech chi'n ei ddisgwyl, dylech chi fod wedi dychryn yn fawr a dylech chi gwestiynu'ch cynllun gweithredu cyfan.

I grynhoi'r hyn a ddywedwyd, er mwyn perfformio atgyweiriad nam da nad yw'n diraddio ansawdd y cod, mae angen i chi ddeall strwythur cyfan y cod a ffynhonnell y broblem benodol.

Ail lefel dealltwriaeth: Pam mae'n gweithio?

Mae'r lefel hon yn cael ei deall yn llawer llai greddfol na'r un flaenorol. Roeddwn i, tra'n dal i fod yn ddatblygwr dibrofiad, wedi ei ddysgu diolch i'm pennaeth, ac wedi hynny yn egluro hanfod y mater dro ar ôl tro i newydd-ddyfodiaid.

Y tro hwn, gadewch i ni ddychmygu eich bod wedi derbyn dau adroddiad nam ar unwaith: mae'r cyntaf yn ymwneud â senario A, mae'r ail yn ymwneud â senario B. Yn y ddau senario, mae rhywbeth o'i le yn digwydd. Yn unol â hynny, rydych chi'n mynd i'r afael â'r byg cyntaf yn gyntaf. Gan ddefnyddio'r egwyddorion a ddatblygwyd gennym ar gyfer dealltwriaeth Lefel 1, rydych chi'n cloddio'n ddwfn i'r cod sy'n berthnasol i'r broblem, yn darganfod pam ei fod yn achosi i'r cymhwysiad ymddwyn fel y mae yn Senario A, a gwneud addasiadau rhesymol sy'n cynhyrchu'r canlyniad rydych chi ei eisiau. . Mae popeth yn mynd yn wych.

Yna byddwch yn symud ymlaen i senario B. Rydych chi'n ailadrodd y senario mewn ymgais i ysgogi gwall, ond - syndod! - nawr mae popeth yn gweithio fel y dylai. I gadarnhau eich dyfalu, rydych chi'n dadwneud y newidiadau a wnaethoch wrth weithio ar fyg A, ac mae byg B yn dod yn ôl. Fe wnaeth eich atgyweiriad namau ddatrys y ddwy broblem. Lwcus!

Doeddech chi ddim yn cyfrif ar hyn o gwbl. Rydych chi wedi meddwl am ffordd i gywiro'r gwall yn senario A ac nid oes gennych unrhyw syniad pam y bu'n gweithio i senario B. Ar hyn o bryd, mae'n demtasiwn mawr meddwl bod y ddwy dasg wedi'u cwblhau'n llwyddiannus. Mae hyn yn eithaf rhesymegol: y pwynt oedd dileu gwallau, onid oedd? Ond nid yw'r gwaith wedi'i orffen eto: mae'n rhaid i chi ddarganfod pam fod eich gweithredoedd wedi cywiro'r gwall yn senario B. Pam? Oherwydd efallai ei fod yn gweithio ar yr egwyddorion anghywir, ac yna bydd angen i chi chwilio am ffordd arall allan. Dyma ychydig o enghreifftiau o achosion o'r fath:

  • Gan nad oedd yr ateb wedi'i deilwra i wall B, gan ystyried yr holl ffactorau, efallai eich bod wedi torri swyddogaeth C yn ddiarwybod.
  • Mae'n bosibl bod trydydd byg hefyd yn llechu yn rhywle, sy'n gysylltiedig â'r un swyddogaeth, ac mae eich atgyweiriad nam yn dibynnu arno ar gyfer gweithrediad cywir y system yn senario B. Mae popeth yn edrych yn dda nawr, ond un diwrnod bydd y trydydd byg hwn yn cael ei sylwi a'i drwsio. Yna yn senario B bydd y gwall yn digwydd eto, ac mae'n dda os mai dim ond yno.

Mae hyn i gyd yn ychwanegu anhrefn at y cod a bydd yn disgyn ar eich pen rywbryd - yn fwyaf tebygol ar yr eiliad fwyaf amhriodol. Bydd yn rhaid i chi gasglu'ch ewyllys i orfodi'ch hun i dreulio amser yn deall pam mae'n ymddangos bod popeth yn gweithio, ond mae'n werth chweil.

Trydydd lefel dealltwriaeth: Pam mae'n gweithio?

Mae fy mewnwelediad diweddar yn ymwneud yn union â'r lefel hon, ac mae'n debyg mai dyma'r un a fyddai wedi rhoi'r budd mwyaf imi pe bawn wedi dod at y syniad hwn yn gynharach.

I'w wneud yn gliriach, gadewch i ni edrych ar enghraifft: mae angen i'ch modiwl fod yn gydnaws â ffwythiant X. Nid ydych yn arbennig o gyfarwydd â ffwythiant X, ond dywedwyd wrthych fod angen i chi ddefnyddio'r fframwaith F er mwyn bod yn gydnaws ag ef. mae modiwlau sy'n integreiddio ag X yn gweithio'n union gydag ef.

Nid yw eich cod wedi bod mewn cysylltiad â fframwaith F o gwbl ers diwrnod cyntaf ei fywyd, felly ni fydd ei roi ar waith mor hawdd. Bydd gan hyn ganlyniadau difrifol i rai rhannau o'r modiwl. Fodd bynnag, rydych chi'n dechrau datblygu: rydych chi'n treulio wythnosau'n ysgrifennu cod, yn profi, yn cyflwyno fersiynau peilot, yn cael adborth, yn trwsio gwallau atchweliad, yn darganfod cymhlethdodau nas rhagwelwyd, ddim yn cwrdd â'r terfynau amser y cytunwyd arnynt yn wreiddiol, yn ysgrifennu mwy o god, yn profi, yn cael adborth, yn cyfathrebu, cywiro gwallau atchweliad - hyn i gyd er mwyn gweithredu'r fframwaith F.

Ac ar ryw adeg rydych chi'n sylweddoli'n sydyn - neu efallai clywed gan rywun - efallai na fydd fframwaith F yn rhoi cydnawsedd o gwbl i chi â nodwedd X. Efallai bod yr holl amser ac ymdrech wedi'u rhoi yn gwbl anghywir i hynny.

Digwyddodd rhywbeth tebyg unwaith wrth weithio ar brosiect yr oeddwn yn gyfrifol amdano. Pam digwyddodd hyn? Oherwydd ychydig iawn o ddealltwriaeth oedd gennyf o beth oedd swyddogaeth X a sut yr oedd yn berthnasol i fframwaith F. Beth ddylwn i fod wedi'i wneud? Gofynnwch i'r sawl sy'n aseinio'r dasg ddatblygu esbonio'n glir sut mae'r dull gweithredu a fwriedir yn arwain at y canlyniad dymunol, yn hytrach nag ailadrodd yr hyn a wnaethpwyd ar gyfer modiwlau eraill neu gymryd eu gair am mai dyma'r hyn y mae angen i X ei wneud.

Dysgodd profiad y prosiect hwn i mi wrthod dechrau ar y broses ddatblygu nes bod gennym ddealltwriaeth glir o pam y gofynnir i ni wneud rhai pethau. Gwrthod yn llwyr. Pan fyddwch chi'n derbyn tasg, yr ysgogiad cyntaf yw ymgymryd â hi ar unwaith er mwyn peidio â gwastraffu amser. Ond gall y polisi “rhewi'r prosiect nes i ni fynd i'r holl fanylion” leihau amser a wastraffir trwy orchmynion maint.

Hyd yn oed os ydynt yn ceisio rhoi pwysau arnoch, i'ch gorfodi i ddechrau gweithio, er nad ydych yn deall y rhesymeg dros hyn, ymwrthodwch. Yn gyntaf, darganfyddwch pam rydych chi'n cael tasg o'r fath, a phenderfynwch ai dyma'r llwybr cywir at y nod. Roedd yn rhaid i mi ddysgu hyn i gyd y ffordd galed - gobeithio y bydd fy esiampl yn gwneud bywyd yn haws i'r rhai sy'n darllen hwn.

Pedwerydd lefel dealltwriaeth: ???

Mae bob amser mwy i'w ddysgu mewn rhaglennu, a chredaf mai dim ond crafu wyneb pwnc y ddealltwriaeth yr wyf wedi'i wneud. Pa lefelau eraill o ddealltwriaeth ydych chi wedi'u darganfod dros y blynyddoedd o weithio gyda chod? Pa benderfyniadau a wnaethoch a gafodd effaith gadarnhaol ar ansawdd y cod a’r cymhwysiad? Pa benderfyniadau a drodd yn anghywir ac a ddysgodd wers werthfawr i chi? Rhannwch eich profiad yn y sylwadau.

Ffynhonnell: hab.com

Ychwanegu sylw