Net averstanen eppes ze entwéckelen wat Dir net versteet

Net averstanen eppes ze entwéckelen wat Dir net versteet

Zënter Ufank 2018 hunn ech d'Positioun vum Lead/Boss/Lead Entwéckler am Team - nennt et wat Dir wëllt, awer de Punkt ass datt ech ganz verantwortlech sinn fir ee vun de Moduler a fir all Entwéckler déi schaffen op et. Dës Positioun gëtt mir eng nei Perspektiv op den Entwécklungsprozess, well ech a méi Projeten involvéiert sinn a méi aktiv an der Entscheedung bedeelegt sinn. Viru kuerzem, dank dësen zwou Saachen, hunn ech op eemol gemierkt wéi vill d'Mooss vum Verständnis de Code an d'Applikatioun beaflosst.

De Punkt, deen ech wëll maachen, ass datt d'Qualitéit vum Code (an d'Finale Produkt) enk verbonnen ass mat wéi bewosst d'Leit, déi de Code designen a schreiwen, sinn iwwer wat se maachen.

Dir denkt vläicht elo, "Merci, Cap. Natierlech wier et flott ze verstoen wat Dir allgemeng schreift. Soss kënnt Dir och e Grupp vun Afen astellen fir arbiträr Schlësselen ze schloen an et do ze loossen. An Dir hutt absolut Recht. Deementspriechend huelen ech et selbstverständlech datt Dir mierkt datt eng allgemeng Iddi vun deem wat Dir maacht néideg ass. Dëst kann den Nullniveau vum Verständnis genannt ginn, a mir wäerten et net am Detail analyséieren. Mir wäerten am Detail kucken wat Dir genau musst verstoen a wéi et d'Entscheedungen beaflosst déi Dir all Dag maacht. Wann ech dës Saachen am Viraus gewosst hätt, et hätt mech vill verschwenden Zäit an zweifelhaftem Code gespuert.

Obwuel Dir wäert net eng eenzeg Linn vun Code ënnert gesinn, Ech gleewen nach, datt alles gesot hei vun grousser Wichtegkeet ass fir eng schreiwen héich-Qualitéit, expressiver Code.

Éischten Niveau vum Verständnis: Firwat funktionnéiert et net?

Entwéckler erreechen normalerweis dësen Niveau ganz fréi an hirer Carrière, heiansdo souguer ouni Hëllef vun aneren - op d'mannst a menger Erfahrung. Stellt Iech vir datt Dir e Feelerbericht kritt hutt: eng Funktioun an der Applikatioun funktionnéiert net, et muss fixéiert ginn. Wéi wäert Dir weidergoen?

De Standardschema gesäit esou aus:

  1. Fannt dat Stéck Code dat de Problem verursaacht (wéi dëst ze maachen ass en separat Thema, ech decken et a mengem Buch iwwer Legacy Code)
  2. Maacht Ännerungen un dësem Snippet
  3. Vergewëssert Iech datt de Feeler fixéiert ass a keng Regressiounsfehler opgetruede sinn

Loosst eis elo op den zweete Punkt fokusséieren - Ännerungen am Code maachen. Et ginn zwou Approche zu dësem Prozess. Déi éischt ass ze verdéiwen wat genau am aktuelle Code geschitt, de Feeler z'identifizéieren an et ze fixéieren. Zweetens: réckelen duerch Gefill - füügt, sot, +1 zu enger bedingungsloser Ausso oder Loop, kuckt ob d'Funktioun am gewënschten Szenario funktionnéiert, da probéiert eppes anescht, a sou weider ad infinitum.

Déi éischt Approche ass richteg. Wéi de Steve McConnell a sengem Buch Code Complete erkläert (wat ech iwwregens héich recommandéieren), all Kéier wann mir eppes am Code änneren, sollte mir fäeg sinn mat Vertraue virauszesoen wéi et d'Applikatioun beaflosst. Ech zitéieren aus der Erënnerung, awer wann e Bugfix net funktionnéiert wéi Dir erwaart hutt, sollt Dir ganz alarméiert sinn an Dir sollt Äre ganzen Aktiounsplang a Fro stellen.

