Thursday, May 12, 2011

Think B4 it's 2 La8.

Think B4 it's 2 La8.

အလုပ္က ခက္တာမဟုတ္ဘဲ လြယ္တာေလးေတြမ်ားေနရင္ ဘယ္လုိ Handle လုပ္မလဲ။

အခုေနာက္ပိုင္းမွာ productive programmer ေတြက code ကိုမေရးဘူး။ generate လုပ္တယ္။

ေန႔တိုင္းလုပ္ေနရတဲ႔အလုပ္ေတြကို ထုိင္စဥ္းစားၾကည္႕တယ္။ တစ္ေန႕လား sql script ေရး၊ ေနာက္တစ္ေန႕လာ script ေရးနဲ႕ပဲ လုပ္ေနရတာမ်ားတယ္။ ဘာမွမဟုတ္ေပမယ္႔ လက္၀င္တယ္။ ဆိုပါေတာ႔ policy အခု တစ္ေထာင္ေလာက္ကို စစ္ရမယ္ဆိုရင္ သူတုိ႕ေပးလိုက္တဲ႔ txt file ထဲက policy number ေလးေတြကို တယုတယေလး comma code ျပီး select where policy in ('') ထဲထည္႕ဖုိ႕ေတာင္ တစ္ခုခ်င္းစီလုပ္ေနရင္ သိပ္ၾကာတယ္။ အဲဒီေတာ႔ program ေလးတစ္ခုေရးထားတယ္။ ဘာမွလုပ္တာမဟုတ္ဘူး။ comma ေတြ single code ေတြ တပ္ေပးတာမ်ိဳး၊ ကုိယ္လုပ္ရမွာပ်င္းတာေတြ လုပ္ေပးတဲ႔ office helper ဆိုတဲ႔ project ေလးကို လုပ္ျဖစ္တယ္။ သက္သာတယ္။ productive ပိုျဖစ္လာတယ္။ အခ်ိန္မ်ားမ်ားမလိုဘဲျပီးတယ္။

အားေနရင္ Framework ေတြေလ႔လာတာေကာင္းတယ္။ Java မွာ အလားအလာသိပ္ေကာင္းေနတဲ႔ ွSpring framework လိုဟာမ်ိဳးကိုေလ႔လာသင္႔တယ္။ ေနာက္ထပ္ ဆယ္ႏွစ္အတြင္း သူ႕ကို ပစ္ပယ္လုိ႕မရေသးဘူး။ အခု VM ware ေအာက္ေရာက္သြားလုိ႕ ပိုခိုင္မာလာတယ္။ Spring Source မွာ ေလ႔လာလုိ႕ရတယ္။ Spring Tools Suite ေတြလည္းထုတ္တယ္။ ပ်င္းရင္ စမ္းၾကည္႕ဖုိ႕ေကာင္းတယ္။

Code ေရးတာတင္မဟုတ္ဘဲ Framework ေတြကို နားလည္ရင္ ပိုအဆင္႔ျမင္႔တဲ႔ code ကို ေရးလုိ႕ရတယ္။ Spring batch မွာဆို file ေတြကို သူ႕ဘာသာသူ handle လုပ္ထားတာေတြအမ်ားၾကီးပါတယ္။ reader ေတြ၊ writer ေတြ မလုိဘဲ ေရးရတာေတြသက္သာသြားတယ္။

ဖတ္လက္စဟာေတြေရးမယ္ ေရးမယ္နဲ႕မေရးျဖစ္ဘူး။ Divinity ပို႕စ္ႏွစ္ခုတက္လာမွ စာမေရးတာၾကာျပီလုိ႕သတိထားမိတယ္။ Language ေတြရဲ႕ေရွ႕မွာ concept အရင္လာတယ္။ အဲဒီ concept ကို သိရင္ ဘာ language နဲ႕မဆို implement လုပ္ဖုိ႕ ဆက္ၾကိဳးစားလုိ႕ရႏိုင္တယ္။

