Ayaw pag-uyon sa paghimo sa usa ka butang nga dili nimo masabtan

Ayaw pag-uyon sa paghimo sa usa ka butang nga dili nimo masabtan

Sukad sa sinugdanan sa 2018, nagkupot ako sa posisyon sa lead/boss/lead developer sa team - tawga kini kung unsa ang gusto nimo, apan ang punto mao nga ako ang hingpit nga responsable sa usa sa mga module ug sa tanan nga mga developer nga nagtrabaho sa ibabaw niini. Kini nga posisyon naghatag kanako usa ka bag-ong panan-aw sa proseso sa pag-uswag, tungod kay ako nalambigit sa daghang mga proyekto ug mas aktibo nga nalambigit sa paghimog desisyon. Bag-ohay lang, salamat niining duha ka mga kahimtang, kalit nakong naamgohan kung unsa ka dako ang epekto sa sukod sa pagsabot sa code ug sa aplikasyon.

Ang punto nga gusto nakong buhaton mao nga ang kalidad sa code (ug ang katapusan nga produkto) suod nga may kalabutan sa kung unsa ka nahibal-an ang mga tawo nga nagdesinyo ug nagsulat sa code kung unsa ang ilang gibuhat.

Mahimong maghunahuna ka karon, “Salamat, Cap. Siyempre, maayo nga masabtan kung unsa ang imong gisulat sa kinatibuk-an. Kung dili, mahimo ka nga mag-hire ug usa ka grupo sa mga unggoy aron maigo ang mga arbitraryong yawe ug ibilin kini." Ug sakto gyud ka. Tungod niini, gipasagdan nako nga nahibal-an nimo nga kinahanglan ang usa ka kinatibuk-ang ideya sa imong gibuhat. Mahimo kining tawgon nga zero level of understanding, ug dili nato kini tukion sa detalye. Atong tan-awon sa detalye kung unsa gyud ang kinahanglan nimong masabtan ug kung giunsa kini makaapekto sa mga desisyon nga imong gihimo matag adlaw. Kung nahibal-an pa nako kini nga mga butang nga daan, kini makaluwas kanako sa daghang nausik nga oras ug kwestyonable nga code.

Bisan kung wala ka makakita usa ka linya sa code sa ubos, nagtuo gihapon ako nga ang tanan nga gisulti dinhi hinungdanon kaayo alang sa pagsulat sa taas nga kalidad, nagpahayag nga code.

Unang lebel sa pagsabot: Ngano nga dili kini molihok?

Ang mga developer kasagarang makaabot niini nga lebel sayo kaayo sa ilang mga karera, usahay bisan walay tabang gikan sa uban - labing menos sa akong kasinatian. Hunahunaa nga nakadawat ka usa ka ulat sa bug: ang pipila nga mga function sa aplikasyon dili molihok, kinahanglan kini ayohon. Unsaon nimo pagpadayon?

Ang standard nga laraw ingon niini:

  1. Pangitaa ang piraso sa code nga maoy hinungdan sa problema (unsaon pagbuhat niini usa ka bulag nga hilisgutan, gitabonan ko kini sa akong libro mahitungod sa legacy code)
  2. Paghimo og mga kausaban niini nga snippet
  3. Siguroha nga ang bug naayo ug walay regression errors nga nahitabo

Karon atong ipunting ang ikaduha nga punto - paghimo og mga pagbag-o sa code. Adunay duha ka pamaagi sa kini nga proseso. Ang una mao ang pagsusi kung unsa gyud ang nahitabo sa karon nga code, pag-ila sa sayup ug ayohon kini. Ikaduha: paglihok pinaagi sa pagbati - pagdugang, ingnon, +1 sa usa ka kondisyon nga pahayag o loop, tan-awa kung ang function molihok sa gusto nga senaryo, unya sulayi ang lain, ug uban pa ad infinitum.

Ang una nga pamaagi husto. Sama sa gipatin-aw ni Steve McConnell sa iyang libro nga Code Complete (nga akong girekomendar, sa paagi), sa matag higayon nga usbon nato ang usa ka butang sa code, kita kinahanglan nga makatagna uban ang pagsalig kon sa unsang paagi kini makaapekto sa aplikasyon. Nagkutlo ako gikan sa panumduman, apan kung ang usa ka bugfix dili molihok sa paagi nga imong gipaabut, kinahanglan ka nga maalarma ug kinahanglan nimo nga pangutan-on ang imong tibuuk nga plano sa aksyon.

