Painful journey throughout the App Development

In Myanmar Version

ကၽြန္ေတာ္တို႔ Programmer အကုန္လံုးနီးပါး ျကံုဘူးၾကပါတယ္။ အဲဒါဘာလဲဆိုေတာ႔ ေခါင္းထဲမွာ လၽွက္စီးလွၽက္သလို App Idea တစ္ခုခု ရသြားတတ္ၾကတာပါ။ Facebook တည္ေထာင္သူ Mark Zuckerberg တို႔၊ Instragram တည္ေထာင္သူ Systrom တို႔လည္း ဒီလိုဘဲ ရုတ္တရက္ဆိုသလို Idea ရသြားရင္း နာမည္ႀကီး App ေတြ ေရးသားနိုင္ခဲ့ၾကတာပါ။

ကၽြန္ေတာ္လည္း ၿပီးခဲ့တဲ႔ ႏွစ္လေလာက္တုန္းက သူုငယ္ခ်င္းေဟာင္းတစ္ေယာက္နဲ႔ ဖုန္းေျပာေနရင္း App Idea တစ္ခု ရလာပါတယ္။ Social Voting App ေလးတစ္ခု ေရးဖို႔ Idea ရသြားတာပါ။ ခရီးသြားဖို႔ ေနရာေရြးတာတို႔၊ ေတြ႕ဆံုပြဲတစ္ခုရွိလို႔ စားေသာက္ဆိုင္ေရြးတာတို႔၊ Activity တစ္ခုခု လုပ္ဖို႔ေရြးခ်ယ္တာတို႔ စတာမ်ိဳးေတြမွာ သံုးလို႔ရမယ့္ App မ်ိဳးပါ။

Idea စ ရေတာ႔ ထည့္ခ်င္တဲ့ Features ေတြ၊ လုပ္ခ်င္တဲ့ ပံုစံေတြက အစံုအလင္ေပါ့။ ေခါင္းထဲမွာတင္ ေတြးလိုက္တာ အေတာ္ေလး ေပ်ာ္ဖို႔ေကာင္းပါတယ္။ Client side ဖက္မွာ ဘာ Framework သံုးမယ္၊ Server side ဖက္မွာေတာ႔ ဘယ္လိုလုပ္မယ္နဲ႔ Plan ေတြခ်တာေပါ့ဗ်ာ။ ဒါေပမယ့္ Development လည္းစလုပ္ေရာ ျပသနာေပါင္း ေသာင္းေျခာက္ေထာင္ စၾကံဳရပါေတာ႔တယ္။ တစ္ခုၿပီးတစ္ခု မရုိးေအာင္ မ်ိဳးစံုျပသနာေတြ တက္တာပါ။ ကၽြန္ေတာ္ ေလွၽာက္ခဲ့တဲ႔ Development လမ္းေၾကာင္းတစ္ေလွၽာက္ၾကံဳခဲ့ရတဲ႔ အခက္အခဲေတြကို အစဥ္အလိုက္ ေျဖရွင္းခ်က္နဲ႔တကြ တစ္ခ်က္ခ်င္း ျပန္လည္ သံုးသပ္ထားတာပါ။

၁. ေလ႔လာထားတာနဲ႔ တကယ့္ျကံုရတဲ့ျပႆ နာ ကြာျခားျခင္း

ဒီ App စေရးေတာ႔မယ္ဆိုေတာ႔ လိုအပ္မယ့္ နည္းပညာေတြကို ကၽြန္ေတာ္ ၁လ ေလာက္နီးပါး အခိ်န္ယူၿပီး ျပန္ေလ႔လာပါတယ္။ Video Tutorial ေတြ၊ Programming books ေတြ၊ Sample projects ေတြ အမ်ားၾကီးေလ့လာေလ႔က်င့္ျဖစ္ပါတယ္။ ဒါေပ့မယ့္ တစ္ကယ့္လက္ေတြ႕မွာတက္တဲ့ ျပသနာေတြက Tutorials ေတြထဲမွာ ထည့္မေျပာထားပါဘူး။ Sample projects ေတြကလည္း sample ျပထားတဲ႔သေဘာေလာက္ပါဘဲ။

ကၽြန္ေတာ္ကေတာ႔ Stackoverflow ကို အေတာ္ေလး အားကိုးခဲ့ပါတယ္။ ကိုယ္တိုင္ေမးခြန္းေတြေမးတယ္၊ သူမ်ားေမးခြန္း (သို႔) အေျဖေတြေအာက္မွာ @ sign နဲ႔ ကိုယ္ Notify လုပ္ခ်င္တဲ႔ Developer နာမည္ကို ေခၚၿပီး Comment ေတြေပးပါတယ္။ အဲလိုနဲ႔ဘဲ ျပသနာေတြရဲ႕ အေျဖကို ရွာခဲ့ပါတယ္။

