သင်နားမလည်သောအရာကို တီထွင်ရန်သဘောမတူပါ။

သင်နားမလည်သောအရာကို တီထွင်ရန်သဘောမတူပါ။

2018 ခုနှစ်အစကတည်းက ကျွန်ုပ်သည် အဖွဲ့တွင် ဦးဆောင်သူ/သူဌေး/ခေါင်းဆောင် ဆော့ဖ်ဝဲရေးသားသူရာထူးကို ကိုင်စွဲထားသည် - သင်အလိုရှိသောအရာကို ခေါ်ပါ၊ သို့သော် အဓိကအချက်မှာ modules တစ်ခုနှင့် အလုပ်လုပ်သော developer များအားလုံးအတွက် ကျွန်ုပ်မှာ လုံး၀ တာဝန်ရှိပါသည်။ အဲဒီအပေါ်မှာ ဤရာထူးသည် ကျွန်ုပ်အား ပရောဂျက်များပိုမိုတွင်ပါ၀င်ပြီး ဆုံးဖြတ်ချက်ချရာတွင် ပိုမိုတက်ကြွစွာပါဝင်သောကြောင့် ဖွံ့ဖြိုးတိုးတက်ရေးလုပ်ငန်းစဉ်အပေါ် ရှုထောင့်အသစ်တစ်ခုပေးပါသည်။ မကြာသေးမီက ဤအရာနှစ်ခုကြောင့် နားလည်မှုအတိုင်းအတာသည် ကုဒ်နှင့် အပလီကေးရှင်းအပေါ် မည်မျှအကျိုးသက်ရောက်သည်ကို ကျွန်ုပ် ရုတ်တရက် သဘောပေါက်လိုက်ပါသည်။

ကျွန်တော်ပြောချင်တာက ကုဒ်ရဲ့အရည်အသွေး (နောက်ဆုံးထုတ်ကုန်) ဟာ ကုဒ်ကို ဒီဇိုင်းရေးဆွဲပြီး ရေးနေသူတွေဟာ သူတို့လုပ်နေတာတွေကို သိထားပုံနဲ့ အနီးကပ်ဆက်စပ်နေတယ်ဆိုတာပါပဲ။

"ကျေးဇူးတင်ပါတယ် Cap. ယေဘူယျအားဖြင့် မင်းဘာတွေရေးနေတယ်ဆိုတာ နားလည်ဖို့ကောင်းလိမ့်မယ်။ မဟုတ်ရင် မင်း မထင်သလို သော့ခတ်ပြီး ထားခဲ့ဖို့ မျောက်အုပ်စုကို မင်းလည်း ငှားနိုင်တယ်။" မင်းက လုံးဝမှန်တယ်။ ထို့ကြောင့်၊ သင်လုပ်နေသောအရာနှင့် ပတ်သက်၍ ယေဘူယျစိတ်ကူးရှိရန် လိုအပ်ကြောင်း သင်သဘောပေါက်ကြောင်း ကျွန်ုပ်လက်ခံပါသည်။ ယင်းကို နားလည်မှု သုညအဆင့်ဟု ခေါ်နိုင်ပြီး ၎င်းကို ကျွန်ုပ်တို့ အသေးစိတ် ခွဲခြမ်းစိတ်ဖြာမည်မဟုတ်ပါ။ သင်နေ့စဉ်ပြုလုပ်သော ဆုံးဖြတ်ချက်များအပေါ် မည်ကဲ့သို့ နားလည်ရန် လိုအပ်ကြောင်းနှင့် ၎င်းသည် သင်နေ့စဉ်ပြုလုပ်သော ဆုံးဖြတ်ချက်များအပေါ် မည်ကဲ့သို့ အကျိုးသက်ရောက်မှုရှိသည်ကို ကျွန်ုပ်တို့ အသေးစိတ်ကြည့်ရှုပါမည်။ ဒီအချက်တွေကို ကြိုသိခဲ့ရင်၊ အချိန်ကုန်ပြီး မေးခွန်းထုတ်စရာကုဒ်တွေကို အများကြီး သက်သာစေပါလိမ့်မယ်။

