Ùn accunsente à sviluppà qualcosa chì ùn capisce micca

Ùn accunsente à sviluppà qualcosa chì ùn capisce micca

Dapoi u principiu di 2018, aghju avutu a pusizione di capu / capu / sviluppatore principale in a squadra - chjamate ciò chì vulete, ma u puntu hè chì sò interamente rispunsevule per unu di i moduli è per tutti i sviluppatori chì travaglianu. nantu à questu. Sta pusizioni mi dà una nova perspettiva nantu à u prucessu di sviluppu, postu chì sò implicatu in più prughjetti è più attivamente implicatu in a decisione. Ricertamenti, grazia à sti dui cose, aghju capitu di colpu quantu a misura di l'intelligenza afecta u codice è l'applicazione.

U puntu chì vogliu fà hè chì a qualità di u codice (è u pruduttu finali) hè strettamente ligata à a manera chì a ghjente chì cuncepisce è scrive u codice hè di ciò chì facenu.

Puderete pensà avà, "Grazie, Cap. Di sicuru, saria bellu di capisce ciò chì scrive in generale. Altrimenti, pudete ancu ingaghjate un gruppu di scimmie per chjappà e chjave arbitrarie è lasciate cusì ". È avete assolutamente ragione. In cunsiquenza, pigliu per scontru chì avete capitu chì avè una idea generale di ciò chì fate hè necessariu. Questu pò esse chjamatu u nivellu zero di capiscenu, è ùn l'analizà micca in detail. Fighjemu in dettu ciò chì esattamente avete bisognu di capiscenu è cumu affetta e decisioni chì fate ogni ghjornu. Se avessi saputu queste cose in anticipu, mi avissi salvatu assai tempu perdu è codice dubbitu.

Ancu s'ellu ùn vede micca una sola linea di codice quì sottu, crede sempre chì tuttu ciò chì dice quì hè di grande impurtanza per scrive codice d'alta qualità è espressivu.

Primu livellu di capiscitura: Perchè ùn funziona micca?

I sviluppatori di solitu ghjunghjenu à questu livellu assai prima in a so carriera, à volte ancu senza aiutu da l'altri - almenu in a mo sperienza. Immaginate chì avete ricevutu un rapportu di bug: una certa funzione in l'applicazione ùn funziona micca, deve esse riparata. Cumu procederete ?

U schema standard hè cusì:

  1. Truvate u pezzu di codice chì causa u prublema (cumu per fà questu hè un tema separatu, u copre in u mo libru nantu à u codice legatu)
  2. Fate cambiamenti à stu snippet
  3. Assicuratevi chì u bug hè riparatu è ùn sò micca accaduti errori di regressione

Avà fucalizza nantu à u sicondu puntu - fà cambiamenti à u codice. Ci sò dui approcci à stu prucessu. U primu hè di sfondà in ciò chì esattamente succede in u codice attuale, identificà l'errore è risolve. Siconda: muvimenti per sente - aghjunghje, dì, +1 à una dichjarazione condicionale o un ciclu, vede se a funzione funziona in u scenariu desideratu, poi pruvate qualcosa d'altru, è cusì à l'infinitu.

U primu approcciu hè currettu. Cum'è Steve McConnell spiega in u so libru Code Complete (chì ricumandemu assai, per via), ogni volta chì cambiamu qualcosa in u codice, duvemu esse capaci di predichendu cun fiducia cumu affetterà l'applicazione. Citemu da a memoria, ma se un bugfix ùn funziona micca cumu aspittàvate, duvete esse assai alarmatu è duvete interrogà u vostru pianu d'azzione tutale.

Per sintetizà ciò chì hè statu dettu, per fà una bona correzione di bug chì ùn degrada micca a qualità di u codice, avete bisognu di capiscenu a struttura sana di u codice è a fonte di u prublema specificu.

Secondu livellu di capiscitura: Perchè funziona?

Stu livellu hè cumpresu assai menu intuitive chè u precedente. Eiu, mentri era un sviluppatore principiante, l'amparò grazia à u mo capu, è dopu spiegà ripetutamente l'essenza di a materia à i novi.

Sta volta, imaginemu chì avete ricevutu dui rapporti di bug in una volta: u primu hè di u scenariu A, u sicondu hè di u scenariu B. In i dui scenarii, qualcosa di male succede. Per quessa, affruntate prima u primu bug. Utilizendu i principii chì avemu sviluppatu per a cunniscenza di u Livellu XNUMX, scavate in profondità in u codice pertinenti à u prublema, scopre perchè face chì l'applicazione si comporta cum'è in u Scenariu A, è fate l'aghjustamenti ragiunate chì producenu u risultatu chì vulete. . Tuttu va bè.

Allora andate à u scenariu B. Ripete u scenariu in un tentativu di pruvucà un errore, ma-sorpresa! - avà tuttu funziona cum'è deve. Per cunfirmà a vostra supposizione, annullete i cambiamenti chì avete fattu mentre travagliate nantu à u bug A, è u bug B torna. U vostru bugfix risolve i dui prublemi. Fortunatu!

