Deep-Dive The Frameworks

Deep-Dive The Frameworks

ရှင်းလင်းချက် - ဒီ‌ဆောင်းပါးက Frameworks (Laravel, Django, Flask and so on.) တွေရဲ့အရေးပါပုံ ကို တည်ရေးထားတာဖြစ်ပြီး ကျွန်တော့် အမြင်နဲ့ တစ်ခြား Articles အချို့ကနေ ကောက်နှုတ်ထားတာတွေကိုပဲ ဖော်ပြထားတာဖြစ်ပါတယ်။ မှန်သည် မှားသည်ကို ‌အခြေခံတာမဟုတ်ပဲ ကိုယ်သုံးနေတဲ့ Framework ‌တွေကို သေချာ deep-dive လုပ်ဖို့ တွန်းအားတစ်ခုပေးဖို့ ရည်ရွယ်တာဖြစ်ပါတယ်။

ကျွန်တော်တို့ Developer တွေက Application ‌တွေရေးသားတဲ့အခါမှာ ပိုပြီးမြန်ဆန်၊ တိကျ၊ သေသပ်အောင် Frameworks တွေကို အသုံးပြုကြပါတယ်။ Pure ရေးတဲ့ Developers တွေရှိပေမယ့် အများစုကတော့ သက်ဆိုင်ရာ Programming Language‌s တွေရဲ့ နာမည်ကြီး Framework တွေကိုအသုံးပြုနေကြတာဖြစ်ပါတယ်။ ဒီနေရာမှာ ကျွန်တော်တို့ဘာလို့ Framework တွေကို သုံးကြတာလဲဆိုတာကို အရင် စဥ်းစားကြည့်ကြဖို့လိုပါတယ်။ Framework တွေကို သုံးရင် ‌-

  • Efficiency,

  • Consistency,

  • Security,

  • Scalability,

  • Maintainable,

  • Future Proof &

  • Support from community

စတာတွေမှာ သိသိသာသာ အကျိုးခံစားရလို့ပဲဖြစ်ပါတယ်။ ဒါပေမယ့် Frameworks ‌တွေကိုသုံးရင် trade-offs ‌တွေလည်းပါလာမယ်ဆိုတာကို သတိထားမိ ဖို့လိုပါလိမ့်မယ်။ Framework တစ်ခုနဲ့တစ်ခု မှာ trade-offs ‌‌တွေမတူကြပေမယ့် အများအားဖြင့်ကတော့ အောက်မှာဖော်ပြထားတဲ့ အပိုင်းတွေတော့ရှိလေ့ရှိကြပါတယ်။

  • Learning Curve (သူ့မှာပါတဲ့ features, functions တွေကို သီးသန့် အချိန်ပေးလေ့လာရမယ်)

  • Limitations (အကန့်အသတ်တွေ - ကိုယ်လိုချင်တာကို လုပ်ဖို့ခက်ခဲ၊ support မပေးတာမျိုး)

  • Bloated Code (ကိုယ်အသုံးမလိုတာတွေ ပါနေတာတွေ)

  • Dependency Management (တစ်ချို့ Frameworks တွေက external libraries တွေပေါ်မှာ ပြန်ဆောက်ထားတာဆိုတော့ သက်ဆိုင်ရာ Libraries တွေကို up-to-date ဖြစ်အောင် Manage လုပ်ရတာတွေ)

  • Maintenance (Regular updates of the Framework တွေမှာ ကိုယ့် ‌‌App ကို up-to-date and maintainable ဖြစ်အောင်လိုက်လုပ်ရတာတွေ)

  • Cost (ဒါကတော့ ထည့်တွက်ဖို့ အနည်းဆုံးအစိတ်အပိုင်းဖြစ်ပါတယ်။ Paid-feature တွေ Paid-course တွေမှာ ကုန်ကျစရိတ် ရှိနိုင်တာမျိုးတွေ)

အဲ့လို trade-off တွေကို ကိုယ့်ဘက်ကထိန်းဖို့ လိုအပ်တာလာတွေရှိတယ်။ ဆိုတော့ ဘယ်လိုထိန်းကြမလဲ။ တစ်ခုသတိထားဖို့လိုတာက လိုက်မထိန်းလဲ ကိုယ့် app က သက်ဆိုင်ရာ Framework, Library တွေရဲ့ version တစ်ခုမှာတော့ အလုပ်လုပ်ဆဲ လုပ်မြဲ ဖြစ်တယ်။ ဒါပေမယ့် တစ်ချိန် ကိုယ်လိုချင်တာတွေကို Framework က support မလုပ်ထား/ မလုပ်သေးတဲ့ အချိန်တွေ မှာ Framework ကို Customize/ Override/ Extend လုပ်တော့မယ်ဆိုရင် လွယ်ကူခြင်း မလွယ်ကူခြင်းကို ‌ကိုယ်သုံးထားတဲ့ ‌Framework ကို ဘယ်လောက် deep-diving လုပ်ထားသလဲဆိုတာက ဆုံးဖြတ်ပေးမှာပါ။