အောက်တွင်ဖော်ပြထားသော ကုဒ်မျဉ်းတစ်ကြောင်းတည်းကို မမြင်ရသော်လည်း၊ ဤနေရာတွင် ပြောခဲ့သမျှသည် အရည်အသွေးမြင့်၊ ဖော်ပြနိုင်သော ကုဒ်ရေးရန်အတွက် အလွန်အရေးကြီးကြောင်း ကျွန်ုပ်ယုံကြည်ဆဲဖြစ်သည်။

ပထမအဆင့် နားလည်မှု- ဘာကြောင့် အလုပ်မလုပ်တာလဲ။

ဆော့ဖ်ဝဲရေးသားသူများသည် များသောအားဖြင့် ၎င်းတို့၏အသက်မွေးဝမ်းကြောင်းလုပ်ငန်းတွင် ဤအဆင့်ကို စောစီးစွာရောက်ရှိတတ်သည်၊ တစ်ခါတစ်ရံတွင် အခြားသူများထံမှအကူအညီမပါဘဲပင်၊ အနည်းဆုံး ကျွန်ုပ်၏အတွေ့အကြုံအရ၊ ချွတ်ယွင်းချက်အစီရင်ခံစာကို သင်လက်ခံရရှိကြောင်း မြင်ယောင်ကြည့်ပါ- အပလီကေးရှင်းရှိ အချို့သောလုပ်ဆောင်ချက်သည် အလုပ်မလုပ်ပါ၊ ၎င်းကို ပြုပြင်ရန်လိုအပ်သည်။ ဘယ်လိုဆက်လုပ်မလဲ။

စံအစီအစဉ်သည် ဤကဲ့သို့ ဖြစ်သည်-

  1. ပြဿနာဖြစ်စေတဲ့ ကုဒ်အပိုင်းကို ရှာပါ (ဒါက သီးခြားအကြောင်းအရာတစ်ခုပါ၊ အမွေအနှစ်ကုဒ်အကြောင်း ကျွန်တော့်စာအုပ်ထဲမှာ ပါပါတယ်)
  2. ဤအတိုအထွာအတွက် အပြောင်းအလဲများ ပြုလုပ်ပါ။
  3. ချွတ်ယွင်းချက်ကို ပြင်ဆင်ပြီး နောက်ပြန်ဆုတ်မှု အမှားအယွင်းများ မဖြစ်ပေါ်ကြောင်း သေချာပါစေ။

အခု ဒုတိယအချက်ကို အာရုံစိုက်ကြည့်ရအောင် - ကုဒ်ကို အပြောင်းအလဲလုပ်ပါ။ ဤလုပ်ငန်းစဉ်အတွက် ချဉ်းကပ်မှု နှစ်ခုရှိသည်။ ပထမအချက်မှာ လက်ရှိကုဒ်တွင် ဖြစ်ပျက်နေသည့် အတိအကျကို စေ့စေ့စပ်စပ် လေ့လာရန်၊ အမှားကို ဖော်ထုတ်ပြီး ၎င်းကို ပြုပြင်ရန် ဖြစ်သည်။ ဒုတိယ- ခံစားမှုအလိုက် ရွှေ့ပါ - သတ်မှတ်အခြေအနေဆိုင်ရာ ထုတ်ပြန်ချက် သို့မဟုတ် ကွင်းဆက်တစ်ခုသို့ ပေါင်းထည့်ရန်၊ +1 ဟုပြောပါ၊ လုပ်ဆောင်ချက်သည် လိုချင်သောအခြေအနေတွင် အလုပ်လုပ်ခြင်းရှိမရှိ ကြည့်ရှုပါ၊ ထို့နောက် အခြားတစ်ခုခုကို စမ်းကြည့်ပါ၊ အစရှိသည်ဖြင့် ကြော်ငြာအဆုံးအဖြတ်ကို ကြည့်ပါ။