Ùn avete micca cuntatu nantu à questu. Avete ghjuntu cù una manera di riparà l'errore in u scenariu A è ùn avete micca idea per quessa chì hà travagliatu per u scenariu B. In questu stadiu, hè assai tentatore di pensà chì e duie tarei sò stati cumpleti bè. Questu hè abbastanza logicu: u puntu era di eliminà l'errori, ùn hè micca? Ma u travagliu ùn hè micca finitu ancu: avete sempre à capisce perchè e vostre azzioni corrette l'errore in u scenariu B. Perchè ? Perchè pò esse u travagliu nantu à i principii sbagliati, è tandu vi tuccherà à circà un altru modu. Eccu alcuni esempi di tali casi:

  • Siccomu a suluzione ùn era micca adattata à l'errore B, tenendu in contu tutti i fatturi, pudete avè senza sapè a funzione C rotta.
  • Hè pussibule chì ci hè ancu un terzu bug in accadutu in qualchì locu, ligatu à a listessa funzione, è u vostru bugfix dipende da questu per u funziunamentu currettu di u sistema in u scenariu B. Tuttu pare bè avà, ma un ghjornu stu terzu bug serà nutatu è riparatu. Allora in u scenariu B l'errore si ripresentarà novu, è hè bonu s'ellu ci hè solu.

Tuttu chistu aghjunghje u caosu à u codice è un ghjornu cascarà nantu à a vostra testa - più prubabilmente in u mumentu più inopportunu. Duverete riunisce a vostra forza di vuluntà per furzà à passà u tempu per capiscenu perchè tuttu pare travaglià, ma vale a pena.

Terzu livellu di capiscitura: Perchè funziona?

U mo insight recenti si riferisce precisamente à questu livellu, è hè probabilmente quellu chì m'avaria datu u più benefiziu s'ellu era venutu à sta idea prima.

Per fà più chjaru, fighjemu un esempiu: u vostru modulu deve esse cumpatibile cù a funzione X. Ùn avete micca particularmente familiarizatu cù a funzione X, ma avete dettu chì per esse cumpatibile cù questu avete bisognu di utilizà u framework F. Altri moduli chì integranu cù X travaglianu esattamente cun ellu.

U vostru còdice ùn hè micca in cuntattu cù u framework F in tuttu da u primu ghjornu di a so vita, cusì implementà ùn serà micca cusì faciule. Questu averebbe cunsiquenzi serii per certi parti di u modulu. Tuttavia, vi lanciate in u sviluppu: passate settimane à scrive u codice, à pruvà, à lancià e versioni piloti, à riceve feedback, à correggerà l'errori di regressione, à scopre cumplicazioni impreviste, à ùn risponde à e scadenze inizialmente accettate, à scrive più codice, à pruvà, à ottene una cumunicazione di feedback, corregge l'errori di regressione - tuttu questu per implementà u framework F.

È à un certu puntu vi capisce subitu - o forse sente da qualcunu - chì forse u quadru F ùn vi darà micca a cumpatibilità cù a funzione X. Forse tuttu u tempu è u sforzu sò stati messi completamente sbagliati per quessa.

Qualcosa di simile hè accadutu una volta mentre travagliava in un prughjettu per u quale era rispunsevule. Perchè hè accadutu questu? Perchè aghju avutu pocu cunniscenza di ciò chì a funzione X era è cumu si ligata à u framework F. Chì duverebbe fà? Pregunte à a persona chì assigna u compitu di sviluppu per spiegà chjaramente cumu u cursu di l'azzione previstu porta à u risultatu desideratu, piuttostu cà ripete ciò chì hè statu fattu per altri moduli o piglià a so parolla per quessa chì hè ciò chì a funzione X hà da fà.

L'esperienza di stu prughjettu m'hà insignatu di ricusà di inizià u prucessu di sviluppu finu à avè una capiscitura chjara di perchè ci hè dumandatu à fà certe cose. Rifiutate di manera diretta. Quandu riceve un compitu, u primu impulsu hè di piglià subitu per ùn perde u tempu. Ma a pulitica di "congelà u prugettu finu à chì entremu in tutti i dettagli" pò riduce u tempu perdu per ordini di grandezza.

Ancu s'elli pruvate à mette pressione nantu à voi, per forzà à inizià u travagliu, ancu s'ellu ùn capisce micca a logica per questu, resiste. Prima, capisce perchè vi sò datu un tali compitu, è decide s'ellu hè u percorsu ghjustu à u scopu. Aviu avutu à amparà tuttu questu in modu duru - speru chì u mo esempiu farà a vita più faciule per quelli chì leghjenu questu.

Quartu livellu di capiscitura: ???

Ci hè sempre più per amparà in a prugrammazione, è crede chì aghju solu scratched a superficia di u tema di capiscenu. Chì altri livelli di capiscitura avete scupertu annantu à l'anni di travaglià cù u codice? Chì decisioni avete fattu chì anu un impattu pusitivu nantu à a qualità di u codice è l'applicazione? Chì e decisioni sò state sbagliate è vi anu insignatu una lezione preziosa? Condividi a vostra sperienza in i cumenti.

Source: www.habr.com

Add a comment