IOC , inversion of control နဲ႕ Dependency Injection ကို အတူတူပဲဆိုတာမသိဘဲ spring နဲ႕ေရးတာေတြကို maintain လုပ္ခဲ႔ဖူးတယ္။ အေတြ႕အၾကံဳအရ ဘာေတြကို ဘယ္လုိ configure လုပ္ျပီး ဘယ္လိုေရးလုိက္ရင္ရတယ္ဆိုတာက မခက္ဘူး။ အမွန္က အဲဒါက ကြ်န္ေတာ္ အသံုးမက်ဘဲ ဘ၀င္ျမင္႔မိတဲ႔အခ်က္ပဲ။ လူမ်ား အေျခခံလုပ္ထားျပီးသားကို ၀င္ျပင္တာက ဘာပညာမွမပါသေလာက္ပါပဲ။ ဘာနဲ႕တူလဲဆိုရင္ စြန္လႊတ္ရင္ လူမ်ားတင္ထားတဲ႔စြန္ ၀င္လႊတ္သလိုပဲ။ မခက္ဘူး။ ေလမိေနတဲ႔စြန္ေပါ႔ေလ။ သူ႕ဘာသာသူလည္း ျပဳတ္က်မလာဘူး။ အဲဒီလို ေရးႏိုင္တာနဲ႕ပဲ ကြ်န္ေတာ္ထင္လာတယ္။ ဘယ္ framework မွမခက္ဘူး။ ဘာမွလည္းမဟုတ္ဘူး။ ဟိုေနရာေလးမွာ ဟိုဟာျပင္၊ ဒီေနရာေလးမွာဒီဟာျပင္ပဲလို႕ထင္တယ္။ အဲ.... ထင္ခဲ႔တယ္ေပါ႔ေလ။ လူဆိုတာက အေတာ္ေလးထူးဆန္းတဲသတၱ၀ါ၊ လူမ်ားအသံုးမက်တာကို သာ ထင္ထင္ရွားရွားျမင္ရတယ္။ ကိုယ္အသံုးမက်ဘူးဆုိတာကိုေတာ႔ အတတ္ႏိုင္ဆံုးေမ႔ထားမိတယ္။

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

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

Spring မွာဆို AOP, Aspect Oriented Programming အတြက္ သူက အမ်ားၾကီး support လုပ္တယ္။ ကိုယ္က Spring 2.0 ေလ႔လာေနတုန္း၊ xml နဲ႕ configure လုပ္ေကာင္းတုန္းမွာ SpringSource က Spring 3.0 ကို annotation ေတြနဲ႕ သံုးတာကို promote လာလုပ္ေနတာေတြ႕ရတယ္။ IT မွာေပ်ာ္စရာေကာင္းတာက အဲဒါပဲ။ ေလ႔လာလုိ႕မဆံုးဘူး။ ေပ်ာ္တတ္ရင္ေပ်ာ္စရာေကာင္းပါတယ္။ အသံုးမက်တဲ႔သူနဲ႕ အသံုးက်တဲ႔သူကြာျခားသြားဖုိ႕ အေျပာင္းအလဲမ်ားမ်ားလုိတယ္။ သိပ္ကိုလြယ္ကူတဲ႔ေနရာမ်ိဳးမွာ ဘယ္သူက ေတာ္ျပီး ဘယ္သူက ညံ႕လဲခြဲရသိပ္ခက္တယ္။ အေျပာင္းအလဲကို မေၾကာက္ဘဲ၊ ေလ႔လာရမွာေပ်ာ္တတ္ဖို႕စိတ္ကိုျပင္ဆင္ထားရင္ ေနေပ်ာ္ပါလိမ္႔မယ္။

AOP ကို အရင္က ခက္ခက္ခဲခဲေရးၾကရတယ္။ အခုေတာ႔ သံုးေလးငါးေၾကာင္း config လုပ္လုိက္ရံုနဲ႕အဆင္ေျပတဲ႔ေခတ္ကိုေရာက္လာျပီ။ အၾကမ္းဖ်င္းေျပာရရင္ေတာ႔ AOP က Transaction Advice ေတြ ဘာေတြ လုပ္တဲ႔အခါသံုးတာေပါ႔။ ဥပမာ Customer A ကို database ထဲ insert မလုပ္ခင္၊ သူ Registered လုပ္ထားလားစစ္မယ္၊ျပီးေတာ႔ သူ႕ကို တစ္ျခား Black List Table မွာ တိုက္ဆုိင္မယ္၊ စတဲ႔ကိစၥမ်ိဳးေတြကို Before မွာလုပ္မယ္။ Customer A ကို create လုပ္ျပီးရင္ After မွာလုပ္ခ်င္တာေတြကို စုျပီး configure လုပ္ထားလုိ႕ရပါတယ္။ ဒါေတြလုပ္ဖုိ႕မ်ား AOP မလိုပါဘူးဆိုတာေတြျဖစ္ခ်င္လည္းျဖစ္လာမယ္။ Real world မွာေတာ႔ ဒီထက္ခက္ခဲတာေတြရိွပါတယ္။ Stand alone system နဲ႕ Distributed System ေတြရဲ႕ Complexity ေတြက ဘယ္လိုမွယွဥ္လို႕မရပါဘူး။ ေနာက္ပိုင္းမွာ code level မွာျပင္တာေတြထက္ Config ကေနပဲ လိုတာေတြကို ျပင္လုိ႕ရလာေအာင္ Flexibility နဲ႕ Maintainability အတြက္ ျပင္ဆင္လာၾကတာေတြ႕ရပါတယ္။