Aron i-summarize kung unsa ang gisulti, aron mahimo ang usa ka maayo nga pag-ayo sa bug nga dili makadaot sa kalidad sa code, kinahanglan nimo nga masabtan ang tibuuk nga istruktura sa code ug ang gigikanan sa piho nga problema.

Ikaduha nga lebel sa pagsabut: Ngano nga kini molihok?

Kini nga lebel masabtan nga dili kaayo intuitive kaysa sa nauna. Ako, samtang usa pa ka bag-o nga developer, nakakat-on niini salamat sa akong boss, ug pagkahuman gibalikbalik nga gipatin-aw ang esensya sa butang sa mga bag-ong nangabot.

Niining higayona, atong hunahunaon nga nakadawat ka og duha ka bug report sa usa ka higayon: ang una mahitungod sa senaryo A, ang ikaduha mahitungod sa senaryo B. Sa duha ka senaryo, adunay sayop nga mahitabo. Tungod niini, unahon nimo ang una nga bug. Gamit ang mga prinsipyo nga among gihimo para sa Level 1 nga pagsabot, imong gikutkot ang lawom nga code nga may kalabotan sa problema, hibaloi kung ngano nga hinungdan nga ang aplikasyon molihok sama sa gibuhat niini sa Scenario A, ug maghimo makatarunganon nga mga pagbag-o nga nagpatunghag resulta nga gusto nimo. . Nindot ang tanan.

Dayon mopadayon ka sa senaryo B. Imong gisubli ang senaryo sa pagsulay sa paghagit og sayop, apan—katingala! - karon ang tanan nagtrabaho ingon nga kini kinahanglan. Aron makumpirma ang imong tagna, imong bawion ang mga pagbag-o nga imong gihimo samtang nagtrabaho sa bug A, ug ang bug B mobalik. Nasulbad sa imong bugfix ang duha ka problema. Swerte!

Wala gyud ka magsalig niini. Nakahimo ka usa ka paagi aron ayohon ang sayup sa senaryo A ug wala’y ideya kung ngano nga kini nagtrabaho alang sa senaryo B. Niini nga yugto, makatintal kaayo nga hunahunaon nga ang duha nga mga buluhaton malampuson nga nahuman. Makataronganon kini: ang punto mao ang pagwagtang sa mga sayup, dili ba? Apan wala pa mahuman ang trabaho: kinahanglan pa nimong mahibal-an kung ngano nga gitul-id sa imong mga aksyon ang sayup sa senaryo B. Ngano? Tungod kay kini mahimo nga nagtrabaho sa sayup nga mga prinsipyo, ug unya kinahanglan nimo pangitaon ang lain nga paagi sa paggawas. Ania ang pipila ka mga pananglitan sa maong mga kaso:

  • Tungod kay ang solusyon wala gipahaum sa sayup B, nga gikonsiderar ang tanan nga mga hinungdan, mahimo nga wala nimo nahibal-an nga naguba ang function C.
  • Posible nga adunay usa usab ka ikatulo nga bug nga nagtago sa usa ka lugar, nga may kalabotan sa parehas nga function, ug ang imong pag-ayo sa bug nagdepende niini alang sa husto nga operasyon sa sistema sa senaryo B. Maayo na ang tanan karon, apan usa ka adlaw kining ikatulo nga bug mamatikdan ug ayohon. Unya sa scenario B ang sayop mahitabo pag-usab, ug kini maayo kon didto lang.

Kining tanan makadugang sa kagubot sa code ug sa umaabot mahulog sa imong ulo - lagmit sa labing dili angay nga higayon. Kinahanglan nimong tigumon ang imong determinasyon aron pugson ang imong kaugalingon sa paggahin og oras sa pagsabut kung ngano nga ang tanan ingon molihok, apan takus kini.

Ikatulo nga lebel sa pagsabut: Ngano nga kini molihok?

