Business Value

ငယ်ငယ်က Internet Journal မှာ Bill Gates က ကမ္ဘာမှာ အချမ်းသာ ဆုံး သူဌေး Programmer တစ်ယောက် ဆိုတာ ဖတ်ပြီး ငါလည်း Programmer လုပ်ရင် ချမ်းသာမှာ ပဲ လို့ စဥ်းစားမိပြီး developer ဖြစ်လာတာပဲ ဆိုရမယ်။ အဲတုန်းက ၉ တန်း ၁၀ တန်း လောက်ပဲ ရှိအုံးမယ် ထင်တယ်။

Programming တွေ စလုပ်တုန်းက code တွေ ကိုပဲ တောက်လျှောက် ရေးခဲ့တာ။ Sale တွေ Marketing တွေ အကြောင်းလည်း မသိချင်ခဲ့ဘူး။ code ပဲ ရေးနေရရင် ပျော်နေခဲ့တာ။ နောက်ပိုင်း ကိုယ်ပိုင် Company စလုပ်သည့် အချိန်မှာ Sale , Marketing အကြောင်းတွေ လေ့လာဖြစ်ခဲ့တာ။

စီးပွားရေး တစ်ခု အောင်မြင်ဖို့က ဟန်ချက်ညီဖို့ လိုတယ်။ Program ရဲ့ အရည်အသွေးကောင်းနေပေမယ့် ဝယ်မယ့်သူ မရှိရင် ရောင်းလို့မရဘူး။ ဒီလိုပဲ business အမြင်ရှိနေပေမယ့် ဖန်တီးပေးနိုင်မယ့် Developer မရှိရင် ရောင်းလို့ မရပြန်ဘူး။

COMQUAS မှာ လုပ်ခဲ့တုန်းက မှတ်မှတ်​ရရ program တွေ ရှိခဲ့တယ်။

တစ်ခုက ကျွန်တော် တို့ team က ရေးတာ။ အခုအချိန်မှာ code တွေ ဖတ်ကြည့်ရင် စိတ်ညစ်စရာ။ Controller ထဲမှာ အကုန် ထည့်ထားတယ်။ Payment တွေလည်း Service တွေ မခွဲ​ Layer တွေ မခွဲ​ပဲ ရေးထည့်ထားသလို Mobile App ဘက်မှာလည်း Design Pattern တွေ ဘာမှ​မပါပဲ ရေးထားတာတွေ အများကြီး။ အဲဒီ အချိန်တုန်းကတော့ Team တစ်ခု အနေနဲ့ အကောင်းဆုံး ကို ရေးထားခဲ့တာပဲ။ Team က လူတွေက SOLID ကို မသိသည့် junior developer တွေလည်း ပါတယ်။ Unit Test လည်း မပါဘူး။ ဒါပေမယ့် code က robust ဖြစ်တယ်။ ဒါပေမယ့် Manual regression test ကို အများကြီး လုပ်ထားတာကြောင့်လည်း ပါတယ်။

အဲဒီ Project ဟာ ၅ နှစ် လုံး ဘာပြဿနာမှ မရှိပဲ ကောင်းကောင်း အလုပ်လုပ်နေတယ်။ အယောက် ၂၀ လောက်ပဲ ရှိသည့် Company ကို အယောက် ၁၀၀ လောက် ဖြစ်အောင် လုပ်ပေးနိုင်ခဲ့တယ်။ အဓိက Software ထက် business team က ကောင်းလို့ပဲ ဆိုရမယ်။ Project က business value ကောင်းသလို marketing တွေကလည်း ကောင်းကောင်း စျေးရောင်းနိုင်တယ်။ ကျွန်တော် တို့ က ဘယ် သူ့ ကိုပဲ ဖြစ်ဖြစ် ရေးပေးသည့် quality က အတူတူပဲ။ အချို့ Client တွေက အောင်မြင်သွားပြီး အချို့ client တွေကတော့ shutdown လုပ်သွားကြတယ်။

