Calm Hill My Random Thoughts

ပြဿနာရှင်းတတ်ဖို့အရေးကြီးတယ်

Software Development လုပ်တဲ့လူတစ်ယောက်အနေနဲ့ လိုအပ်တဲ့ ကျွမ်းကျင်မှု့တွေ အမျိုးမျိုးရှိပါတယ် ပထမဆုံးအနေနဲ့ လူလိုတွေးတာကို ဖျောက်ပြီးတော့ ကွန်ပျူတာအလုပ်လုပ်သလို တွေးတတ်ရပါတယ် ဒုတိယအနေနဲ့ ကွန်ပျူတာအလုပ်လုပ်သလို ခိုင်းနိုင်ဖို့အတွက် Programming Language တစ်ခုခုကို အရင်ဆုံးကျွမ်းကျင်အောင် လေ့လာရပါတယ် တတိယအနေနဲ့က နမူနာပြဿနာအတု တွေကိုဖြေရှင်း ကြည့်ရပါတယ်။ နမူနာပြဿနာအတုဆိုရာမှာ ကိုယ်တိုင်က System တစ်ခုသတ်မှတ်ပြီး Implement လုပ်ကြည့်ရပါမယ် ဥပမာပြောရရင် Programming Language တစ်ခုလေ့လာအပြီးမှာ အဲဒီ့ Programming Language ကိုသုံးပြီးတော့ System တစ်ခုရေးကြည့်တာမျိုးကို ဆိုလိုပါတယ်။

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

ဘယ်သင်တန်းကောင်းသလဲ ဆိုတဲ့အမေးတွေကို ဖြေရမယ်ဆိုရင် အပေါ်မှာပြောထားသလို သင်ယူမယ့်လူအနေနဲ့ ပထမနဲ့ တတိယ အဆင့်နှစ်ဆင့်ကို ကိုယ်တိုင်သင်ယူရမယ်ဆိုတာ သဘောပေါက်ရင် ဘယ်သင်တန်းမှာသင်သင် အတူတူပါပဲ။ ချော့သင်တဲ့နေရာမှာ ဗမာပြည်ထက် ကောင်းတဲ့နေရာ တစ်နေရာမှ မမြင်ဖူးပါဘူး ဗမာပြည်က တက္ကသိုလ်မှာ Language တစ်ခုကို တစ်နှစ်သင်ရတယ် စာသင်လအနေနဲ့တွက်ရင် ၉ လလောက်ရှိပါတယ် တတိယနှစ်အထိ Language တစ်မျိုးစီသင်ပါတယ်။ တစ်ခြားနိုင်ငံက တက္ကသိုလ်မှာ Language တစ်ခုဟာ Semester တစ်ခုပဲသင်ပါတယ် စာသင်လဟာ ၄ လလောက်ပဲရှိတယ် စာသင်ရက် ၁၅ ရက်လောက်ပဲရတယ် အနည်းဆုံး တစ်ရက်တစ်ခန်းနဲ့ အပြတ်သင်တာပါ ဗမာပြည်လို ဒီတစ်ပါတ် if နောက်တစ်ပါတ် for ဆိုပြီးသင်နိုင်တာမဟုတ်ပါ။ အဲဒါကို ဘာလို့တတ်သလဲဆိုတော့ ပရောဂျက်က အနည်းဆုံး ၄ဝ% လောက်ယူပါတယ် ဒီတော့အဲဒါမလုပ်ရင် ကျဖို့ကသေချာပါတယ် ဒီတော့သင်တာ မကောင်းလည်း ကျမှာကြောက်တော့ အတင်းတွန်းပြီး ကိုယ့်ဟာကိုယ်လုပ်ရပါတယ်။ ဗမာပြည်က တက္ကသိုလ်က အဲဒီ့လိုဖိအား မရှိတဲ့အတွက် ကိုယ့်ကိုကိုယ် တတ်အောင်လုပ်မယ်ဆိုတဲ့ ဖိအားလိုပါတယ် အဲဒါသာရှိမယ်ဆိုရင် ဘယ်မှာသင်သင် အတူတူပါပဲ။

အဲဒီ့လိုသင်ခဲ့ရင် အလုပ်မှာသုံးလို့ရပြီလားဆိုရင် သုံးစားလို့မရသေးပါဘူး ပြောရမယ်ဆိုရင် လက်သင်ပဲရှိပါသေးတယ် အလုပ်မှာက သင်တန်းမှာရေးတဲ့ ပရောဂျက်နဲ့ကွာတာက အပြင်မှာသုံးတဲ့ပြဿနာပါ သူ့သတ်မှတ်ချက်ကို မရရအောင်ရေးရပါတယ် ဒီနေရာမှာကိုယ်ရေးတဲ့ Language မှာမပါတဲ့ Features ဖြစ်ဖြစ် ရှိပေမယ့်ကိုယ်မသိတာပဲဖြစ်ဖြစ် ပြဿနာပေါင်းစုံ အမြဲတွေ့ရပါတယ် အဲဒါကိုရှင်းတဲ့နေရာမှာ ကိုယ်တတ်သလောက်နဲ့ ဖြစ်အောင်လုပ်ယူရပါတယ် အဲဒါကို Problem Solving Skill ခေါ်ပါတယ် Problem Solving Skill ဟာတစ်ယောက်နဲ့ တစ်ယောက်မတူပါ။ ပြဿနာများများကြုံတဲ့လူဟာ ဖြေရှင်းနည်းများများသိပါတယ် အဲဒါကို အတွေ့အကြုံလို့ခေါ်တာပါပဲ။ Problem Solving Skill မမြင့်ပေမယ့် ပြဿနာတက်လိုက် ဟိုလူ့မေးလိုက် ဒီလူ့မေးလိုက်နဲ့ လိမ်ဖယ်လိမ်ဖယ်နဲ့ အတွေ့အကြုံများများလာတဲ့ လူလည်းရှိတာပါပဲ။ ဒီတော့ဆိုလိုတာက အလုပ်လုပ်တယ်ဆိုရင် အတွေ့အကြုံဆိုတာက တစ်ဖြည်းဖြည်းများလာတာပါ နည်းတာနဲ့ များတာပဲကွာပါတယ် Problem Solving Skill မြင့်တဲ့လူကတော့ အလုပ်လုပ်တာ အချိန်တူရင်တောင် အတွေ့အကြုံပိုများများရမယ်ပေါ့။ ဒီတော့အလုပ်လုပ်ဖို့အတွက် Problem Solving Skill မြင့်သည်ဖြစ်စေ နိမ့်သည်ဖြစ်စေ လိုအပ်ပါတယ်။ အဲဒါမရှိရင်တော့ အလုပ်လုပ်လို့မရပါ။

