Think before You Code
ကိုယ်ပိုင် Software product မထုတ်ခင် စဉ်းစားသင့်တဲ့ အချက်တစ်ချို့

“User တွေက software ကို ဘာ programming language တွေနဲ့ ရေးထားလဲ။ ဘာ database တွေသုံးထားလဲဆိုတာကို စိတ်မဝင်စားဘူး။ သူတို့ လိုအပ်တာတွေကို ပေးနိုင်လားပဲ စဉ်းစားတယ်။”
ဒါကြောင့် Product တစ်ခုမလုပ်ခင်မှာ ပထမဆုံး ဒီအချက်သုံးချက်ကို အရင်ဆုံးစဉ်းစားရပါမယ်။
1. Product က တကယ်ပဲ target ထားတဲ့ အသုံးပြုသူတွေရဲ့ ပြဿနာတွေကို ဖြေရှင်းပေးနိုင်လား။ (Product တစ်ခုကို တည်ဆောက်တဲ့ အခါမှာ ကိုယ်လိုချင်တာ၊ ကိုယ်ဖြစ်ချင်တာကို လုပ်တာထက် ဈေးကွက်လိုအပ်ချက် နဲ့ ဈေးကွက်ထဲက အသုံးပြုတွေရဲ့ လိုအပ်ချက်တွေနဲ့ ရှိပြီးသား product တွေမှာ အသုံးပြုသူတွေ အဆင်မပြေတဲ့ ပြဿနာတွေကို research ပြုလုပ်ပြီး ကိုယ့် Product က User တွေအတွက် သူတို့ရဲ့ ပြဿနာတွေကို ဖြေရှင်းပေးနိုင်ဖို့ လိုပါတယ်။ ဒါမှပဲ အသုံးပြုသူများမှာပေါ့။ ကိုယ်ကြိုက်တာ ကိုယ်လုပ်ရင် ကိုယ်တစ်ယောက်ထဲ သုံးပေါ့ :3။
2. Product ရဲ့ အဓိက ဦးတည်ချက်ကဘာလဲ။ (အသုံးပြုသူအများကြီးလိုချင်တာနဲ့ ဟို feature လဲထည့် ဒီ feature လဲ ထည့်မယ်ဆိုတာမျိုးထက် target ထားတဲ့ user တွေရဲ့ လိုအပ်ချက်တွေကို ဖြေရှင်းပေးနိုင်တဲ့ feature မျိုးတွေကို ဦးစားပေးထည့်ထားသငိ့ပါတယ်။)
3. English လိုပြောရမယ်ဆိုရင်တော့ flawless workflow မြန်မာလိုဆိုရင်တော့ အဆင်ပြေပြေ မြန်မြန်ဆန်ဆန် မလိုအပ်တာတာတွေ အရမ်းမပါတဲ့ software မျိုး။ (စစ်တမ်းတွေအရ သုံးစက္ကန့်ထပ်ပိုပြီးစောင့်ရတဲ့ အခါ အသုံးပြုသူတွေက စိတ်မရှည်ဘဲ ပြန်ထွက်သွားကြပါတယ်တဲ့။ မြန်မာပြည်မှာတော့ အဝိုင်းလည်နေတာနဲ့ အသားကျနေတာမို့ ပြဿနာမရှိပေမဲ့ အဝိုင်းလည်တာက ကောင်းတဲ့အရာတစ်ခုတော့ မဟုတ်ပါဘူး။ ဥပမာပြောရရင် အရင် Aya မှာ ငွေထုတ်ဖို့ token တွေယူတုန်းက တော်တော်စောင့်ရတာမျိုးပေါ့။ အာ့တုန်းက ဘယ်သူမှမယူချင်ကြပါဘူး။ မဖြစ်မနေမို့သာယူခဲ့ကြရတာမျိုးပါ။ ဒါကြောင့် Software တစ်ခုမှာ Performance ကိုလဲ ဂရုစိုက်သင့်ပါတယ်။ နောက်ထပ်ကတော့ မလိုအပ်တဲ့အဆင့်တွေ အရမ်းများနေတာ။ ဘယ်လိုမျိုးလဲဆိုရင် ကိုယ်ရဲ့ software က note taking app တစ်ခုဆိုပါတော့။ ဒါဆိုရင် အသုံးပြုသူက အကောင့်တစ်ခုဖွင့်တဲ့အခါ အဓိက လိုအပ်တာက mail နဲ့ password ပေါ့။ ဒါပေမဲ့ ကျွန်တော်တို့က ဧည့်စာရင်းစစ်သလိုမျိုး မလိုတာတွေအများကြီး ဖြည့်သွင်းခိုင်းတာမျိုး မလိုအပ်တဲ့အဆင့်တွေများမနေသင့်ပါဘူး။)
အနှစ်ချုပ်ရရင် ကိုယ့် Software / Product က target user တွေရဲ့ လိုအပ်ချက်တွေကို ဖြေရှင်းပေးနိုင်ရင် software ကို လူသုံးများလာမှာပါပဲ။ အသုံးပြုသူတွေက ကျွန်တော်တို့ software ကို ဘာ programming language နဲ့ ရေးထားလဲဆိုတာတွေ database ဘာသုံးထားလဲ ဆိုတာတွေလဲ ဂရုမစိုက်ပါဘူး။ သူတို့ လိုချင်တာကို ပေးနိုင်လား သူတို့ ဒီ software ကို အဆင်ပြေပြေ performance ကောင်းကောင်းသုံးနိုင်လား။ သူတို့လိုအပ်ချက်တွေ ဖြည့်ပေးနိုင်တဲ့ software တစ်ခုဆိုရင် သုံးကြမှာပါပဲ။
Bonus:
Developer တွေအနေနဲ့ software တစ်ခုတည်ဆောက်တဲ့အခါ ကိုက်ညီတဲ့ Tech Stack ကို ရွေးချယ်ဖို့ကလဲအရေးကြီးပါတယ်။ Performance အပြင် ရေရှည်အတွက်အဆင်ပြေမဲ့ နည်းပညာကိုပါ တစ်ခါထဲရွေးချယ်ထားသင့်ပါတယ်။ Codebase ကို clean code ဖြစ်ဖို့နဲ့ ရေရှည်အတွက် maintenance ပြုလုပ်ရလွယ်အောင် feature အသစ်တွေကို extend ပြုလုပ်ရလွယ်အောင် အစထဲက သင့်လျော်တဲ့ design pattern တွေကို ရွေးချယ်ပြီး code base ကို တည်ဆောက်ထားသင့်ပါတယ်။