Project တစ်ခု ရဲ့ code quality ထက် Business Team , Marketing Team , Business Model တွေက အများကြီး စကား ပြောတယ်။ Developer တွေဟာ ဘယ် company တော့ ပိုကောင်းအောင် ရေးပြီး ဘယ် company တော့ ဆိုးရွားအောင် ရေးမယ် မရှိဘူး။ သိသည့် knoweldge , skills တွေ ထဲက အကောင်းဆုံး ရေးကြတာပဲ။ ပြဿနာ က mentor ရှိရင် senior ကောင်းရင် code quality က တက်လာတယ်။ mentor, senior ကောင်းကောင်းမရှိဘူး ကိုယ်တိုင်လည်း လေ့လာမှု အားနည်းရင်တော့ code quality တက်လာဖို့ နှေးတာပေါ့။

Flutter စလုပ်တုန်းက project တစ်ခု လည်း အဲလိုပဲ။ Bloc ပဲ သုံးတာ ထင်တယ်။ code တွေက ရှုပ်ထွေးပြီး manage က လုပ်ရတာ အရမ်းခက်တယ်။ Epub Reader ဆိုရင် ကိုယ့်တိုင် အစ အဆုံး ပြန်ရေးထားတာ။ iOS ကော Android ကော ရအောင် အဆင်ပြေအောင် ဆိုပြီး။ Timeline က အရမ်းကပ်နေပြီး ပေးခါနီးမှ​ Epub Reader အဆင်မပြေတော့ ကိုယ်တိုင် ဝင်ရေးထားတာ။ code ကို polish လုပ်ဖို့ တောင် အချိန် မရှိလိုက်တာ။ အဲဒီ​ business model က business value ရှိသည့် အတွက် exist ဖြစ်သွားတယ်။ Company တစ်ခု က ဝယ်ပြီး သူ့ team နဲ့ ဆက် run တယ်ပေါ့။ အဲတုန်းက flutter ဆိုလည်း အခု ခေတ်လို မဟုတ်တော့ code က maintain လုပ်ရခက်တယ်။ စပြီး လေ့လာပြီး ရေးသည့် အချိန် ဖြစ်တာလည်း ပါတယ်။ လေ့လာပြီး ရေးခါစ ဆိုတော့ အရမ်းကောင်းလှတယ်မဟုတ်ဘူး။ BLOC ကို သိမှ ရေးလို့ ရမယ့် ပုံ။​ဒါပေမယ့် Business ဘက်က စျေးရောင်းတတ်တယ်။ Error တက်တာတွေကို ချက်ခြင်း report လုပ်။ Change Request တွေ ကို ချက်ခြင်း တင် ပြီး အကုန် approve လုပ်သည့် အတွက် နှစ်ဦးနှစ်ဖက် အဆင်ပြေတယ်။ တောက်လျှောက် improve ရှိတယ်။ ဒါကြောင့်လည်း Exist လုပ်နိုင်သွားတာ။

သူများ code ကို transfer လုပ်ပြီး maintain လုပ်ခဲ့ရတာ အရင် ကလည်း ရှိတယ်။ အခုလည်း ရှိနေတုန်းပဲ။ အခြား team က နေ ကိုယ့် team ဆီ ရောက်လာသည့် အခါမှာ အခုအချိန်မှာ code တွေကို ဖတ်ပြီး WTF တွေ ဖြစ်နေတာ။ ပြဿနာက ပြင်ရေးလို့ မရဘူး။ ပြင်လိုက်လို့ တစ်ခုခု ဖြစ်သွားရင် ကိုယ် တာဝန် ယူ​ရမှာ။ ၁ လ ကို Active User သိန်း ကျော် က သုံးနေတာ။ ကိုယ်ပြင်လိုက်လို့ ကြာသွားပြီး new feature မထည့်နိုင်ရင် ကိုယ်ပဲ တာဝန်ယူရမှာ။ အစအဆုံး ပြန်ရေးဖို့ကလည်း business team အနေနဲ့ ကြည့်ရင် အလုပ်လုပ်နေတာပဲ ဘာလို့ re invest လုပ်ရမှာလဲ မေးခွန်းကို ရှင်းပြရင် ခက်တယ်။ အလုပ်လုပ်နေတယ််။ code က quality မကောင်းဘူး။ ဒါပေမယ့် စီးပွားဖြစ်နေတယ်။ အဲဒီတော့ အဲဒါကိုပဲ ဆက်ပြီး မ down သွားအောင် maintain လုပ်နိုင်တာပဲ တတ်နိုင်တယ်။ new feature ကလည်း သေးသေးလေးတွေပဲ။ အဲဒီ အတွက် အစ အဆုံး ကို business team က ပြန်ရေးဖို့လည်း အစီအစဥ်မရှိဘူး။

