How to learn problem solving skill in programming

Thet Khine
2 min readJan 4, 2021

--

Programming လေ့လာတဲ့ beginner အများကြုံရမဲ့ problem ပေါ့။ နောက်တခုက senior ဖြစ်နေတဲ့ CRUD တဲ့ နှစ်ပါးသွားနေတဲ့ ပုဂ္ဂိုလ်များလဲကြုံမယ်ထင်ပါတယ်။

ဘာလဲဆိုတော့ problem solving skill ပေါ့။ Code ကိုဘယ်လိုရေးရမလဲ မစဉ်းစားတတ်ဘူးဖြစ်နေတယ်ပေါ့။

အဲ့တာကို ခွဲရင် ၂ပိုင်းရမယ်။ တပိုင်းက Programming Langauge အပိုင်းပေါ့ နောက်တပိုင်းကတော့ problem solving အပိုင်း။

Program ရေးတယ်ဆိုတာ programming language တခုခုသုံးပြီး problem solve ရတာဆိုတော့ ကိုယ်သုံးနေတဲ့ programming language ကို ဘယ်လိုသုံးတယ် ဘာကြောင့်သုံးတယ် ဘယ်နေရာမှာ ဘာသုံးသင့်တယ်ဆိုတဲ့ correct tool usage ပေါ့ အဲ့တာသိမှ အဆင်ပြေမယ်။

အဲ့ programming language ကိုရှင်းရင် ခေတ်အဆက်ဆက်က ပြဿနာက ဒီမှာ programming ဆိုတာ ရေးထုံး grammar synatax ကို လို.ပဲထင်နေတာ။

Semantics, Pragmatic ဆိုတာဘာမှန်းမသိဘူး အဲ့တော့ သူ. construct နဲ.သူ ဘယ်နေရာဘာသင့်တယ် ဘာလို.သုံးရမယ်မသိဘူး။

ဥပမာ Java မယ် loop 3 မျိုးရှိတယ် for, while, do အဲ့မှာ Pragmatic နည်းအရဆို အရေအတွက်ပေါ်မူတည်ပြီး သွားရင် counter controlled loop လို.ခေါ်တယ် ဒါဆို for သုံးရမယ်။ အဲ့အရေအတွက်မှာမှ အားလုံးဆိုရင် foreach ပဲ။ နောက် while, do while သည် condition controlled ပဲ အဲ့မှာမှ အနည်းဆုံး တခေါက်လုပ်ရရင် do while, မဟုတ်ရင် while ဒါသည် pragmatic ပဲ။

Programming language တှဘေယျလိုလေ့လာရမယျက ဒီမှာရေးထားတယ်။ https://www.facebook.com/thet.khine.587/posts/10205561643639982

နောက်တခုက problem solving အပိုင်း အဲ့မှာ ဘာလိုလဲဆိုတော့ domain knowledge တွေလိုတယ်။ အခြေခံတွေလိုတယ် ဘာတွေလဲဆိုတော့ computer science လိုတယ်။

ဥပမာ Problem solve လုပ်ဖို. ၁ Problem က ဘာလဲ ဆိုပါစို. database မှာ username ထပ်မထပ်စစ်တာဆိုပါစို.။ ဒါဆိုရင် background knowledge အရ database မှာ ခုနက username တွေသိမ်းတယ်၊ ဒါကို SQL နဲ.သော်လည်းကောင်း ORM နဲ.သော်လည်းကောင်း ရှာလို.ရတယ်ဆိုတာကိုသိမယ်။

အဲ့တာမို. ခုနက background knowledge လိုတယ်ဆိုတာပြောတာ။ Database အကြောင်းမသိရင် ခုနက SQL Select အကြောင်းမသိရင် ဒီ problem solve လုပ်လို.ရမှာမဟုတ်ဘူး။

နောက်တခုက problem တကယ် solve ဖို. algorithm ရေးရမယ်။ ဆိုချင်တာက username ကိုလက်ခံ ပြီးရင် အဲ့ကောင်ကို SQL query လုပ် result ထွက်လာရင် ထပ်တယ် ရှိနေတယ်ပေါ့။

အိုကေ ဒါက လွယ်တာပြောတာ တကယ်လို. user က သန်းနဲ.ချီနေတာ ဖေ့ဘုတ်လိုကောင်မျိုး performance လိုတယ် scalability လိုတယ် ဘယ်လိုလုပ်မလဲ။

ဒါဆို ခုနက Database, SQL သိတဲ့သူသည် အလုပ်မဖြစ်တော့ဘူး ဘာလို.ဆိုတော့ problem solve လုပ်ရင် အရင်ဆုံး ခေါင်းထဲမှာ အရင်ရှိထားတာတွေကနေ ဆင့်ပွားတွေးယူရတာ။

အဲ့တော့ ဘာတွေလိုမလဲ Data Structure & Algorithm တွေလေ့လာဖို.လိုမယ်။ ဒါမှ common problem တွေ ဘယ်လိုရှိတယ် သူများတွေ ဘယ်လို solve လုပ်ထားတယ် ကိုယ်က existing solution ကိုယူသုံးရင်သုံးမဟုတ်ရင် နဂိုရှိပြီးသားလေး အခြေခံပြီး idea ယူမယ် စဉ်းစားမယ် အဲ့လိုဖြစ်မယ်။

Algorithm တွေ လေ့လာလိုက်တော့နောက်တခုက problem solving skill တက်လာမယ် သူများတွေ ဒီလိုလုပ်တယ်ပေါ့ ဒီနည်းလဲရတယ် နောက်တနည်းလဲ ဖြစ်တယ်ပေါ့။

Algorithm တွေလေ့လာရင်ဘာလိုမလဲဒီမှာရေးထားတယ်( https://www.facebook.com/thet.khine.587/posts/10210015616906530)

ဒါက self taught programmer ဖြစ်အောင်ဘယ်လိုလုပ်ရမလဲရေးထားတာ

https://www.facebook.com/thet.khine.587/posts/10206651854134563

နောက် computer science ဘက်ကဆိုင်တဲ့ project တွေရေးကြည့်မယ် ဥပမာ DBMS, WebServer, Crawler, Email Client, FTP အဲ့တာတွေကနေ Compiler, OS တွေထိပေါ့။

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

--

--