၂. Code မ်ား ရွုပ္ပြလာျခင္း

Code ေတြကို Neat and Tidy ေရးဖို႔၊ Readable ျဖစ္ေအာင္ေရးဖို႔ လူတိုင္းလြယ္လြယ္ကူကူ ေျပာတတ္ၾကပါတယ္။ ဟုတ္ပါတယ္။ ပုံမွန္ Todo App တို႔၊ Calendar တို႔ေလာက္ကေတာ႔ Code အေၾကာင္းေရက နည္းေတာ႔ Neat and Tidy ေရးဖို႔ လြယ္ပါတယ္။ ဒါေပမယ့္ Features စံု၊ အေၾကာင္းအရာရွုပ္ေထြးတဲ့ App မ်ိဳးဆိုရင္ Code ေတြကမ်ားလာၿပီး ထိန္းရသိမ္းရ ခက္လာတတ္ပါတယ္။

Solid Principle တို႔၊ Separation of Concern Principle တို႔ သံုးေလကြာလို႔လည္း ေျပာတတ္ၾကပါေသးတယ္။ အဲဒီ Principles ေတြကလည္း ဖတ္လို႔တာအရမ္းေကာင္းတာ၊ ေနရာတက်မသံုးတတ္ရင္ နွစ္ဆပိုရွုပ္သြားေစနိုင္ပါတယ္။

၃. Idea မ်ားခလုတ္တိုက္ျခင္း

Facebook မွာ Like button ထည့္ရင္ Dislike button ေရာ မထည့္သင့္ဘူးဆိုတာမ်ိဳး ျပႆနာေတြပါ။ ဒီအခ်က္ဟာ နည္းပညာကၽြမ္းက်င္မွု အားနည္းတာနဲ႔လည္း မဆိုင္ပါဘူး။ Application တစ္ခု develop လုပ္တယ္ဆိုတာ အစကတည္းက ဘက္ေပါင္းစံုအကုန္လံုး ေထာင့္စီေအာင္ စဥ္းစားထားဖို႔ဆိုတာ မလြယ္ပါဘူး။

App အေၾကာင္းေရာ၊ နည္းပညာအေၾကာင္းေရာ Develop လုပ္ရင္းနဲ႕မွ ပိုသိလာတာပါ။ ဒါေပမယ့္ တစ္ခ်ိဳ႕အေၾကာင္းအရာေတြက အေတာ္ေလးေရးၿပီးေနလို႔ အခုမွ ျပန္ျပင္ဖို႔ မလြယ္ေတာ့ပါဘူး။ “ဟာ… ငါအစကတည္းက ဒီလိုေရးလုိက္ရမွာကြာ” ဆိုတဲ့ ခံစားမွုမ်ိဳးျဖစ္လာနိုင္ပါတယ္။

အဲလိုမ်ိဳး အေျခအေနနဲ႔ ျကံုလာရရင္ ျဖစ္နိုင္ရင္ ျပန္ျပင္ပါ။ မျဖစ္နိုင္ေတာ့ရင္ ဒီအတိုင္းဘဲ ထားလိုက္ပါ။ ေနာက္ Version ေတြက်မွ အဲဒီလိုအပ္ခ်က္ေတြကို ျပန္လည္ ျဖည့္စြက္ပါ။ Version နံပါတ္ေတြဆိုတာ အလကားေနရင္း ေပၚလာတာ မဟုတ္ပါဘူး။ ဒီေနရာမွာ အသံုးခ်ဖို႔ပါ။

၄. ကိုယ္ေၾကာင့္မဟုတ္ဘဲ ျဖစ္တဲ့ ခက္ခဲမွုေတြ

ဥပမာ. Android App Development မွာ ျမန္မာစာမွန္မွန္ကန္ကန္ျမင္ရဖို႔အတြက္ Zawgyi နဲ႔ Unicode ျပသနာတက္သလိုမ်ိဳးပါ။ ကၽြန္ေတာ္႔ရဲ႕ ျပသနာကေတာ႔ Facebook OpenGraph Api ပါ။ Permissions ေတြ အမ်ားႀကီးပိတ္ထားၿပီးေတာ႔ သူ႔ဆီမွာ Ads ထည့္တဲ့ App ေတြကိုဘဲ Special Permissions ေတြ ဖြင့္ေပးထားတာပါ။ ဘာမွမတတ္နုိင္ပါဘူး။ ေဒါသေတြထြက္ၿပီး မၾကာသင့္ဘဲ အခ်ိန္ေတြကလည္း ထပ္ၾကာသြားနိုင္ပါတယ္။