Ang akong bag-o nga panabut adunay tukma nga kalabutan sa kini nga lebel, ug tingali kini ang makahatag kanako labing kaayo nga kaayohan kung nakaabut ako sa kini nga ideya sa sayo pa.

Aron mas klaro, tan-awon nato ang usa ka pananglitan: ang imong module kinahanglang himoong compatible sa function X. Dili kaayo ka pamilyar sa function X, pero giingnan ka nga para ma compatible niini kinahanglan nimo gamiton ang F framework. modules nga integrate uban sa X nagtrabaho sa tukma uban kaniya.

Ang imong code wala pa makontak sa F framework sukad pa sa unang adlaw sa iyang kinabuhi, busa ang pagpatuman niini dili kaayo sayon. Kini adunay seryoso nga mga sangputanan alang sa pipila ka mga bahin sa module. Bisan pa, imong gihulog ang imong kaugalingon sa pag-uswag: naggugol ka mga semana sa pagsulat sa code, pagsulay, paglansad sa mga bersyon sa piloto, pagkuha og feedback, pag-ayo sa mga sayup sa pagbalik, pagdiskubre sa wala damha nga mga komplikasyon, wala maabot ang orihinal nga gikasabutan nga mga deadline, pagsulat sa dugang nga code, pagsulay, pagkuha sa komunikasyon sa feedback, pagtul-id sa mga kasaypanan sa regression - kining tanan aron mapatuman ang F framework.

Ug sa usa ka punto kalit nga imong naamgohan - o tingali nakadungog gikan sa usa ka tawo - nga tingali ang framework F dili gyud maghatag kanimo pagkaangay sa feature X. Tingali ang tanan nga panahon ug paningkamot gibutang sa hingpit nga sayup niana.

Adunay susama nga nahitabo kausa samtang nagtrabaho sa usa ka proyekto diin ako ang responsable. Nganong nahitabo kini? Tungod kay gamay ra ang akong nasabtan kung unsa nga function ang X ug kung giunsa kini kalabutan sa framework F. Unsa ang angay nakong buhaton? Hangyoa ang tawo nga nag-assign sa development nga buluhaton sa klarong pagpatin-aw kon sa unsang paagi ang gituyo nga lihok sa aksyon mosangpot sa gitinguhang resulta, imbes nga sublion lang ang gihimo para sa ubang modules o kuhaan ang ilang pulong nga mao kini ang kinahanglang buhaton sa feature X.

Ang kasinatian niini nga proyekto nagtudlo kanako sa pagdumili sa pagsugod sa proseso sa pagpalambo hangtud nga kita adunay klaro nga pagsabut kon nganong kita gihangyo sa pagbuhat sa pipila ka mga butang. Pagdumili gyud. Kung makadawat ka usa ka buluhaton, ang una nga kadasig mao ang pagkuha dayon niini aron dili mag-usik sa oras. Apan ang "pag-freeze sa proyekto hangtod nga makuha namon ang tanan nga mga detalye" nga palisiya makapakunhod sa nausik nga oras pinaagi sa mga mando sa kadako.

Bisan kung gisulayan ka nila nga presyur, aron pugson ka sa pagsugod sa trabaho, bisan kung wala nimo masabtan ang katarungan alang niini, sukli. Una, hibal-i kung nganong gihatagan ka sa ingon nga buluhaton, ug pagdesisyon kung kini ba ang husto nga dalan padulong sa katuyoan. Kinahanglan nakong tun-an kining tanan sa lisud nga paagi - nanghinaut ko nga ang akong ehemplo makapasayon ​​sa kinabuhi niadtong nagbasa niini.

Ikaupat nga lebel sa pagsabot: ???

Kanunay adunay dugang nga makat-unan sa pagprograma, ug ako nagtuo nga gikuniskunis ra nako ang sulud sa hilisgutan sa pagsabut. Unsa ang ubang lebel sa pagsabot nga imong nadiskobrehan sa mga katuigan sa pagtrabaho sa code? Unsa nga mga desisyon ang imong gihimo nga adunay positibo nga epekto sa kalidad sa code ug aplikasyon? Unsa nga mga desisyon ang nahimong sayop ug nagtudlo kanimo og usa ka bililhong leksyon? Ipakigbahin ang imong kasinatian sa mga komento.

Source: www.habr.com

Idugang sa usa ka comment