Fir ze resuméieren wat gesot gouf, fir e gudde Bugfix auszeféieren deen d'Qualitéit vum Code net degradéiert, musst Dir souwuel d'ganz Struktur vum Code wéi och d'Quell vum spezifesche Problem verstoen.

Zweeten Niveau vum Verständnis: Firwat funktionnéiert et?

Dësen Niveau ass vill manner intuitiv versteet wéi dee virdrun. Ech, wärend ech nach en Ufänger Entwéckler, hunn et dank mengem Chef geléiert, an duerno ëmmer erëm d'Essenz vun der Saach un Newcomer erkläert.

Loosst eis dës Kéier virstellen datt Dir zwee Käferberichter gläichzäiteg kritt hutt: deen éischten ass iwwer Szenario A, déi zweet iwwer Szenario B. A béid Szenarie geschitt eppes falsch. Deementspriechend packt Dir als éischt den éischte Käfer un. Mat de Prinzipien, déi mir fir den Niveau XNUMX Verständnis entwéckelt hunn, gräift Dir déif an de Code relevant fir de Problem, erauszefannen firwat et d'Applikatioun verursaacht wéi se am Szenario A mécht, a maacht raisonnabel Upassungen déi d'Resultat produzéieren déi Dir wëllt. . Alles geet super.

Da gitt Dir op Szenario B. Dir widderhëlt de Szenario an engem Versuch e Feeler ze provozéieren, awer - Iwwerraschung! - elo funktionéiert alles wéi et soll. Fir Är Schätzung ze bestätegen, rufft Dir d'Ännerungen un, déi Dir gemaach hutt wärend Dir um Käfer A geschafft hutt, an de Käfer B kënnt zréck. Äre Bugfix huet béid Problemer geléist. Glécklech!

Dir hutt guer net drop gerechent. Dir sidd mat engem Wee komm fir de Feeler am Szenario A ze fixéieren an hutt keng Ahnung firwat et fir Szenario B geschafft huet. Op dëser Etapp ass et ganz verlockend ze denken datt béid Aufgaben erfollegräich ofgeschloss sinn. Dëst ass ganz logesch: de Punkt war Feeler ze eliminéieren, war et net? Awer d'Aarbecht ass nach net fäerdeg: Dir musst nach erausfannen, firwat Är Handlungen de Feeler am Szenario B korrigéiert hunn. Firwat? Well et schafft vläicht un de falsche Prinzipien, an da musst Dir en anere Wee sichen. Hei sinn e puer Beispiller vun esou Fäll:

  • Zënter datt d'Léisung net op Feeler B ugepasst gouf, all Faktoren berücksichtegt, hutt Dir vläicht onbewosst futti Funktioun C.
  • Et ass méiglech datt et och en drëtte Feeler iergendwou lauert, am Zesummenhang mat der selwechter Funktioun, an Äre Bugfix hänkt dovun of fir déi korrekt Operatioun vum System am Szenario B. Alles gesäit elo gutt aus, awer enges Daags gëtt dësen drëtte Käfer gemierkt a fixéiert. Dann am Szenario B wäert de Feeler erëm optrieden, an et ass gutt wann nëmmen do.

All dëst füügt Chaos un de Code a wäert iergendwann op Äre Kapp falen - héchstwahrscheinlech am onopportune Moment. Dir musst Är Wëllenskraaft sammelen fir Iech selwer ze zwéngen Zäit ze verbréngen ze verstoen firwat alles schéngt ze schaffen, awer et ass et wäert.

Drëtten Niveau vum Verständnis: Firwat funktionnéiert et?

Meng rezent Asiicht bezitt sech präzis op dësen Niveau, an et ass wahrscheinlech deen deen mir am meeschte Virdeel bruecht hätt wann ech virdrun op dës Iddi komm wier.