အဓိက Developer ဆိုတာက Support Role ပဲ။ Business , Marketing တွေ အဆင်ပြေအောင် ဖန်တီး ပေးနေရသည့် support role ပဲ။ Bill Gates အောင်မြင်တယ်ဆိုတာ သူ စျေးရောင်းတတ်လို့။ Windows OS နဲ့ အပြိုင် အခြား BeOS, AmigaOS လိုမျိုး OS တွေ ရှိခဲ့တာပဲ။ ဒါပေမယ့် Windows OS လိုအောင်မြင်မှု မရခဲ့ဘူး။ အဲဒီ OS ရေးသည့် Developer တွေ code quality မကောင်းလို့ မှ​ မဟုတ်တာ။

Code quality က အရေးကြီးတယ်။ ဒါက developer တစ်ယောက် ရဲ့ တာဝန်ပဲ။ မဟုတ်ရင်တော့ အခြား team တစ်ခု ရောက်သွားတိုင်း ကိုယ့် ကို ဆဲ နေမှာ။

Software တစ်ခု အောင်မြင်ခြင်း မအောင်မြင်ခြင်းကတော့ Business Value ဖြစ်သွားပြီ။ Business Model မှာ business value ရှိပြီး အဲဒီဟာကို အောင်မြင် အောင် လုပ်ဖို့ က CEO နဲ့ business team တာဝန်ပဲ။ Code quality ဘယ်လောက် ကောင်းကောင်း သူတို့ စျေးမရောင်းနိုင်ရင် အဲဒီ project က shutdown ဖြစ်မှာပဲ။ code တွေက လက်တွေ့ လောက မှာတော့ quality က အကောင်းဆုံး မဟုတ်ပေမယ့် အလုပ်ဖြစ်တယ် တကယ်လည်း အလုပ်လုပ်ပြီး စျေးရောင်းနေသည့် Software တွေ အများကြီးပဲ။

Facebook ကို Mark Zuckerberg ရေးတုန်းကလည်း OOP လည်း မကောင်း Software ဘက်က rule တွေ လည်း မလိုက်နာသည့် PHP ကို သုံးပြီး ရေးခဲ့တာပါ။ OOP ဘက်မှာ ပိုကောင်းပြီး maintain ပိုအဆင်ပြေသည့် ROR, ASP.NET တို့ သုံးခဲ့တာ မဟုတ်ဘူး။ ဒါပေမယ့် သူ့မှာ Business Value ရှိတယ်။ Language တွေ ထက် project ရဲ့ business value က ပိုအရေးကြီးတယ်။ အခုအချိန် ထိ PHP ကို ပဲ သုံးထားပေမယ့် Hack, HHVM တို့ အပြင် အခြား PHP ကို improve လုပ်ထားသည့် feature တွေ တော့ ထပ်ဖြည့်တာပေါ့။

အချို့ company တွေ maintainability ဖြစ်အောင် Microservice တွေလုပ်ပြီး အရင်ကထက် business မှာ အရှုံးတွေ ပေါ်သည့် အကြောင်းတွေ တော့ နောက်မှ ပြောတော့မယ်။ စာလည်း ရှည်သွားပြီ။