ပထမချဉ်းကပ်ပုံက မှန်တယ်။ Steve McConnell က သူ့ရဲ့စာအုပ် Code Complete (တစ်နည်းအားဖြင့် ကျွန်တော်အကြံပြုလိုပါတယ်) မှာ ရှင်းပြထားတဲ့အတိုင်း Code မှာ တစ်ခုခုကို ပြောင်းလဲလိုက်တိုင်း အပလီကေးရှင်းကို ဘယ်လိုအကျိုးသက်ရောက်မယ်ဆိုတာ ယုံကြည်စိတ်ချစွာ ခန့်မှန်းနိုင်သင့်ပါတယ်။ ကျွန်ုပ်သည် မှတ်ဉာဏ်မှ ကိုးကားနေပါသည်၊ သို့သော် ချွတ်ယွင်းချက်တစ်ခုသည် သင်မျှော်လင့်ထားသည့်အတိုင်း အလုပ်မဖြစ်ပါက သင်သည် အလွန်ထိတ်လန့်နေသင့်ပြီး သင်၏လုပ်ဆောင်မှုအစီအစဉ်တစ်ခုလုံးကို မေးခွန်းထုတ်သင့်ပါသည်။

ပြောထားသည်များကို အကျဉ်းချုပ်ရရန်၊ ကုဒ်၏အရည်အသွေးကို မထိခိုက်စေသော ကောင်းမွန်သော bug ပြုပြင်ခြင်းကို လုပ်ဆောင်ရန်အတွက်၊ သင်သည် ကုဒ်၏တည်ဆောက်ပုံတစ်ခုလုံးနှင့် သီးခြားပြဿနာ၏အရင်းအမြစ်ကို နားလည်ရန်လိုသည်။

ဒုတိယအဆင့် နားလည်မှု- ၎င်းသည် အဘယ်ကြောင့် အလုပ်လုပ်သနည်း။

ဤအဆင့်သည် ယခင်အဆင့်ထက် အလိုလိုနားလည်မှု နည်းပါးသည်။ ကျွန်ုပ်သည် အတွေ့အကြုံမရှိသေးသော ဆော့ဖ်ဝဲရေးသားသူဖြစ်သေးစဉ်တွင် ၎င်းအား ကျွန်ုပ်၏သူဌေး၏ကျေးဇူးကြောင့် သင်ယူခဲ့ပြီး နောက်ပိုင်းတွင် လူသစ်များအား ကိစ္စ၏အနှစ်သာရကို ထပ်ခါတလဲလဲ ရှင်းပြခဲ့သည်။

ဤတစ်ကြိမ်တွင် သင်သည် အမှားအယွင်းအစီရင်ခံစာနှစ်ခုကို တစ်ပြိုင်နက်လက်ခံရရှိကြောင်း စိတ်ကူးကြည့်ကြပါစို့။ ပထမတစ်ခုသည် ဇာတ်ညွှန်း A အကြောင်း၊ ဒုတိယမှာ ဇာတ်လမ်း B အကြောင်းဖြစ်သည်။ ဇာတ်လမ်းနှစ်ရပ်စလုံးတွင် တစ်ခုခုမှားယွင်းနေပါသည်။ ထို့ကြောင့် သင်သည် ပထမဆုံး bug ကို ဦးစွာ ကိုင်တွယ်ဖြေရှင်းပါ။ Level 1 နားလည်မှုအတွက် ကျွန်ုပ်တို့ဖန်တီးထားသော အခြေခံမူများကို အသုံးပြုခြင်းဖြင့် သင်သည် ပြဿနာနှင့်သက်ဆိုင်သည့်ကုဒ်ကို နက်ရှိုင်းစွာ တူးဆွပြီး၊ ၎င်းသည် အပလီကေးရှင်းကို ဇာတ်လမ်း A တွင် အဘယ်ကြောင့် ပြုမူစေသည်ကို အဖြေရှာပြီး သင်မျှော်လင့်ထားသည့်ရလဒ်ကို ထွက်ပေါ်လာစေမည့် ကျိုးကြောင်းဆီလျော်သော ပြုပြင်ပြောင်းလဲမှုများ ပြုလုပ်ပါ။ . အရာအားလုံးက ကြီးသွားသည် ။

ထို့နောက် သင်သည် ဇာတ်လမ်း B သို့ ဆက်သွားပါ။ အမှားတစ်ခုကို နှိုးဆွရန် ကြိုးပမ်းမှုဖြင့် ဇာတ်လမ်းကို သင် ထပ်ခါတလဲလဲ လုပ်ပါ၊ သို့သော်—အံ့အားသင့်စရာပင်။ - အခုတော့ အားလုံးက လုပ်သင့်သလောက်လုပ်တယ်။ သင်၏ ခန့်မှန်းချက်ကို အတည်ပြုရန်၊ သင်သည် bug A တွင် လုပ်ဆောင်နေစဉ် သင်ပြုလုပ်ခဲ့သော အပြောင်းအလဲများကို ပြန်ဖျက်လိုက်ပြီး bug B ပြန်လာပါသည်။ သင်၏အမှားပြင်ဆင်မှုသည် ပြဿနာနှစ်ခုလုံးကို ဖြေရှင်းပေးသည်။ ကံကောင်းတယ်!