ဥပမာ Spring မွာ အရင္က iBATIS သံုးတယ္။ သူကေတာ႔ ဘုရားစူး ORM (Object-Realational Mapping)။ ORM framework ေတြေတာ္ေတာ္မ်ားမ်ားရိွတယ္။ Hibernate ကေတာ႔ ဆ်ာဂ်ီးေပါ႔။ သူတို႕မွာလည္း သူတုိ႕ျပႆနာနဲ႕သူရိွတာေတာ႔ရိွတယ္။ ORM ဆိုလို႕ သူတုိ႕ကို ဘာအတြက္သံုးလဲဆုိတာေလး နည္းနည္းျဖည္႕ေျပာလုိက္ခ်င္တယ္။ Database ခမ်ာ ႏွစ္ေပါင္းမ်ားစြာ Relational အျဖစ္နဲ႕ေနလာရာကေန OO ေတြ က သူ႕ကို OO လုိ နားမလည္တဲ႔ေကာင္ဆိုျပီး ေျပာတာကို ခံေနရတာၾကာျပီ။ အဲဒီေတာ႔ OO နဲ႕ Relational DB ေျပာရဆုိရလြယ္ေအာင္နဲ႕ အသံုးပိုက်လာေအာင္ ORM ေတြသံုးလာတာပါ။ အရင္က Obj တစ္ခုလံုးကို Table ထဲထည္႕လုိ႕မရဘူး။ သပ္သပ္စီပဲ။ Table ထဲထည္႕ခ်င္ရင္ column data တစ္ခုစီကို insert လုပ္ရတယ္။ Customer data ဆိုရင္ name,nric, ဘာညာ၊ဘာညာေတြ insert လုပ္ရတာသိပ္ပ်င္းဖုိ႕ေကာင္းတယ္။ အခုေတာ႔ ORM ေတြေၾကာင္႔ Insert(Customer) ဆိုတာမ်ိဳးနဲ႕ကိစၥျပီးတယ္။ စကားကိုျပန္ေကာက္ရရင္ Spring မွာ iBATIS အစား Hibernate ေျပာင္းသံုးခ်င္လည္း သိပ္အမ်ားၾကီးျပင္စရာမလုိဘူးဆိုတာပါ။ အဲဒီလို ေရရွည္မွာ ကိုယ္႔ဘ၀ကို သက္သာေစမယ္႔ကိစၥေတြမ်ားမ်ားသိသင္႔တယ္။ အဲဒါေတြကိုလည္း ကိုယ္႔ထက္ေတာ္တဲ႔သူေတြ လုပ္ထားျပီးျပီ။ နည္းနည္းေတာ႔ေလ႔လာလိုက္၊ အဆင္ေျပသြားေစရမယ္ဆိုတာမ်ိဳး။ (Spring ကို promote လုပ္ေနသလုိမ်ားျဖစ္ေနျပီလားမသိ။)

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