ဒီနေရာမှာ deep-diving ကို အလေးပေးပြီး ပြောရတဲ့ အကြောင်းက အပေါ်မှာပြောထားတဲ့ trade-offs တွေကို ဒီတစ်ခုနဲ့တင် တော်တော်လေးဖြေရှင်းပေးနိုင်လို့ပါ။ ဆိုတော့ deep-diving ဘယ်လိုလုပ်ကြမလဲကို ဆက်ရအောင်။

  • Learn the language (ပထမဆုံံးအနေနဲ့ကတော့ ကိုယ်သုံးမယ့် Framework ရဲ့ Programming Language ကို အကုန်မသိနေတောင် ကုဒ်ဖတ်နိုင် နားလည်နိုင်တဲ့ အနေအထားကို ရောက်ကို ‌ရောက်နေဖို့လိုပါတယ်။ အဲ့တာမှပဲ Framework ကိုလေ့လာချဥ◌်းကပ်တဲ့နေရာမှာ လွယ်ကူမှာဖြစ်ပါတယ်။ ကိုယ်က အဆင့်ကျော်နေမိလည်း အားငယ်ဖို့မလိုပါဘူး။ ပြန်လေ့လာလို့ရတာပါပဲ။)

  • Powerful IDE (IDE ကောင်းကောင်း၊ Plugins ကောင်းကောင်းတွေကို အသုံးပြုဖို့လိုပါတယ်။ Frameworks တွေရဲ့ တည်ဆောက်ပုံက ပိုပိုပြီး ရှုပ်ထွေးလာတဲ့ အတွက် လိုချင်တာကို ရှာနိုင် navigate လုပ်နိုင်တဲ့ IDE ရှိဖို့လိုပါတယ်။ ကုဒ်ဖတ်ရာမှာ အရမ်းကို သိသာမြန်ဆန်စေပါတယ်။ အများအားဖြင့် JetBrains ကထုတ်တဲ့ IDE တွေက သက်ဆိုင်ရာ Language & Framework တွေမှာ သိသိသာသာကို ကောင်းကောင်း အလုပ်ဖြစ်ပါတယ်။ ဝယ်သုံးဖို့လိုရင်လည်း ရင်းနှီးမြုပ်နှံတယ်လို့သာ သဘောထားစေချင်ပါတယ်။ အဲ့တာမှမဝယ်ချင်ဘူးဆိုလည်း Opensource IDE (VSCode and so on.) တို့ကိုသွင်းပြီးတော့ Plugins ‌ကောင်းကောင်းတွေသွင်းပြီး သုံးသင့်ပါတယ်။)

  • Documentation (သက်ဆိုင်ရာ Framework ရဲ့ docs ကို ‌‌ကောင်းကောင်းဖတ်ထားသင့်ပါတယ်။ လိုမှ ရှာလို့ရပါတယ်ဆိုတာက တစ်ကယ်တမ်း tight timeline နဲ့အလုပ်လုပ်နေချိန်မှာ အခက်အခဲဖြစ်စေမှာပါ။)

  • Architecture (သေချာတာတစ်ခုက Framework ရဲ့တည်ဆောက်ထားပုံတွေ၊ Design Pattern ‌တွေကို သိထားဖို့လိုပါတယ်။)

  • Starter examples (ကိုယ်က အခုမှ ဒီ Framework ကို စသုံးဖူးတာဆိုရင် example လေးတွေအရင်ဖတ်ပြီးမှ ဘယ်လို customize လုပ်ရမလဲဆိုတာကို စဉ်းစားသင့်ပါတယ်။ ခြေလှမ်းကျဲတိုင်း မကောင်းပါဘူး။)

  • Community (Framework devs တွေက အများအားဖြင့် community တစ်ခုကို ‌ဖန်တီးထားကြပြီး ဆွေးနွေး၊ ငြင်းခုန်၊ အကြံပြု၊ ‌သုံးသပ်‌ လေ့ရှိကြပါတယ်။ အဲ့လို community ကို join ပြီးတော့ မတူညီတဲ့ အမြင်တွေ အကြံပြုချက်တွေကို အမြဲ လိုက်ဖတ်နေသင့်ပါတယ်။ ကိုယ်တိုင်က contribute လုပ်နိုင်ရင်တော့ အကောင်းဆုံးပေါ့။)

  • Read & Debug the framework (ဒါကတော့ အရေးအကြီးဆုံးအပိုင်းပေါ့။ Framework ထဲက ကိုယ်သုံးတဲ့ features, functions တွေရဲ့ အလုပ်လုပ်ပုံကို ဖတ်ထားနိုင်မှ အဆင်ပြေပါမယ်။ မဟုတ်ရင် Level တစ်ခုမှာရပ်တန့်နေပါလိမ့်မယ်။ ကုဒ်တွေကို လိုက်ဖတ်ထားမှ ကိုယ်လိုတာရှိရင် ယူသုံးသင့် မသုံးသင့်ဆိုတာကို ဆုံးဖြတ်နိင်၊ ပြုပြင်နိုင်မှာ ဖြစ်ပါတယ်။)

  • Get someone to discuss (ဒီအချက်က community တွေမှာ လုပ်လေ့ရှိကြပေမယ့် ကိုယ့်အနီးအနား က experience ပိုများ၊ ပိုတော်တဲ့ developer တွေ နဲ့ အမြဲ ‌ဆွေးနွေး တိုင်ပင်နေသင့်ပါတယ်။ ဒီအချက်ကလည််း ကိုယ်ကော ကိုယ့် partner တွေပါ ပိုပြီးတော့ ကျွမ်းကျင်လာဖို့ အထောက်အကူပြုပါတယ်။ Senior/Colleague ‌တွေရဲ့ အမြင်နဲ့ ကိုယ့်အမြင်ကွာခြားနေတဲ့ အခါ ငြင်းခုန် သုံးသပ်ရတာကလည်း developer တွေ အတွက် တစ်ကယ်ကို motivated ဖြစ်စေပါတယ်။)

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

နောက် အပိုင်းတွေမှာတော့ Frameworks တွေကို နားလည်နိုင်ဖို့ အထောက်အကူပြုနိုင်တဲ့ design pattern တွေကို လက်လှမ်းမီသလောက် ‌ဆွေနွေးပါဦးမယ်။

Nay Thu Khant
Solution Architect @ onenex.co