အစ်ကို့လို Developer ဖြစ်အောင်ဘယ်လိုလုပ်ရမတုန်း?


အစ်ကို့လို Developer ဖြစ်အောင်ဘယ်လိုလုပ်ရမတုန်း?

ဒါက Developer တိုင်းရဲ့ အမေးခံရတာအများဆုံးဖြစ်တဲ့ မေးခွန်းတစ်ခုဖြစ်မှာပါ။ ရှင်းပြရပါများတော့ နောက်လည်း လွယ်လွယ်ကူကူ reference လုပ်လို့ရအောင် ရေးမယ်ဆိုပြီးဆုံးဖြတ်လိုက်ပြီး ဒီ blog post ကို​ရေးဖြစ်တာပါ။ ကျွန်တော်က Professional မဟုတ်လို့ အမှားပါသွားရင် ပြင်ပေးကြပါလို့ တောင်းဆိုချင်ပါတယ်။


Language

ကျွန်တော်အမြင်ပြောရမယ်ဆို Programming Language က အခုမှစလုပ်မဲ့သူအတွက် သိပ်အရေးမကြီးဘူးလို့ထင်တယ်။ ဘယ် Programming Language ပဲဖြစ်ဖြစ် တကယ်တတ်အောင်လုပ်ဖို့ပဲ။ သိသလောက်ပြောရမယ်ဆိုရင် ကိုယ်က Mobile Apps တွေရေးချင်တာဆိုရင် Android အတွက် Java နဲ့ Kotlin​ ၊​ iOS အတွက်ဆိုရင် Swift, Objective C ရှိတယ်။​ Backend ဆိုရင် PHP, Python နဲ့ Ruby အစရှိတာတွေရှိမယ်။ Game ရေးချင်သပဆိုရင် GameMaker, Unity, Unreal အစရှိတဲ့ Game Engine တွေလေ့လာလို့ရတယ်။ အရင်ဆုံး ကိုယ်ဘာလုပ်ချင်တာလဲဆိုတာကိုဆုံးဖြတ်သင့်တယ်။

Commitment

Language တစ်ခုကိုရွေးပြီးရင် တတ်ကျွမ်းတဲ့အထိလေ့လာဖို့လိုတယ်။​ သင်တန်းတော်တော်များများမှာ ကြုံဘူးကျမှာပါ။ စစတက်တာ အယောက် ၅၀ ဆိုရင်၊​ သင်တန်းလည်းပြီးရော တကယ်ကျန်ခဲ့တာ ၅-၁၀ ယောက်လောက်ပဲကျန်တယ်။ ဒီထက်ပိုဆိုးတာက သင်တန်းတွေ တစ်ခုပြီး တစ်ခုပြောင်းနေတာပဲ။​ ဘယ်တစ်ခုမှသေချာမရပဲ ယောင်လည်လည် ဖြစ်သွားတယ်။ တစ်ခါတစ်လေကျတော့လည်း ပြောင်းပြီးတော့မှ ကိုယ်ပိုသဘောကျတဲ့ language တစ်ခုကို တကယ်တတ်သွားတာမျိုးလည်းရှိပါတယ်။​ ပြောချင်တာက ကိုယ်တကယ်လုပ်တော့မယ်ဆိုရင် ဆုံးခန်းတိုင်အောင်လုပ်သင့်တယ်။ မှတ်မှတ်ရရ ကျွန်တော် Bagan Innovation Tech မှာ Android သင်တုန်းကဆို နောက်ဆုံးကျွန်တော် တစ်ယောက်ပဲကျန်ခဲ့တယ်။ ဒါပေမဲ့ သင်တန်းပြီးတဲ့အထိ တက်ခဲ့တယ်။ ဆက်စပ်ပြီးပြောရမယ်ဆိုရင် အကြိုက်ဆုံး Quote လေးတစ်ခု ရှိတယ်။

There’s no Can’t, there’s only Don’t

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

Computational Thinking

အပေါ်မှာ Language က အရေးမကြီးဘူးဆိုတော့ ဘာအရေးကြီးလဲပေါ့။​ အဓိကအရေးကြီးတာက Computational Thinking ပါ။ လွယ်လွယ်ကူကူပြောရရင် နည်းစနစ်ကျကျ တွေးခေါ်တတ်ခြင်းပေါ့။ ပုစ္ဆာတစ်ပုဒ်ကို လိုချင်တဲ့အဖြေရလာတဲ့အထိ တစ်ဆင့်ပြီးတစ်ဆင့် ဘယ်လိုတွက်ချက်ရမယ်၊​ လိုချင်တဲ့အဖြေထွက်မလာတာဘာကြောင့်လဲ အစရှိသဖြင့် တွေးတော်နိုင်ရင် ဘယ် language မှာမဆို အဆင်ပြေပါတယ်။ Computational Thinking ကိုရှင်းပြတဲ့အထဲမှာ Harvard ကပို့ချတဲ့ CS50 ကိုအကြိုက်ဆုံးပဲ။ ဒီကကျောင်းတော်တော်များများက Code ရေးတတ်အောင်သင်ပြီး တွေးခေါ်တတ်အောင် မသင်ပေးလိုက်ကြတာ တော်တော်လေးဆိုးပါတယ်။

Approaching Seniors

