Programovanie

Učenie sa a zdokonaľovanie vašich schopností ladenia

Programátori trávia skôr vysoké percento času ladením ako písaním kódu. Pravdepodobne ste mali nejaké školenie týkajúce sa učenia sa jazyka alebo rámca - ale ako ste sa naučili opravovať chyby svojho softvéru?

Keď ste sa zamilovali do programovania (alebo ste sa aspoň rozhodli, že to bola kariéra za odplatu), pravdepodobne ste to považovali za tvorivé úsilie. Navrhli by ste vynikajúci softvér, napíšete kód a poof!- Prvýkrát by to fungovalo perfektne.

Áno. Správny.

V skutočnom svete ste strávili veľa času ladením kódu a nie písaním nových vecí. Som si istý, že dokážem vykopať nejaké nejasné percento času vývojára, ktorý sa venuje skôr opravovaniu chýb ako vytváraniu nových funkcií, ale pochybujem, že musíte počuť nejaké číslo. Môžete si veľmi ľahko predstaviť dni, ktoré ste strávili hľadaním Chyby z pekla a ich vplyvu na plán projektu.

Teraz existuje veľa spôsobov, ako sa programátori môžu a môžu naučiť nové softvérové ​​zručnosti, či už je to čítanie kníh, účasť na technologických konferenciách alebo návšteva webov ako JavaWorld.com. (Som skôr rád, že robíte to druhé.) Tieto sa však zvyčajne zameriavajú na nástroje, ako sú jazyky alebo rámce, a nie na meta techniky, ako napríklad „Ako nájsť chybu za dve hodiny namiesto dvoch dní.“ Jazyky môžu prichádzať a odchádzať, rovnako ako ladiace programy IDE, ale schopnosť rozlíšiť, pod ktorou skalou sa skrýva vaša chyba, je tu tá, ktorá vám zostane navždy.

Veľkou časťou zručnosti naučiť sa ladiť sú samozrejme skúsenosti. Môže to byť vaša vlastná skúsenosť alebo príležitosť byť Kobylkou pri nohách majstra programátora. Tiež mám podozrenie, že niektorí ľudia majú vrodený talent na odstraňovanie problémov (rovnako dôležitý pre opravu rozbitého auta ako nesprávne fungujúca aplikácia), a tí, ktorí to nemajú, môžu len štekliť závisťou.

Avšak niektoré z toho sa dá naučiť. Napríklad jeden hlavný programátor môjho známeho mal axiómu: Ak hľadáte chybu už (relatívne) dlho a nemôžete ju nájsť, povedal: „Hľadáte na zlom mieste.“ Zjavne znejúce, ale určite pravdivé ... a ako často ste stratili čas hľadaním v module XYZ, keď bol problém niekde úplne inde?

Spýtal som sa niekoľkých vývojárov na spôsoby, ako sa naučili alebo ako vylepšili svoje ladiace schopnosti. Prekvapivé množstvo z nich hovorilo o tom, ako ovládali ladiaci program IDE alebo nejaké iné odborné znalosti o nástrojoch, ale väčšinu z toho, čo som chcel vedieť, sú ich rady týkajúce sa zlepšenia schopnosti opraviť chyby. Tu je krátke zhrnutie ich odpovedí.

  1. Buďte disciplinovaní. Ladenie je proces, uviedol jeden vývojár, a nie séria náhodných udalostí. Neotáčajte gombíky náhodne; postupujte podľa procesu vykonania kódu. Rovnako ako opravu kosačky na trávu, povedal. Dostáva časť A potrebný vstup? A čo výstup? Ak je to v poriadku, pokračujte ďalej.
  2. Ak chcete zlepšiť svoje zručnosti, ladte radšej kód iných ľudí, ako svoj vlastný. Bude ľahšie vidieť chyby v predpokladoch druhého človeka, ako bude vidieť vaše vlastné. Môžete to urobiť v rámci krížovej kontroly kódu a krížového ladenia. Rozvinete schopnosť rýchlejšie rozpoznávať bežné príčiny porúch, sľúbil ste to jednému vývojárovi a naučíte sa rozpoznávať (a upúšťať) od svojich vlastných zlých vývojových postupov.
  3. Predstierajte, že ste kompilátor. Pred stlačením tlačidla kompilácie vyhľadajte a opravte čo najviac chýb. Aj keď väčšina moderných IDE obsahuje integrované debuggery (napríklad Visual Studio's Intellisense), z ich automatizácie sa dozviete menej, ako z vedomého skúmania procesu. (Rovnakým spôsobom sa nikdy nenaučíte správne hláskovať, ak sa pri všetkej práci spoliehate na kontrolu pravopisu.)
  4. Naučte sa opravovať chyby čo najskôr v procese vývoja. To by mohlo znamenať niečo formalizované, napríklad testom riadený vývoj. To tiež znamená venovať čas ladeniu vášho dizajnu namiesto toho, aby ste kódovali.
  5. Ladenie je najjednoduchšie, keď môžete držať celý systém v hlave. Nerobte chybu, že sa sústredíte iba na jednu časť aplikácie. Venujte pozornosť vzájomným vzťahom medzi modulmi. Prečítajte si kód na viacerých úrovniach abstrakcie, odporúčal jeden programátor. „Nájsť chybu je najťažšia časť a je potrebné jasne pochopiť, čo robí viac častí kódu,“ povedala.
  6. Súčasťou rovnakej rady, myslím, je aj návrh niekoho iného: získať dobré porozumenie systému o úroveň nižšie ako to, na čom pracujete. „Ak ladíte program na systémovej úrovni C, pomôže vám to oboznámiť sa s nejakou zostavou a niečím o operačnom systéme,“ vysvetlil hlavný inžinier systémového softvéru. „Ak ladíte aplikáciu J2EE, pomôže vám to dozvedieť sa niečo o vláknach Java, RMI a GC.“ V mnohých prípadoch upozornil, že chybové správy pochádzajú z tejto úrovne. „Ak pochopíte, čo to znamená, pomôže vám to zistiť, čo sa na vašej úrovni abstrakcie zhoršuje,“ vysvetlil.

Niekoľko vývojárov tiež odporučilo ďalšie zdroje. Medzi nimi je kniha Davida Agana s názvom Debugging, ktorá sľubuje deväť nevyhnutných pravidiel, a Why Why Fail: A Guide to Systematic Debugging, ktorá má vyjsť v druhom vydaní. Vývojár, ktorý odporučil druhú možnosť, hovorí, že učí systematickému prístupu k ladeniu pomocou mnohých praktických príkladov. Ďalšia navrhla online esej Desať zručností vysoko efektívnych softvérových testerov.

Všetky tieto odpovede sa mi páčia, ale myslím, že je treba zdieľať viac múdrosti. Ako ste získali svoje ladiace schopnosti? Ako ste pomohli ostatným vylepšiť svoje?

Tento príbeh, „Učíme sa a zlepšujeme svoje schopnosti ladenia“, bol pôvodne publikovaný spoločnosťou JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found