ဒီမွာလည္း Technical စစ္စစ္ၾကီးေတြမေရးေသးဘဲ စကားပဲမ်ားေနရတာလည္းအေၾကာင္းရိွပါတယ္။ တကယ္ေလ႔လာခ်င္တဲ႔သူေတြက ေျမွာက္ေပးဖုိ႕ပဲလုိတာပါ။ အဲေလ ... တုိက္တြန္းတာ၊ suggest လုပ္တာ .. အဲဒါေတြပဲလုိပါတယ္။ Professional အလုပ္လုပ္စားျပီး ေယာင္တိေယာင္နဆို ေရလည္ အျမင္ကတ္မိတယ္။ လူမ်ားပိုက္ဆံကို ညာယူတဲ႔သူမ်ိဳးလုိ႕ပဲထင္တယ္။ Professional ဆိုတာ လူမ်ားထက္ ဒီအလုပ္မွာ ပိုေတာ္ျပီး ေထာင္႔ေစ႔တဲ႔သူမ်ိဳးပဲျဖစ္ရမယ္။ ကိုယ္ေလာက္မသိတဲ႔သူကေမးရင္ ခ်က္ခ်င္းေဒါက္ခနဲမေျဖႏိုင္ဘဲ၊ ေဒါက္ခနဲ ေအာက္ေမးျပဳတ္က်ျပီး ပါးစပ္အေဟာင္းသားျဖစ္ရတာေလာက္ ရွက္စရာေကာင္းတာမရိွဘူးလို႕ထင္တယ္။ တစ္ခုခုေမးမွ I am not sure ဆုိရင္ အဲဒါ professional မဟုတ္ေတာ႔ဘူး။ ကိုယ္႔ကိုယ္ကို အလုပ္နဲ႕ပတ္သက္ရင္ Professional ဆိုတာကို ေမ႔မထားေစခ်င္ဘူး။ အဲဒီ အေတြးအေခၚေတြကို အဓိက promote လုပ္ခ်င္တာပါ။ ျမန္မာအမ်ားစုက ကိုယ္႔အထက္မွာ ျမန္မာတစ္ေယာက္ရိွတယ္ဆိုရင္ ေမးလုိ႕ကိုမဆံုးဘူး။ အလုပ္လုပ္မွာလား၊ ဒါမွမဟုတ္ ကိုယ္က စာလာသင္တာလားဆုိတာကိုေမ႔ေနၾကသလိုျဖစ္ေနတယ္။ တကယ္႔ဘ၀ၾကီးမွာ ကို္ယ္႔ဘာသာကိုယ္ေလ႔လာမွပဲ ကိုယ္တုိင္သိတဲ႔အသိကိုရတယ္။ သူမ်ားကိုေမးေနတာေတြက ခဏေနဆိုျပန္ေမ႔သြားတာပါပဲ။ ကိုယ္ သံုးေလးရက္ ရွာဖတ္ျပီးမွ သိလုိက္တဲ႔ဟာနဲ႕ လူမ်ားကို အလြယ္တကူေမးလုိ႕သိလုိက္ရတာနဲ႕က မွတ္မိပံုခ်င္းတူကိုမတူပါဘူး။

B a Professional @ Work

ျဖစ္ႏုိင္ရင္ တျခားသူေတြလုပ္ႏိုင္တာထက္ ပိုျပီး quality ေကာင္းေအာင္လုပ္ပါ။ ဘယ္ေနရာမွာမဆို၊ ကိုယ္လုပ္လုိက္တာဟာ နည္းနည္းေတာ႔ value added ျဖစ္ေအာင္။ ေမးလ္ျပန္ပို႕ရင္ေတာင္ လုိအပ္ရင္ အေရာင္ေလးဘာေလးသံုး၊ highlight လုပ္၊ ကိုယ္႔ေမးလ္ကို follow up လုပ္။ ဘယ္သူပဲၾကည္႕ၾကည္႕ ကိုယ္အလုပ္လုပ္ႏိုင္တာကို သိသာေအာင္ေနပါ။ အလုပ္လုပ္ႏုိင္ျပီး အျမန္ျပီးေအာင္လုပ္၊ ပိုတဲ႔အခ်ိန္သက္သာေအာင္ေနတာနဲ႕ လြယ္လြယ္ေလးေတြကို ခက္ေနတာနဲ႕ကလည္း တူသလုိလုိနဲ႕ အေတာ္ၾကီးကြာတယ္။

လူတုိင္းက Genius မဟုတ္ဘူး။ လူတိုင္းကလည္း ကိုယ္ေလာက္ပဲေတာ္တာမဟုတ္ဘူး။ ကိုယ္႔ထက္ေတာ္တာကို ေတာ္တယ္လုိ႕ လက္ခံလုိက္တာေကာင္းတယ္။ အဲဒီလို လက္မခံရင္ သူ႕လုိေတာ္ဖုိ႕မလြယ္ေတာ႔ဘူး။ ကိုယ္က ပိုေတာ္တယ္လုိ႕ထင္ရင္ သူ႕ဆီက ဘာပညာမွယူစရာမရိွေတာ႔ဘူး။ လူမ်ားေတြ အလြယ္တကူလုပ္ေနတာကို ကိုယ္က ခက္ေနရင္ "နည္းနည္းေလးေတာ႔ လြယ္ေနမယ္၊ လြဲလြဲေလးပဲေကာင္းပါတယ္ျဖစ္ေနမယ္။ " (ထူးအိမ္သင္ သီခ်င္းစာသား)

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

ကဲ ကဲ .. တရားသိမ္းၾကရေအာင္။ အဲေလ ... နိဂံုးခ်ဳပ္ၾကစို႕ ...။ လုိက္ဆိုလုိက္ပါဦး။

I will be a Professional @ work.

This is my commitment.



Ctrl+C De Bono's last book title :.

Ctrl+V In this post


R3gArdS,

Z3R0

1 comment:

Tina Kyi said...

း) သေဘာက်ကာ ျပံဳးမိပါသည္