FA Developer တစ်ယောက်အနေနဲ့ Valentine Day ကို ဘယ်လိုဖြတ်သန်းကြမလဲ
များမကြာခင်မှာပဲ ချောကလက် ပန်းစည်းတွေ လက်ဆောင်ပေးတဲ့ ချစ်သူများနေ့ဟာ ရောက်ရှိလို့လာတော့မှာဖြစ်ပါတယ်။ ဒီလို Valentien Day မှာ ကျွန်တော့်လို partner မရှိတဲ့ တစ်ကိုယ်တော် Developer တွေအနေနဲ့ FB ထိုင်သုံးပြီး depression မဝင်ရလေအောင် ဘယ်လိုအကျိုးရှိရှိအသုံးချလို့ရမလဲဆိုတဲ့ နည်းနာနိသယလေးတွေ မျှဝေပေးထားပါတယ် xD
၁။ Modularize လုပ်ဖို့ စပြင်ဆင်ပါ
Project တော်တော်များများက monolithic ဖြစ်ပါတယ်။ ဆိုလိုတာက App တစ်ခုလုံးကို module တစ်ခုတည်းနဲ့ရေးထားတယ်လို့ပြောချင်တာပါ။ Modularize ဘာကြောင့်လုပ်ရသလဲဆိုရင် developer တွေအများကြီး project တစ်ခုတည်းကို contribute တဲ့အခါ conflict နည်းနည်းနဲ့ မြန်မြန် feature develop နိုင်ဖို့ ကျွန်တော်တို့လို iOS Developer များအတွက် Xcode ရဲ့ build time ကို optimize လုပ်နိုင်ဖို့ code reusability တိုးဖို့ စတဲ့အကြောင်းပြချက်တွေကြောင့်ဖြစ်ပါတယ်။ Modularize ဘာကြောင့်လုပ်ချင်ရတာလဲဆိုတဲ့အကြောင်းပြချက်နဲ့ modularize လုပ်ပြီးတဲ့အခါ အဲ့ပြသနာ တစ်ကယ်ပြေလည်သွားပြီလားဆိုတာကို ပြန်တိုက်ဆိုင်စစ်ဆေးမယ့် metrics လည်းလိုပါတယ်။ Metrics မရှိ benchmark လုပ်ထားတာမရှိပဲ ဒီအတိုင်း modularize လုပ်ချင်လို့လုပ်တယ်ဆိုရင် တစ်ကယ်ပြသနာပြေလည်သွားလား မသေချာတဲ့အပြင် ပြသနာအသစ်တွေကိုပါ introduce လုပ်လာနိုင်ပါတယ်။ ဆက်ပြောရင် modularization အကြောင်း အရှည်ဖြစ်တော့မှာမို့ ဒီမှာတင်ဖြတ်လိုက်ပါရစေ။ Modularize ဆိုတာကို နေ့ချင်းညချင်း ဝုန်းကနဲ့ ကောက်လုပ်လို့မရပါဘူး။ အဲ့တာကြောင့် အတွဲတွေ ro ကြမယ့် V Day ကစပြီး နည်းနည်းချင်းစီလုပ်သွားရင် နောက်နှစ် V Day ကျ ကိုယ်လည်း အတွဲနဲ့ဖြစ်သွားနိုင်ပါတယ် xD. ဒီနှစ်မျိုးက ဆက်တော့ဆက်စပ်တယ်နော်။ Modularize လုပ်လိုက်ရင် build time မြန်လာမယ် conflict တွေရှင်းရတာ နည်းလာမယ်။ အဲ့အခါကျ ကောင်လေး ကောင်မလေးရှာဖို့ အချိန်ပိုရမယ်။ Romance အတွက် အကန့်တွေပေါ်လာမယ်။ ဆိုတော့ကာ modularize လုပ်လိုက်ကြရအောင် 💪
Modularize လုပ်ဖို့စတင်ပြင်ဆင်တယ်ဆိုတာမှာ ချက်ချင်းကြီးတန်းပြီး module တွေခွဲချလိုက်ဖို့မဟုတ်ပါဘူး။ Monolithic မှာလည်း directory တွေခွဲထားပြီး encapsulation တွေ interface design တွေစဉ်းစားပြီး modularize လုပ်တဲ့အခါ ပိုမြန်အောင် ပြင်ဆင်ထားလို့ရပါတယ်။ ကျွန်တော်က logical separation အရ modularize လုပ်တာထက် feature-based modularize လုပ်တာကိုပိုသဘောကျတဲ့အတွက် feature-based modularize လုပ်နိုင်မယ့်ပုံစံကိုပြောပြပါ့မယ်။ ကျွန်တော်တို့ရဲ့ app မှာ များသောအားဖြင့် endpoint တွေကနေ data လှမ်းဆွဲတဲ့ networking class တွေနဲ့ database ထဲလှမ်း save တဲ့ persistence class တွေရှိပါတယ်။ နောက်တစ်ခါ text field လို button လို shared UI components တွေလည်းရှိပါသေးတယ်။ အဲ့တာကြောင့် networking အတွက် directory တစ်ခု persistence အတွက် directory တစ်ခု shared ui component အတွက် directory တစ်ခု အသုံးများတဲ့ helper method တွေကိုစုထားတဲ့ utility directory တစ်ခု စသဖြင့် ခွဲထားလိုက်ပါမယ်။ အဲ့ directory တွေက တစ်ခြား directory တစ်ခုက class/object ကို မီခိုမှုမရှိဘဲ သူ့ဟာနဲ့သူ သီးခြားရပ်တည်နိုင်ရပါမယ်။ ပြီးတော့မှ feature အလိုက် auth directory, home directory စသဖြင့်ခွဲခြားပြီး feature တွေကနေ ခုနက directory တွေကို လှမ်းယူသုံးနေတဲ့ပုံစံမျိုး သွားရပါမယ်။ ဒါဆိုရင် monolithic ဖြစ်နေသည့်တိုင် တစ်ချိန် multi-module လုပ်ချင်တဲ့အခါ directory တွေကို module အနေနဲ့ ကောက်ခွဲချလိုက်လို့ရပါတယ်။ Modularize နဲ့ပတ်သက်ပြီး အကျယ်ကိုတော့ နောက် article တစ်ခုနဲ့ထပ်ရေးပြပါဉီးမယ်။ ဒီတစ်ခေါက်မှာကတော့ တစ်နေ့နည်းနည်းနဲ့ ဘယ်လိုလုပ်သွားလို့ရမလဲဆိုတာကို idea ပေးချင်ရုံသက်သက်ပါ။ ကံတရားကြောင့် ချောကလက်မစားရပေမယ့် ကိုယ့် KPI တိုးပြီး bonus တော့ စားရနိုင်ပါတယ်။
၂။ Handover docs ရေးပါ
Steve Jobs က “If today were the last day of my life, would I want to do what I am about to do today?” ဆိုပြီးပြောခဲ့ဖူးပါတယ်။ အဲ့လိုပဲ ကျွန်တော်ကလည်း တစ်ကယ်လို့ ဒီနေ့သာ ငါဒီရုံးမှာအလုပ်လုပ်တဲ့ နောက်ဆုံးနေ့ဆို ငါ့နေရာကိုဝင်မယ့်လူကို ဘာတွေပြောခဲ့ချင်လဲဆိုတာ စဉ်းစားဖို့ အကြံပေးချင်ပါတယ်။ ပြီးရင် စိတ်ထဲကပေါ်လာတဲ့ လက်တလောအရေးအကြီးဆုံးအရာတွေကို notion ထဲဖြစ်စေ google docs ထဲဖြစ်စေ ချရေးထားပါ။ Developer တွေက documentation ရေးရမှာ ပျင်းကြပါတယ်။ ဒါ့အပြင် documentation ဖတ်ရမှာလည်း ပိုပျင်းဖို့ကောင်းပါတယ်။ ဒါပေမယ့် handover ကတော့ feature တစ်ခုမှာ ဝင်ရေးဖို့အတွက် မသိမဖြစ်သိကိုသိရမယ့် လိုအပ်တဲ့ဟာတွေကို ဉီးစားပေးရေးတာဖြစ်တဲ့အတွက် ပိုပြီး လိုတိုရှင်း ဖြစ်ပါတယ်။ အဲ့လို တစ်ပတ်တစ်ခါလောက် handover docs ပုံစံရေးသွားတဲ့အခါ နောင်တစ်ချိန် တစ်ခုခုပြသနာတက်လာရင် ကိုယ့် handover docs ကိုပြန်ကြည့်လိုက်ရင် ဘယ်နားသွားပြင်ရမလဲ တန်းသိပါတယ်။ Documentation ဆိုရင် အရစ်ရှည်နေပါဉီးမယ်။ ကျွန်တော် project အဟောင်း လက်လွှဲယူရင်လည်း တစ်ခုခုဆို handover docs ကိုဖတ်ပြီးတော့ပဲ ဘယ်နားဘာရှိလဲ ဘယ်လိုစိတ်ကူးနဲ့ရေးထားလဲနားလည်အောင်လုပ်ပြီး ရှင်းရတာပါ။ ဒါကြောင့် documentation မရေးနိုင်သည့်တိုင် handover docs ရေးထားရင် ကိုယ့်နေရာကိုဝင်မယ့်သူအတွက်မဟုတ်တောင် နောင်တစ်ချိန် ကိုယ့်အတွက် အများကြီးအထောက်အကူဖြစ်ပါလိမ့်မယ်။
၃။ Team ကလူတွေနဲ့ အာလူးဖုတ်ပါ
V Day မှာ ကိုယ့်ချစ်ရသူတွေနဲ့ တစ်တီတူး ချစ်ကြည်နူးနေတာကို ထိုင်သွားရည်ယိုနေမယ့်အစား ကိုယ့် team ကလူတွေနဲ့ အာလူးဖုတ်လိုက်ပါ။ အာလူးဖုတ်တယ်ဆိုတာမှာ အလာပသလာပဆိုတာထက် ဒီသုံးချက်ကို အဓိကထားပြီး အာလူးဖုတ်ပါ။
- သူတို့လက်ရှိ ဘာအခက်အခဲတွေကြုံနေရလဲ
- သူတို့ရဲ့ future plan က ဘယ်လိုလဲ (အနာဂါတ်မှာ ဘယ်လို techstack တွေလုပ်ချင်တာလဲ)
- သူတို့လက်ရှိ စိတ်ဝင်စားနေတာကဘာလဲ။
ကိုယ်နဲ့ အလုပ်အတူတူလုပ်နေတဲ့သူတွေရဲ့ skill အပေါ် invest လုပ်တာကလည်း ကိုယ့်အတွက်အများကြီး အထောက်အကူဖြစ်ပါတယ်။ သူတို့လက်ရှိ ဘာအခက်အခဲကြုံနေရလဲဆိုတာကိုသိရင် ကိုယ်ရှင်းပေးနိုင်လား မရှင်းပေးနိုင်လား တစ်ချက်ကြည့်လို့ရတယ်။ ကိုယ်ရှင်းပေးနိုင်တယ်ဆိုရင် ကိုယ့်အတွက် impression တိုးစေတယ် performance တက်တယ်။ စီနီယာဖြစ်တယ် ရာထူးတက်တယ် လစာတိုးတယ်ဆိုတာ ကိုယ့်လုပ်ဖော်ကိုင်ဖက်ကို ဘယ်လောက် assist လုပ်နိုင်လဲ ကိုယ့် colleagues က ကိုယ့်အပေါ် ဘယ်လောက် ယုံကြည်စိတ်ချရလဲဆိုတာနဲ့ အများကြီးသက်ဆိုင်တယ်။ တစ်ကယ်လို့ ကိုယ်မရှင်းနိုင်ဘူးဆိုရင် ကိုယ့်အတွက် သင်ယူစရာတစ်ခုတိုးတယ်။ ကိုယ်မသိသေးတာတစ်ခုသိရတယ်။ သူတို့ရဲ့ future plan ကဘာလဲသိရင် ကိုယ်နောက်ပိုင်း resource ဘယ်လို align လုပ်ရမလဲသိတယ်။ ဆိုကြပါစို့ UI skill တစ်ကယ်ဂျွတ်ပြီး animation တွေ transition အလန်းတွေလုပ်ချင်နေတဲ့သူကို architecture နဲ့ပတ်သက်တာတွေ performance tuning တွေသွားလုပ်ခိုင်းနေရင် သူစိတ်ပါမှာမဟုတ်ဘူး။ သူတို့ရဲ့ milestone အပေါ်မူတည်ပြီး task တစ်ခုကိုလုပ်တဲအခါ self-drive သွားတာဖြစ်တဲ့အတွက် efficiency တက်တယ်။ သူဘာလုပ်ချင်လဲ ဘာဖြစ်ချင်လဲ အထာနပ်ဖို့လိုတယ်။ လူမှန်နေရာမှန် resource align လုပ်နိုင်ရင် သူလည်းပျော်မယ် ကိုယ်လည်းအလုပ်ကို မြန်မြန်ဆန်ဆန်လုပ်နိုင်မယ်။ နှစ်ဉီးနှစ်ဖက်အဆင်ပြေတယ်။ နောက်ဆုံးတစ်ခု သူတို့ လက်ရှိဘာစိတ်ဝင်စားနေလဲဆိုတာသိရင် ပြသနာတစ်ခုခုတက်တဲ့အခါ ဘယ်သူ့ဆီသွားရမလဲသိတယ်။ ဒါတွေအားလုံးက အာလူးဖုတ်ပြီး အလာပသလာပပြောတယ်ဆိုသော်ငြား ကိုယ့်အတွက် အလုပ်အတွက် အကျိုးရှိတဲ့အတွက် အချိန်ဖြုန်းသင့်တဲ့အရာတွေဖြစ်တယ်။ ချစ်သူမရှိသေးရင် ချစ်သူအကြောင်းနောကျေဖို့ထက် ကိုယ့်လုပ်ဖော်ကိုင်ဖက်တွေရဲ့အထာအရင်နပ်အောင်လုပ်လိုက်တာက ပိုလက်တွေ့ဆန်မယ်မဟုတ်လားပရိသတ်။
၄။ Fake it until you make it!
ဒီကိစ္စကတော့ နည်းနည်း ကျေလည်အောင်ရှင်းရမယ်။ ကောင်မလေးမရှိသေးတဲ့အခါ ကောင်မလေးရှိချင်ယောင်ဆောင်ခိုင်းတာမဟုတ်ဘူးနော်။ ကျွန်တော်က FA ဆိုတော့ ထုံးစံအတိုင်း ဒါလည်း အလုပ်အကြောင်းပဲ စိတ်တောင်မကောင်းဘူး ကျဉ ကျဉ။ ခုနကစကားပြန်ဆက်ရင်ရင် ကိုယ်ဘာဖြစ်ချင်လဲ? Staff engineer ဖြစ်ချင်တာလား? Engineering manager ဖြစ်ချင်တာလား? Techincal lead ဖြစ်ချင်တာလား? အဲ့တော့ အဲ့လို position တစ်ကယ်ဖြစ်လာဖို့အကောင်းဆုံးနည်းက ကိုယ့်ကိုယ်ကိုတစ်ကယ်ဖြစ်နေသယောင်တွေးပြီး စဉ်းစားဖို့ပဲ။ ဒီနေရာမှာ မရှိသေးတဲ့ပါဝါတွေကို စိတ်ကူးယဉ်ပြီး ကြွားလုံးထုတ် သြဇာသီးရောင်းဖို့မဟုတ်ဘူးနော်။ ကိုယ်က အနာဂါတ်မှာ engineering manager တစ်ယောက်ဖြစ်ချင်တာလား? အဲ့တာဆို အရာရာကို ကိုယ့်လက်ရှိ position အပြင် engineering manager တစ်ယောက်ရဲ့ position ကနေ စဉ်းစားကြည့်ဖို့ပြောတာ။ ကိုယ့်ကိုကောင်းကောင်း mentor လုပ်ပေးနိုင်မယ့်သူတွေနားမှာနေ ပြီးရင် သူတို့တွေးသလိုလိုက်တွေးကြည့် အလုပ်လုပ်တဲ့အခါ ကိုယ့်လက်ရှိ position နဲ့မတန်အောင် ပိုလုပ် အဲ့တာဆိုရင် တဖြည်းဖြည်းကိုယ်လိုချင်တဲ့ position ရောက်လာလိမ့်မယ်။
ဉပမာ developer တစ်ယောက်က client meeting တွေတက်စရာမလိုဘူး ဒါပေမယ့် ကိုယ်က product manager ဖြစ်ချင်တယ်ဆိုရင် client meeting တွေလည်း opt-in လုပ်ထား ကျွန်တော်အားတယ် ထည့်ထားပေးပါဆိုပြီးလိုက်တက် သူတို့ဘယ်လို brainstorm လုပ်နေလဲကြည့် ကိုယ့်ဘက်က ဘာ value added လုပ်နိုင်မလဲတွေး ကိုယ်တိုင်ဝင် contribute နောက်ကျ ကိုယ်မတက်ရင်တောင် သူတို့မှာ တစ်ခုခုလိုနေသလိုဖြစ်လာပြီး management ကလည်း ကိုယ့် skill ကိုမျက်စိကျသွားလိမ့်မယ် တစ်နည်းပြောရရင်တော့ လစာမယူဘဲ ကိုယ့် skill ကို free သဘောမျိုး အမြည်းပေးသုံးတာပေါ့လေ အဲ့တာကိုမှ တန်ဖိုးမထားရင်တော့ ကိုယ်ကတစ်ကယ်အသုံးမကျတာလည်းဖြစ်နိုင်သလို management က အသုံးမကျတာလည်း ဖြစ်နိုင်တယ်။ အဲ့တာတော့ နောက်ကိစ္စတစ်ခုပေါ့။ ပြောချင်တာက ကိုယ်က developer ဖြစ်နေတယ် ဒါပေမယ့် နောင်တစ်ချိန် ကိုယ်က နောက်တစ်ခုဖြစ်ချင်တယ်ဆို အခုတည်းက အဲ့လိုတွေး အဲ့လိုတာဝန်ယူပြီး အဲ့လိုလုပ်ကြည့်လို့ရတယ်။ ကောင်းသော fake ခြင်းပေါ့နော်။ ကျောင်းသားတစ်ယောက်အတွက် အမှတ်ကောင်းရင် တော်တယ်လို့ပြောလို့ရတယ်။ လုပ်ငန်းခွင်မှာ တာဝန်ယူနိုင်မှ လူစွမ်းကောင်းဖြစ်တယ်။ ဆိုလိုတာက ကိုယ်က အဲ့လောက်မတော်ဘူး သူလိုကိုယ်လိုပဲ ဒါပေမယ့် ကိစ္စတော်တော်များများကို တာဝန်ခံနိုင်တယ် တာဝန်ယူနိုင်တယ် မျက်နှာလွှဲလို့ရတယ်ဆိုရင် တအားချွန်ထွက်မနေသည့်တိုင် စင်ပေါ်ကိုရောက်တယ်။ အနှစ်ချုပ်ရရင် fake girlfriend/boyfriend ရှာနေမယ့်အစား ခုနကလိုဟာမျိုးကို fake လိုက်တာက ပိုအကျိုးများတာပေါ့။
ဒီနေ့မှာတော့ နေ့စဉ်ကိုယ့်ရဲ့ အလုပ်ခွင်မှာ enhance လုပ်သွားလို့ရနိုင်တယ့်အရာတွေကို မျှဝေပေးခဲ့တာပဲဖြစ်ပါတယ်။ ခေါင်းစဉ်က မလေးနက်ဘူးထင်ရပေမယ့် ဒါမျိုးပေးမှာ ဖတ်ချင်ကြတာမို့လို့ နည်းနည်းဉာဏ်ကောင်းလိုက်ရတာပါ။ ဟာသနှောပြီး ကျွန်တော်ပြောချင်တဲ့ဟာတွေကျန်ခဲ့မယ်လို့တော့ ထင်ပါတယ်။ V Day မှမဟုတ်ပါဘူး ကိုယ့်ရဲ့နေ့စဉ်ဘဝမှာ ကိုယ်လုပ်နိုင်လောက်တဲ့ အပန်းမကြီးတဲ့ သေးသေးဖွဲဖွဲလေးတွေကို စနစ်တကျ plan ချပြီး နေ့စဉ်လုပ်သွားရင် အချိန်တစ်ခုမှာ ကိုယ်ဖြစ်ချင်တဲ့ milestone ကို ရောက်ဖို့ မလွဲဧကန်ပါဘဲ။