ဒါကို မင်း လုံးဝ အားမကိုးခဲ့ဘူး။ ဇာတ်လမ်း A တွင် အမှားပြင်ဆင်ရန် နည်းလမ်းတစ်ခုကို သင်တွေ့ရှိထားပြီး ၎င်းသည် ဇာတ်လမ်း B အတွက် အဘယ်ကြောင့် လုပ်ဆောင်ခဲ့သည်ကို မသိရှိပါ။ ဤအဆင့်တွင်၊ အလုပ်နှစ်ခုစလုံးကို အောင်မြင်စွာပြီးမြောက်ပြီဟု ထင်မြင်ရန် အလွန်ဆွဲဆောင်မှုရှိပါသည်။ ဒါက တော်တော်ယုတ္တိတန်ပါတယ်- အချက်ကတော့ အမှားတွေကို ဖယ်ရှားပစ်ဖို့ပဲ မဟုတ်လား။ ဒါပေမယ့် အလုပ်ကမပြီးသေးပါဘူး- ဇာတ်လမ်း B မှာ မင်းရဲ့လုပ်ဆောင်ချက်တွေက အမှားကို ဘာကြောင့်ပြင်ရမလဲဆိုတာ အဖြေရှာရပါဦးမယ်။ မှားယွင်းသောအခြေခံမူများပေါ်တွင်အလုပ်လုပ်နေသောကြောင့်၊ ထို့နောက်သင်ထွက်လမ်းကိုရှာဖွေရန်လိုအပ်လိမ့်မည်။ ဤသည်မှာ ဤကဲ့သို့သော ကိစ္စများ၏ ဥပမာအချို့ဖြစ်သည်။

  • အဖြေကို error B နှင့် အံဝင်ခွင်ကျမဖြစ်အောင်၊ အချက်အားလုံးကို ထည့်သွင်းစဉ်းစားသောကြောင့်၊ သင်သည် မသိလိုက်ဘဲ function C ပျက်သွားနိုင်သည်။
  • တူညီသောလုပ်ဆောင်ချက်နှင့်ဆက်စပ်သည့်တစ်နေရာရာတွင် တတိယ bug ခိုအောင်းနေနိုင်သည်၊ သင်၏ bugfix သည် scenario B တွင်စနစ်၏မှန်ကန်သောလည်ပတ်မှုအတွက်၎င်းပေါ်တွင်မူတည်သည်။ အားလုံးအဆင်ပြေနေပြီဖြစ်သော်လည်း တစ်နေ့သောအခါတွင် ဤတတိယ bug ကို သတိပြုမိပြီး ပြုပြင်သွားပါမည်။ ထို့နောက် အခြေအနေ B တွင် error ထပ်မံပေါ်ပေါက်မည်ဖြစ်ပြီး၊ ထိုနေရာတွင်သာ ရှိနေပါက ကောင်းပါသည်။

ဤအရာအားလုံးသည် ကုဒ်ကို ပရမ်းပတာဖြစ်စေပြီး တစ်နေ့နေ့တွင် သင့်ခေါင်းပေါ်သို့ ကျရောက်လိမ့်မည် - အခန့်မသင့်ဆုံးအချိန်၌ ဖြစ်နိုင်သည်။ အရာအားလုံး အလုပ်ဖြစ်ပုံရသည်ကို နားလည်ရန် အချိန်ဖြုန်းရန် သင့်စိတ်ဆန္ဒကို စုစည်းရမည်ဖြစ်ပြီး၊ သို့သော် ၎င်းသည် ထိုက်တန်ပါသည်။

တတိယအဆင့် နားလည်မှု- ၎င်းသည် အဘယ်ကြောင့် အလုပ်လုပ်သနည်း။