Seniors တွေကိုချဉ်းကပ်တတ်ဖို့လဲလိုပါသေးတယ်။ Senior အရိပ်အကဲကို ကြည့်ပြီး မေးရတာမျိုးတွေ လည်းရှိပါတယ်။ ဉပမာ error မရှင်းတတ်လို့မေးတာဆိုရင် ကိုယ်က အသေးစိတ်ရှင်းပြနိုင်ရမယ်။​ “File ထုတ်တာ error တက်နေတယ်” “ပုံကပေါ်မလာဘူး” အစရှိတဲ့ မရေမရာမေးခွန်းမျိုးမမေးမိပါစေနဲ့။ ကိုယ်က ဘာလုပ်ချင်တာ။ ဘယ် method မှာတော့ဖြစ်နေတာ၊ ဘာ Exception လဲ၊ ဘယ် library သုံးထားတာလဲ၊​ ဘယ် platform version မှာ run တာလဲ၊ ကိုယ်ဒါကို ဖြေရှင်းဖို့ ဘယ်နည်းတွေစမ်းပြီးသွားပြီလဲ အစရှိသဖြင့် အသေးစိတ်ဖြေနိုင်မှ ပြန်ဖြေပေးရတဲ့ သူအတွက်လည်း စိတ်ချမ်းသာပါတယ်။ Code ပြရမဲ့အခြေအနေမျိုးဆိုရင် လိုအပ်တဲ့နားကိုပဲ အဓိကထား copy-paste လုပ်နိုင်ပါစေ။ Seniors တွေမေးရမှာ ရှက်တတ်တယ် ဆိုရင်တော့ Google သာသုံးပါ။

Experience

Software Development က အတွေ့အကြုံရှိဖို့လိုအပ်တယ်။​ ကိုယ်က Product တစ်ခုကို အစကနေ Production Software ရောက်တဲ့အထိ လုပ်ရတဲ့ နည်းလမ်းတွေနားလည်နေရမယ်။ ဒီမှာ အကြံပေးချင်တာက ဘယ်လောက်ပဲချာတဲ့ Software ဖြစ်ပစေ၊ အစအဆုံး Public ကိုချပြနိုင်တဲ့အထိရေးကြည့်ပါ။ ကျွန်တော်ပထမဆုံး public ကိုချပြနိုင်တဲ့အထိရေးခဲ့တဲ့ app ကအမှန်ဆို တကယ်ဘာမှ သုံးစားမရတဲ့ app ပါ။ ဒါပေမဲ့ ကိုယ်က လုပ်ဖူးသွားတော့ နောက်ထပ်ဆက်ရေးရမှာ မကြောက်တော့ဘူး။ မရေမရာဖြစ်နေရာကနေ လုပ်ရဲကိုင်ရဲသွားတယ်။ ပြီးရင် အလုပ်သင်(Intern) ဝင်လုပ်ပါ။ အလုပ်သင်လုပ်လိုက်ခြင်းအားဖြင့် တကယ့် Software Development LifeCycle ကို လည်းသိသွားတယ်။ ကိုယ်သိထားတဲ့ Theory တွေကိုလည်း ဆက်စပ်မိသွားတယ်။

Learning

Developer တစ်ယောက်ရဲ့ လေ့လာသင်ယူမှုကဘယ်တော့မှ ပြီးတယ်ဆိုတာမရှိပါဘူး။ နည်းပညာအသစ်တွေကို အမြဲလေ့လာနေရပါတယ်။ Blog တွေ၊ Documentation တွေဖတ်ပါ၊​ Podcast တွေနားထောင်ပါ၊​ Pattern အသစ်တွေလေ့လာပါ၊​ Developer Conference တွေ Meetup တွေသွားပါ။ ဒီမှာလည်း အကျိုးရှိအောင်လုပ်ပါ။​ တကယ် တိုးတက်စေမဲ့ စာပေတွေကို စစ်ထုတ်တတ်ပါစေ။ ပြီးတော့ error ပျောက်သွားဖို့ထက်စာရင် ဘာလို့ဒီလိုရေးလိုက်ရင် error မရှိတော့တာလဲ ဆိုတာကိုပါ လေ့လာပါ။


ပြန်ခြုံပြီးပြောရမယ်ဆို ကွန်ပျူတာလို တွေးခေါ်တတ်အောင်လုပ်ပါ၊​ ကိုယ်လုပ်ချင်တဲ့ အရာကို ရွေးချယ်ပါ၊ ဆုံးခန်းတိုင်အောင်လုပ်ပါ၊ Senior တွေကိုချဉ်းကပ်ပါ၊ လက်တွေ့အတွေ့အကြုံရှိအောင်လုပ်ပါ၊ သင်ယူမှုကိုမရပ်လိုက်ပါနဲ့။ ကျွန်တော်ကျန်ခဲ့တာလေးတွေ၊​ အကြံညဏ်ပေးချင်တာလေးတွေရှိရင် ပြောသွားကြပါဦီး။

Read more

Platform Engineering: Developers for Developers

Platform Engineering: Developers for Developers

Software Development Team တွေကို ချဲ့ထွင်တဲ့အခါမှာ အတားအဆီးမရှိအောင် Process တွေ၊​ စံနှုန်းတွေ၊ Automation အစရှိတွေကို တာဝန်ယူတဲ့ အဖွဲ့တစ်ဖွဲ့ သီးသန့်ထားလေ့ရှိတယ်။ ဒီ Team ကို Platform Engineering လိုခေါ်တွင်တယ်။

lock-1 By Aung Kyaw Paing
Spikes: Making Unknowns Known

Spikes: Making Unknowns Known

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

By Aung Kyaw Paing
Tips & Tricks for Distributed Remote Collaboration

Tips & Tricks for Distributed Remote Collaboration

အပေါ်ယံလောက်ကြည့်ရင်တော့ ဒါဟာ Co-located team တွေလောက် အလုပ်မတွင်ဘူးထင်ရပေမဲ့ တကယ်ထိရောက်အောင်အလုပ်လုပ်တတ်ရင် Distributed Team ကလည်း သူ့ဟာနဲ့သူ သာတဲ့အချက်တွေရှိတယ်။ ဒီတော့...

By Aung Kyaw Paing
ссс