အဲလို အခက္အခဲမ်ိဳးနဲ႔ျကံုလာရင္ ဒါဟာ ကိုယ္တစ္ေယာက္တည္း ေတြ႕ၾကံဳေနရမဟုတ္ဘူး၊ တျခားလူအမ်ားလည္း ဒီလိုဘဲ ၾကံဳေနရတယ္ဆိုတာ သိဖို႔ အေရးႀကီးပါတယ္။ သူတို႔ေရာ ဘယ္လိုေျဖရွင္းလဲ လိုက္လံေဆြးေႏြးၾကည့္ပါ။

၅. အခ်ိန္ၾကာလာတာနဲ႔အမၽွ စိတ္တိုင္းက်မွုမ်ား ေလွၽာ႔နည္းလာျခင္း

တစ္ပတ္၊ နွစ္ပတ္ေလာက္နဲ႔ App ကိုအၿပီးေရးနိုင္ရင္ေတာ႔ ဒီျပႆ နာ မရွိေလာက္ပါဘူး။ ဒါေပမယ့္ တစ္လေက်ာ္ေလာက္ၾကာလာတာနဲ႔အမၽွ စိတ္တိုင္းမက်တဲ့ ခံစားခ်က္မ်ိဳး ရွိလာနိုင္ပါတယ္။ ဘာျဖစ္လို႔လဲဆိုေတာ႔ ဒီ App Design ကိုဘဲ ေန႔တိုင္းျမင္ေနရတယ္၊ ဒီ ပံုစံတစ္မ်ိဳးတည္းေသာ Functions ေတြ၊ Button ေတြနဲ႔ဘဲ ထိေတြ႕ေနရတဲ့အခါ ရုိးအီလာတတ္ပါတယ္။

အဲလိုအခါမ်ိဳးမွာ ယံုၾကည္ရတဲ့သူငယ္ခ်င္းအခ်ိဳ႕ကို ကိုယ္ရဲ႕ App ကို ျပၾကည့္ပါ။ သူ႔တို႔ဆီက မေကာင္းတာလည္းၾကားရမယ္၊ ေကာင္းတာလည္းၾကားရမယ္။ အဲဒီအခါ စိတ္က တဖန္ျပန္လည္ နိုးၾကားလာေစပါတယ္။

ဒါကေတာ႔ ကၽြန္ေတာ္ၾကံဳခဲ့ရတဲ့ အခက္အခဲေတြပါ။ ကၽြန္ေတာ္ရဲ႕ အားနည္းခ်က္ေတြ ေၾကာင့္လည္း ျဖစ္နုိင္ပါတယ္။ နိဂံုးခ်ဳပ္အေနနဲ႔ ပံုျပင္ေလးတစ္ပုဒ္နဲ႔ အဆံုးသတ္ခ်င္ပါတယ္။

ကေလးေလး တစ္ေယာက္က သူအရြယ္ေရာက္လာရင္ စစ္သားလုပ္မယ္လို႔ ေျကြးေၾကာ္တယ္။ အဲဒါနဲ႔ သူ႔ဦးေလးက မင္းစစ္သားလုပ္ရင္ အသတ္ခံရမွာေပါ့လို႔ စေနာက္လိုက္ပါတယ္။
ကေလးက သူ႔ဦးေလးကို “ဘယ္သူက လာသတ္မွာလဲ” လို႔ ျပန္ေမးတယ္။ ဦးေလးကလည္း “ရန္သူေတြက လာသတ္မွာေပါ့” လို႔ အလြယ္တကူ ေျဖလိုက္ပါတယ္။
အဲမွာ ကေလးက “ဒါဆို ကၽြန္ေတာ္ ရန္သူဘဲ လုပ္ေတာ႔မယ္” လို႔ ျပန္ေျဖလုိက္ပါတယ္။

ရန္သူဘဲလုပ္လုပ္၊ စစ္သားဘဲလုပ္လုပ္ စိန္ေခၚမွုေတြကေတာ႔ ျကံုမွာပါဘဲ။ ပံုျပင္ထဲက ကေလးလိုမ်ိဳး အခက္အခဲေတြ၊ စိန္ေခၚမွုေတြ ၾကံဳတာနဲ႔ဘဲ ကိုယ့္ရဲ႕နဂိုမူလ ပန္းတိုင္ကို မေျပာင္းလဲလိုက္ပါနဲ႔။ အေရးၾကီးတာကေတာ႔ ဇြဲမေလွၽာ႔ဖို႔ပါဘဲ။ မျဖစ္ျဖစ္ေအာင္လုပ္မယ္ဆိုတဲ့ စိတ္မ်ိဳးေမြးထားရင္ ေသခ်ာေပါက္ လုပ္နိုင္ပါလိမ့္မယ္။