Usikubali kuendeleza kitu usichokielewa

Usikubali kuendeleza kitu usichokielewa

Tangu mwanzoni mwa 2018, nimekuwa nikishikilia nafasi ya kiongozi/bosi/mkuzaji kiongozi kwenye timu - iite unavyotaka, lakini jambo la msingi ni kwamba ninawajibika kikamilifu kwa mojawapo ya moduli na kwa watengenezaji wote wanaofanya kazi. juu yake. Nafasi hii inanipa mtazamo mpya juu ya mchakato wa maendeleo, kwani ninahusika katika miradi zaidi na kushiriki kikamilifu katika kufanya maamuzi. Hivi majuzi, shukrani kwa mambo haya mawili, ghafla niligundua ni kiasi gani kipimo cha uelewa kinaathiri msimbo na matumizi.

Hoja ninayotaka kusema ni kwamba ubora wa nambari (na bidhaa ya mwisho) inahusiana kwa karibu na jinsi watu wanaounda na kuandika kanuni wanafahamu kile wanachofanya.

Huenda unafikiria sasa hivi, “Asante, Cap. Bila shaka, itakuwa nzuri kuelewa unachoandika kwa ujumla. La sivyo, unaweza kuajiri kundi la tumbili kugonga funguo za kiholela na kuziacha hivyohivyo.” Na wewe ni sahihi kabisa. Ipasavyo, ninaichukulia kuwa rahisi kwamba unagundua kuwa kuwa na wazo la jumla la kile unachofanya ni muhimu. Hii inaweza kuitwa kiwango cha sifuri cha uelewa, na hatutachambua kwa undani. Tutaangalia kwa undani ni nini hasa unahitaji kuelewa na jinsi inavyoathiri maamuzi unayofanya kila siku. Ikiwa ningejua mambo haya mapema, ingeniokoa muda mwingi uliopotea na nambari za kutiliwa shaka.

Ingawa hutaona mstari mmoja wa msimbo hapa chini, bado ninaamini kuwa kila kitu kinachosemwa hapa ni muhimu sana kwa kuandika msimbo wa hali ya juu na wa kuelezea.

Kiwango cha kwanza cha ufahamu: Kwa nini haifanyi kazi?

Wasanidi programu kwa kawaida hufikia kiwango hiki mapema sana katika taaluma zao, wakati mwingine hata bila usaidizi wowote kutoka kwa wengine - angalau katika uzoefu wangu. Fikiria kuwa umepokea ripoti ya hitilafu: baadhi ya kazi katika programu haifanyi kazi, inahitaji kurekebishwa. Utaendeleaje?

Mpango wa kawaida unaonekana kama hii:

  1. Tafuta kipande cha nambari ambacho kinasababisha shida (jinsi ya kufanya hivyo ni mada tofauti, ninaifunika kwenye kitabu changu kuhusu nambari ya urithi)
  2. Fanya mabadiliko kwenye kijisehemu hiki
  3. Hakikisha kuwa hitilafu imerekebishwa na hakuna makosa ya urekebishaji yametokea

Sasa hebu tuzingatie hatua ya pili - kufanya mabadiliko kwa kanuni. Kuna njia mbili za mchakato huu. Ya kwanza ni kuchunguza ni nini hasa kinachotokea katika msimbo wa sasa, kutambua kosa na kurekebisha. Pili: songa kwa kuhisi - ongeza, sema, +1 kwa taarifa ya masharti au kitanzi, angalia ikiwa kazi inafanya kazi katika hali inayotakiwa, kisha jaribu kitu kingine, na kadhalika ad infinitum.

Njia ya kwanza ni sahihi. Kama Steve McConnell anaelezea katika kitabu chake Code Complete (ambacho ninapendekeza sana, kwa njia), kila wakati tunapobadilisha kitu kwenye msimbo, tunapaswa kuwa na uwezo wa kutabiri kwa ujasiri jinsi itaathiri programu. Ninanukuu kutoka kwa kumbukumbu, lakini ikiwa hitilafu haifanyi kazi jinsi ulivyotarajia, unapaswa kuogopa sana na unapaswa kuhoji mpango wako wote wa utekelezaji.