Fir et méi kloer ze maachen, kucke mer e Beispill: Äre Modul muss mat der Funktioun X kompatibel gemaach ginn. Dir sidd net besonnesch vertraut mat der Funktioun X, mä Dir krut gesot datt Dir fir kompatibel mat deem ze sinn, de F-Framework muss benotzen. Moduler déi mat X integréieren, funktionnéieren genau mat him.

Äre Code war guer net a Kontakt mam F Kader zënter dem éischten Dag vu sengem Liewen, sou datt et net sou einfach ass ze implementéieren. Dëst wäert sérieux Konsequenze fir e puer Deeler vum Modul hunn. Wéi och ëmmer, Dir werft Iech an d'Entwécklung: Dir verbréngt Woche fir Code ze schreiwen, ze testen, Pilotversioune auszerollen, Feedback kréien, Regressiounsfehler fixéieren, onerwaart Komplikatiounen entdecken, net déi ursprénglech ausgemaach Deadlines erhalen, e puer méi Code schreiwen, testen, Feedback Kommunikatioun kréien, Regressiounsfehler korrigéieren - dat alles fir de F Kader ëmzesetzen.

An iergendwann mierkt Dir op eemol - oder héiert vläicht vun engem - datt vläicht de Kader F Iech guer net Kompatibilitéit mat Feature X gëtt.Vläicht gouf all déi Zäit an Effort komplett falsch gemaach.

Eppes Ähnleches ass eemol geschitt wärend ech un engem Projet geschafft hunn, fir deen ech verantwortlech war. Firwat ass dat geschitt? Well ech hu wéineg Verständnis vun wat Funktioun X war a wéi et Zesummenhang mat Kader F. Wat soll ech gemaach hunn? Frot d'Persoun, déi d'Entwécklungsaufgab zougewisen huet, kloer z'erklären wéi de virgesinnene Kurs vun der Handlung zum gewënschte Resultat féiert, anstatt einfach ze widderhuelen wat fir aner Moduler gemaach gouf oder hir Wuert dofir huelen datt dëst ass wat Feature X muss maachen.

D'Erfahrung vun dësem Projet huet mir geléiert ze refuséieren den Entwécklungsprozess unzefänken bis mir e kloert Verständnis hunn firwat mir gefrot gi verschidde Saachen ze maachen. Refus direkt. Wann Dir eng Aufgab kritt, ass den éischten Impuls et direkt unzehuelen fir net Zäit ze verschwenden. Awer d'Politik "afréieren de Projet bis mir an all Detailer kommen" kann d'Verschwendung vun Zäit duerch Uerder vun der Gréisst reduzéieren.

Och wa se versichen Drock op Iech ze maachen, fir Iech ze zwéngen ze schaffen, obwuel Dir d'Begrënnung dofir net versteet, widderstoen. Fir d'éischt erauszefannen, firwat Dir esou eng Aufgab kritt, an entscheede ob dëst de richtege Wee zum Zil ass. Ech hunn dat alles op de schwéiere Wee misse léieren - ech hoffen, datt mäi Beispill d'Liewe méi einfach mécht fir déi, déi dëst liesen.

Véierten Niveau vum Verständnis: ???

Et gëtt ëmmer méi am Programméiere ze léieren, an ech gleewen datt ech nëmmen d'Uewerfläch vum Thema vum Verständnis gekraazt hunn. Wéi eng aner Niveaue vum Verständnis hutt Dir iwwer d'Jore entdeckt fir mam Code ze schaffen? Wéi eng Entscheedungen hutt Dir geholl, déi e positiven Impakt op d'Qualitéit vum Code an der Applikatioun haten? Wéi eng Entscheedungen hu sech als falsch erausgestallt an hunn Iech eng wäertvoll Lektioun geléiert? Deelt Är Erfahrung an de Kommentaren.

Source: will.com

Setzt e Commentaire