အလုပ်လုပ်လို့ရပြီဆိုရင် ဘယ်လောက်အထိ တိုးတက်မလဲဆိုတာ ကြည့်သင့်သေးတယ် Implementation မှာ Problem Solving Skill မြင့်တယ် အတွေ့အကြံများတယ်ဆိုရုံနဲ့ အပြင်ကကြုံတွေ့နေတဲ့ ပြဿနာတွေကို Analyze မလုပ်နိုင်သလို ပရောဂျက်တစ်ခုကို စီမံခန့်ခွဲနိုင်ခြင်းမရှိပါ ဒီနေရာမှာ Implementation ထက်ပိုတဲ့ ဘာသာရပ်တွေ အများကြီးသင်ယူဖို့လိုပါသေးတယ် Software Engineering, Project Management, Management Information System, System Analysis and Design စသည်ဖြင့် တတ်ကျွမ်းဖို့လိုပါတယ် အဲဒါတွေကို မသင်ပဲအလုပ်လုပ်ရုံနဲ့ တတ်မယ်လို့မျှော်လင့်လို့မရပါ။ အဲဒါတွေသင်ဖူးရင် လုပ်နိုင်ပြီလားဆိုတော့လည်း မဟုတ်ပါ ဒီနေရာမှာလည်း သင်ထားတာကို သင့်လျော်တဲ့ပြဿနာမှာ သုံးတတ်တဲ့ Problem Solving Skill ရှိဖို့လိုအပ်ပါတယ်။ အဲဒါတွေမသင်ဖူးရင် ပြဿနာမရှင်းတတ်ဖူးလားဆိုတော့ အဲဒီ့လိုလည်းမဟုတ်ပါ မြင်ဖူးတဲ့ပြဿနာတော့ ရှင်းတတ်ကောင်း ရှင်းတတ်ပါလိမ့်မယ် သို့ပေမယ့် ရှုပ်ထွေးတဲ့ပြဿနာတွေ ရှင်းနိုင်လိမ့်မည်မဟုတ်ပါ Implementation ပြဿနာမဟုတ်တဲ့အတွက် ဒါလေးမရေးတတ်လို့ဆိုပြီး ဖိုရမ်မှာမေးလို့လည်း မရတော့ပါ။ ဒီအရာတွေကို Management Problem Solving Skill လို့နာမည်တပ်လိုက်ပါ့မယ် ဒါတွေမကျွမ်းကျင်ပဲ သက်ဆိုင်ရာဌာနရဲ့ Management Level ကိုမရောက်နိုင်ပါ။

ဒါတွေကတော့ လိုအပ်တဲ့ Technical Skill တွေကိုပြောတာပါ ဒါတွေနဲ့တော့ မလုံလောက်သေးပါဘူး အခြားသော Communication, Team Work စသည်ဖြင့်လိုအပ်တဲ့ Skill တွေရှိဦးမှာပါ။ နောက်တစ်ခုက Technical ပဲသိရှိပြီး စီးပွားရေးအမြင်မရှိရင်လည်း Software Developement လုပ်ငန်းတစ်ခုနဲ့ ငွေရှာနိုင်မယ့်လူ ဖြစ်မလာပါဘူး သူများဆီမှာအလုပ်လုပ်တဲ့ ဝန်ထမ်းပဲဖြစ်နိုင်ပါတယ် ရာထူးကြီးသည်ဖြစ်စေ ငယ်သည်ဖြစ်စေ အလုပ်သမားဟာ အလုပ်သမားပါပဲ။ ဒါ့ကြောင့် Software Developement နဲ့အသက်မွေးချင်တယ်ဆိုရင်တော့ ဆယ်တန်းအောင် ကျောင်းမတက်ပဲ Programming သင်ပြီးအလုပ်လုပ်လို့ရတယ်လို့ မတွေးစေချင် လခစားလုပ်ရင်တောင် ခိုင်းသမျှလုပ်ရမယ့် Implementation မှာတစ်သက်လုံး အချိန်ကုန်ခံဖို့မသင့်လျော်ပါ။ ဒါ့ကြောင့် ဘယ်နေရာရောက်ရောက် သင့်တော်တဲ့ ပညာသင်ဖို့လိုအပ်သလို သင်လို့မရတဲ့ Problem Solving Skill လည်းအရေးကြီးလှပါတယ်။