ကျွန်ုပ်၏ မကြာသေးမီက ထိုးထွင်းသိမြင်မှုသည် ဤအဆင့်နှင့် အတိအကျဆက်စပ်နေပြီး၊ ကျွန်ုပ်သည် ဤအကြံဉာဏ်ကို စောစောစီးစီးရခဲ့လျှင် ကျွန်ုပ်အတွက် အကျိုးအရှိဆုံးဖြစ်ပေမည်။

ပိုမိုရှင်းလင်းစေရန်၊ ဥပမာတစ်ခုအား ကြည့်ကြပါစို့- သင်၏ module သည် function X နှင့် တွဲဖက်လုပ်ဆောင်ရန် လိုအပ်ပါသည်။ သင်သည် function X နှင့် အထူးအကျွမ်းတဝင်မရှိသော်လည်း ၎င်းနှင့် တွဲဖက်အသုံးပြုနိုင်ရန် F framework ကို အသုံးပြုရန် လိုအပ်ကြောင်း သင့်အား ပြောကြားခဲ့ပါသည်။ အခြား X နှင့် ပေါင်းစပ်ထားသော မော်ဂျူးများသည် သူနှင့် အတိအကျ အလုပ်လုပ်သည်။

သင့်ကုဒ်သည် ၎င်း၏အသက်တာ၏ပထမနေ့မှစ၍ F framework နှင့် လုံးဝအဆက်အသွယ်မရသေးသောကြောင့် ၎င်းကိုအကောင်အထည်ဖော်ရန် လွယ်ကူမည်မဟုတ်ပါ။ ၎င်းသည် module ၏ အချို့သော အစိတ်အပိုင်းများအတွက် ဆိုးရွားသော အကျိုးဆက်များ ရှိလိမ့်မည်။ သို့သော် သင်သည် ဖွံ့ဖြိုးတိုးတက်မှုထဲသို့ သင်ကိုယ်တိုင် ပတ်ထားလိုက်သည်- သင်သည် ရက်သတ္တပတ်များစွာကြာ ကုဒ်ရေးခြင်း၊ စမ်းသပ်ခြင်း၊ စမ်းသပ်ဗားရှင်းများ ထုတ်ပေးခြင်း၊ တုံ့ပြန်ချက်ရယူခြင်း၊ ဆုတ်ယုတ်မှုအမှားများကို ပြင်ဆင်ခြင်း၊ ကြိုမမြင်နိုင်သော ရှုပ်ထွေးမှုများကို ရှာဖွေခြင်း၊ မူလသဘောတူထားသည့် သတ်မှတ်ရက်ကို မပြည့်မီခြင်း၊ ကုဒ်အချို့ကို ရေးသားခြင်း၊ စမ်းသပ်ခြင်း၊ တုံ့ပြန်ချက် ဆက်သွယ်မှု ရယူခြင်း၊ ဆုတ်ယုတ်မှုအမှားများကို ပြုပြင်ခြင်း - F မူဘောင်ကို အကောင်အထည်ဖော်ရန်အတွက် ဤအရာအားလုံး။

တစ်ချိန်ချိန်မှာတော့ သင်ရုတ်တရက် သဘောပေါက်သွားပါတယ် - ဒါမှမဟုတ် တစ်စုံတစ်ယောက်ဆီက ကြားတာဖြစ်နိုင်သလို framework F က သင့်ကို feature X နဲ့ လုံးဝ လိုက်ဖက်ညီမှာ မဟုတ်ဘူးဆိုတာကို ရုတ်တရက် သိလိုက်ရပါတယ်။

ကျွန်တော်တာဝန်ယူခဲ့တဲ့ ပရောဂျက်တစ်ခုမှာ အလုပ်လုပ်ရင်း တစ်ချိန်က အလားတူဖြစ်ခဲ့တာ။ ဘာကြောင့် ဒီလိုဖြစ်သွားတာလဲ။ ဘာကြောင့်လဲ ဆိုတော့ X က ဘာ function နဲ့ framework F နဲ့ ဘယ်လို ဆက်စပ်နေလဲ ဆိုတာကို နားမလည်သေးလို့ပါ ။ ဘာလုပ်သင့်လဲ။ ရည်ရွယ်ထားသော လုပ်ဆောင်ချက်သည် လိုချင်သောရလဒ်ကို မည်သို့မည်ပုံ ဖြစ်ပေါ်စေသည်ကို ရှင်းရှင်းလင်းလင်း ရှင်းပြရန် ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းတာဝန်ကို ခန့်အပ်ထားသူအား အခြား module များအတွက် လုပ်ဆောင်ခဲ့သည့်အရာများကို ထပ်ခါတလဲလဲ ပြောခြင်း သို့မဟုတ် ၎င်းသည် X လုပ်ဆောင်ရန် လိုအပ်သည်ဟူသော အင်္ဂါရပ်အတွက် ၎င်းတို့၏ စကားလုံးကို ရယူခြင်းထက် ခိုင်းစေပါ။