Ili kufanya muhtasari wa kile ambacho kimesemwa, ili kufanya urekebishaji mzuri wa hitilafu ambao hauharibu ubora wa msimbo, unahitaji kuelewa muundo mzima wa msimbo na chanzo cha tatizo maalum.

Kiwango cha pili cha ufahamu: Kwa nini inafanya kazi?

Kiwango hiki kinaeleweka kidogo kwa angavu kuliko ile iliyotangulia. Mimi, nikiwa bado msanidi wa novice, nilijifunza shukrani kwa bosi wangu, na baadaye nikaelezea mara kwa mara kiini cha jambo hilo kwa wageni.

Wakati huu, hebu tufikirie kuwa ulipokea ripoti mbili za hitilafu kwa wakati mmoja: ya kwanza ni kuhusu hali A, ya pili ni kuhusu hali B. Katika hali zote mbili, kitu kibaya kinatokea. Ipasavyo, unashughulikia mdudu wa kwanza kwanza. Kwa kutumia kanuni tulizounda kwa uelewa wa Kiwango cha XNUMX, unachimba ndani kabisa msimbo unaohusiana na tatizo, utambue ni kwa nini husababisha programu kufanya kazi jinsi inavyofanya katika Scenario A, na kufanya marekebisho yanayofaa ambayo hutoa matokeo unayotaka. . Kila kitu kinakwenda vizuri.

Kisha unasonga mbele hadi kwenye kisa B. Unarudia kisa hicho kwa kujaribu kuzua kosa, lakini—mshangao! - sasa kila kitu kinafanya kazi kama inavyopaswa. Ili kuthibitisha ubashiri wako, unatengua mabadiliko uliyofanya wakati unashughulikia hitilafu A, na hitilafu B inarudi. Bugfix yako ilitatua matatizo yote mawili. Bahati nzuri!

Hukutegemea hili hata kidogo. Umekuja na njia ya kurekebisha hitilafu katika hali A na hujui kwa nini ilifanya kazi kwa hali B. Katika hatua hii, inavutia sana kufikiri kwamba kazi zote mbili zimekamilika kwa ufanisi. Hii ni mantiki kabisa: hatua ilikuwa kuondoa makosa, sivyo? Lakini kazi bado haijakamilika: bado unapaswa kufahamu kwa nini matendo yako yalisahihisha makosa katika hali B. Kwa nini? Kwa sababu inaweza kuwa inafanyia kazi kanuni zisizo sahihi, na kisha utahitaji kutafuta njia nyingine ya kutoka. Hapa kuna mifano michache ya kesi kama hizi:

  • Kwa kuwa suluhu haikulengwa kwa makosa B, kwa kuzingatia mambo yote, unaweza kuwa umevunja chaguo la kukokotoa la C bila kujua.
  • Inawezekana pia kuna mdudu wa tatu anayenyemelea mahali fulani, anayehusiana na kazi sawa, na kurekebisha mdudu wako inategemea kwa utendakazi sahihi wa mfumo katika hali B. Kila kitu kinaonekana vizuri sasa, lakini siku moja mdudu huyu wa tatu atatambuliwa na kurekebishwa. Kisha katika hali B hitilafu itatokea tena, na ni vizuri ikiwa tu huko.

Haya yote yanaongeza fujo kwenye msimbo na siku moja yatakuangukia kichwani - kuna uwezekano mkubwa katika wakati usiofaa zaidi. Itabidi uongeze nguvu zako za kujilazimisha kutumia muda kuelewa kwa nini kila kitu kinaonekana kufanya kazi, lakini inafaa.

Kiwango cha tatu cha ufahamu: Kwa nini inafanya kazi?

Ufahamu wangu wa hivi majuzi unahusiana haswa na kiwango hiki, na labda ndicho ambacho kingenipa faida kubwa ikiwa ningekuja kwa wazo hili mapema.

Ili kuifanya iwe wazi zaidi, hebu tuangalie mfano: moduli yako inahitaji kufanywa iendane na chaguo la kukokotoa X. Hujui hasa chaguo la kukokotoa X, lakini uliambiwa kwamba ili kuendana nayo unahitaji kutumia mfumo wa F. Nyingine moduli zinazounganishwa na X hufanya kazi naye haswa.

Nambari yako haijawasiliana na mfumo wa F kabisa tangu siku ya kwanza ya maisha yake, kwa hivyo kutekeleza haitakuwa rahisi sana. Hii itakuwa na madhara makubwa kwa baadhi ya sehemu za moduli. Hata hivyo, unajiweka katika maendeleo: unatumia wiki kuandika msimbo, kupima, kusambaza matoleo ya majaribio, kupata maoni, kurekebisha makosa ya urekebishaji, kugundua matatizo yasiyotarajiwa, kutotimiza muda uliokubaliwa hapo awali, kuandika kanuni zaidi, kupima, kupata mawasiliano ya maoni, kurekebisha makosa ya urekebishaji - yote haya ili kutekeleza mfumo wa F.

Na wakati fulani ghafla unatambua - au labda kusikia kutoka kwa mtu - kwamba labda mfumo F hautakupa upatanifu na kipengele X kabisa. Labda wakati huo wote na juhudi ziliwekwa vibaya kwa hilo.

Kitu kama hicho kilitokea wakati mmoja nilipokuwa nikifanya kazi kwenye mradi ambao niliwajibika. Kwa nini hili lilitokea? Kwa sababu nilikuwa na uelewa mdogo wa kazi X ilikuwa na jinsi inavyohusiana na mfumo F. ​​Je, nilipaswa kufanya nini? Uliza mtu anayekabidhi kazi ya ukuzaji aeleze kwa uwazi jinsi hatua iliyokusudiwa inaleta matokeo yanayotarajiwa, badala ya kurudia tu kile kilichofanywa kwa moduli zingine au kuchukua neno lake kwa hilo kwamba hiki ndicho kipengele X kinahitaji kufanya.

Uzoefu wa mradi huu ulinifundisha kukataa kuanza mchakato wa maendeleo hadi tupate uelewa wa kutosha wa kwa nini tunaombwa kufanya mambo fulani. Kataa moja kwa moja. Unapopokea kazi, msukumo wa kwanza ni kuchukua mara moja ili usipoteze muda. Lakini sera ya "kufungia mradi hadi tupate maelezo yote" inaweza kupunguza muda uliopotea kwa amri za ukubwa.

Hata kama wanajaribu kukuwekea shinikizo, kukulazimisha kuanza kazi, ingawa hauelewi sababu ya hii, pinga. Kwanza, tambua kwa nini unapewa kazi kama hiyo, na uamue ikiwa hii ndiyo njia sahihi ya kufikia lengo. Ilinibidi kujifunza haya yote kwa njia ngumu - natumai mfano wangu utafanya maisha kuwa rahisi kwa wale wanaosoma hii.

Kiwango cha nne cha uelewa: ???

Daima kuna mengi ya kujifunza katika upangaji programu, na ninaamini nimekuna tu uso wa mada ya kuelewa. Je, ni viwango gani vingine vya uelewa umegundua kwa miaka mingi ya kufanya kazi na msimbo? Ulifanya maamuzi gani ambayo yalikuwa na matokeo chanya kwa ubora wa kanuni na matumizi? Ni maamuzi gani ambayo hayakuwa sawa na kukufundisha somo muhimu? Shiriki uzoefu wako katika maoni.

Chanzo: mapenzi.com

Kuongeza maoni