အချို့သော အရာများကို လုပ်ဆောင်ရန် တောင်းဆိုရခြင်းအကြောင်း ရှင်းလင်းစွာ နားလည်မှုမရမချင်း ဤပရောဂျက်၏ အတွေ့အကြုံသည် ဖွံ့ဖြိုးတိုးတက်ရေး လုပ်ငန်းစဉ်ကို စတင်ရန် ငြင်းဆန်ရန် သင်ပေးပါသည်။ ပြတ်ပြတ်သားသား ငြင်းပါ။ အလုပ်တစ်ခုကို သင်လက်ခံရရှိသောအခါတွင်၊ အချိန်မဖြုန်းမိစေရန် ပထမဆုံး တွန်းအားပေးမှုသည် ၎င်းကို ချက်ချင်းလုပ်ဆောင်ရန်ဖြစ်သည်။ သို့သော် “အသေးစိတ်အချက်အလက်အားလုံးကို မလေ့လာမချင်း ပရောဂျက်ကို အေးခဲစေသည်” မူဝါဒသည် ပြင်းအားအမှာစာများဖြင့် အချိန်ဖြုန်းခြင်းကို လျှော့ချနိုင်သည်။

သင့်အား ဖိအားပေးရန် ကြိုးစားသော်လည်း၊ ဤအတွက် ကျိုးကြောင်းဆီလျော်မှုကို သင်နားမလည်သော်လည်း အလုပ်စတင်ရန် အတင်းအကြပ် တွန်းလှန်ပါ။ ပထမဦးစွာ သင်သည် ဤကဲ့သို့ တာဝန်ပေးအပ်ရခြင်း အကြောင်းရင်းကို အဖြေရှာပြီး ဤအရာသည် ပန်းတိုင်သို့ မှန်ကန်သောလမ်းကြောင်း ဟုတ်မဟုတ် ဆုံးဖြတ်ပါ။ ဒီအရာအားလုံးကို ခက်ခက်ခဲခဲ သင်ယူခဲ့ရတယ် - ငါ့နမူနာက ဒီစာကိုဖတ်တဲ့သူတွေအတွက် ဘဝပိုမိုလွယ်ကူစေမယ်လို့ မျှော်လင့်ပါတယ်။

စတုတ္ထအဆင့် နားလည်မှု ???

ပရိုဂရမ်းမင်းမှာ သင်ယူစရာတွေ အမြဲရှိနေတယ်၊ ​​နားလည်မှုဆိုတဲ့ ခေါင်းစဉ်ရဲ့ မျက်နှာပြင်ကို ခြစ်ထုတ်လိုက်ယုံပါပဲ။ ကုဒ်ဖြင့်အလုပ်လုပ်သည့်နှစ်များအတွင်း သင်ရှာဖွေတွေ့ရှိခဲ့သည့် အခြားနားလည်မှုအဆင့်များ။ ကုဒ်နှင့် အပလီကေးရှင်းများ၏ အရည်အသွေးအပေါ် အပြုသဘောဆောင်သော သက်ရောက်မှုရှိစေမည့် မည်သည့်ဆုံးဖြတ်ချက်များကို သင်ပြုလုပ်ခဲ့သနည်း။ ဘယ်ဆုံးဖြတ်ချက်တွေက မှားသွားသလဲ၊ အဖိုးတန်သင်ခန်းစာတစ်ခု သင်ပေးတယ်။ သင့်အတွေ့အကြုံကို မှတ်ချက်များတွင် မျှဝေပါ။

source: www.habr.com

မှတ်ချက် Add