Monday, September 13, 2010

Programmer (၅) မျိုး

ကျွန်တော် ကျောင်းသား ဘဝ programming လေ့လာတဲ့အချိန်ကစ ခုု လေ့လဲနေဆဲ အချိန်ထိ programmer ဆိုတဲ့သူတွေ အများကြီး တွေ့ဖူးပါတယ်။ အံ့ဩစရာ ကောင်းလောက်အောင် programming ကို ရူးသွပ်တဲ့သူတွေ ထိုင်ရာက မထ ၈ နာရီလောက် ကွန်ပျူတာရှေ့မှာ ငုတ်တုပ် ထိုင်ရေးနေတဲ့ သူတွေ အစုံပဲပေါ့။ ဒီလူတွေကိုု ခွဲခြား မိသလောက် Desktop, Web, Mobile filed အစုံ နယ်ပယ်စုုံ type ငါးမျိုးလောက် ရှိတယ်လိုု့ သတ်မှတ် နိုင်ပါတယ်။ ဒီငါးမျိုးဟာ ကိုယ့်ပတ်ဝန်းကျင်ထဲမှာ တစ်မျိုးမဟုုတ် တစ်မျိုး တွေ့နေရပါတယ်။ ကိုယ့်ကိုယ်ကိုလည်း ငါဘယ်ထဲ ပါမလဲလိုု့ တွေးကြည့်ပါ။ 
ငါးမျိုးထဲမှာ တစ်မျိုးကနေ တစ်မျိုးကိုု Project တစ်ခုုရဲ့  Timeline, Budget, Deadlines, Customer ရဲ့ urgent request, require features , System Analyst ဆီက Design တွေ DFD တွေ ELH တွေ စတာတွေကိုု အခြေခံပြီး ပြောင်းလဲချင် ပြောင်းလဲသွားနိုင်ပါသေးတယ်။ 



၁။ Duct Tape Programmer
“မင့် Code ကြီးက ကြည့်ရတာ ရှုပ်ရှက် ခက်နေတာပဲ . ဟေး  အဲဒီလိုု ေ-ာက်ရေးမပါတာတွေ ဂရုစိုက်မနေနဲ့ ငါ့ code က တကယ် အလုပ် လုပ်တယ်ကွ”

 

၂ ။ Perfectionist Programmer
“ ဟေး ပြောစမ်းပါ.. မင်း ငါ ရေးထားတဲ့ code နဲ့ ဘာလုပ်ချင်တာလဲ ”
Perfectionist

ဒီလိုလူတွေဟာ မင်း project ရဲ့ Deadlines တွေ budget တွေကိုု ဂရုုစိုုက်နေမယ့်သူတွေ မဟုုတ်ပါဖူး။ ဒါတွေဟာ Programming ဆိုုတဲ့ အနုုပညာနဲ့ နှိုင်းယှဉ်လိုုက်ရင် နည်းနည်းမှ အရေးပါတဲ့အရာတွေ မဟုုတ်ဖူးလိုု့ ခံယူထားတဲ့ သူတွေပေါ့ဗျာ။ သူတိုု့ဆီက နောက်ဆုုံးထွက်လာတဲ့ product မှာ မင်းအတွက် ရွေးချယ်စရာ မလိုုတော့လောက်အောင် ကောင်းမွန် လှပတဲ့ Format နဲ့ ဖြစ်လာမှာပါ။ perfectly beautiful code ဆိုတာမျိုးပေါ့  ။ သူတိုု့ရဲ့ code တွေဟာ Efficient ဖြစ်လွန်းလိုု့ မင်းနောက်လုုပ်ချင်တာတွေ လုုပ်စရာမလိုုလောက်အောင် ကောင်းတဲ့ MasterPiece တွေ ထွက်လာတာပေါ့။ သိုု့ပေမယ့် ဒီလူတွေက သူတိုု့ရဲ့ Code အကြောင်းကိုုပဲ အကျွမ်းတဝင်ရှိကြတဲ့သူမျိုးတွေပါ။

၃ ။ Anti-programming Programmer
“ကျွန်တော်ဟာ Programmer တစ်ယောက်ပါ။ ဒါပေမဲ့ ကျွန်တော် code မရေးပါဖူး ဘာလိုု့ ဘီးကိုု ပြန်တီထွင်နေမှာလဲ သူများထွင်ထားတာကိုု ယူသုုံးမှာပေါ့ကွာ”

Copy It
ဒီလိုုမျိုးလူတွေမှာ ခံယူချက်တစ်ခုု အမြဲတမ်းရှိပါတယ်။ “Code ရေးရတယ် ဆိုုတာချည်းကိုုက မကောင်းဘူး” . မင်း ဒီ problem အတွက် fix လုုပ်ဖိုု့ code တစ်ခုုခုု ရေးရတော့မယ် ဆိုုကတည်းက မင်းမှားနေပြီ။ တစ်ယောက်ယောက်က မင်းလိုု မှားဖူးပြီး fix လုုပ်ပြီးသား Code တွေ ရှိလိမ့်မယ် အဲဒါကိုု သုုံးလိုုက်ရုုံပေါ့။ ကဲ မလွယ်ဖူးလား” Anti-programming programmer တွေက မင်းကိုု သူတိုု့ရဲ့ နည်းလမ်းဟာ ဘယ်လောက် မြန်ပါတယ် ဆိုုတာ ရေပက်မဝင်အောင် ပြောပြလိမ့်မယ်။ ဒါပေမဲ့ လက်တွေ့မှာ တခြားသူတွေထက် မြန်ချင်မှလည်း မြန်မယ် နှေးချင်လည်း နှေးလိမ့်မယ်။  နောက်ဆုုံး သူတိုု့ဆီက project ထွက်လာတဲ့အခါကျ သူတို့ code ကိုု ကြည့်လုိုက်ရင် line ၂ဝ တည်းနဲ့လည်း ဖြစ်ချင် ဖြစ်နေလိမ့်မယ်။ အဲဒီ line ၂ဝ ဟာလည်း အင်မတန်မှ နားလည်ရ လွယ်ကူနေပါလိမ့်မယ်။ သူတိုု့ရဲ့ code တွေဟာ Effecient ဖြစ်ချင်မှလည်း ဖြစ်မယ် Forward-Compatible လည်း ဖြစ်ချင်မှ ဖြစ်ပါလိမ့်မယ်။ ဟမ်.. မင်း ဒါတွေ ဂရုုစိုုက်နေမှာလား ဒါဟာ အင်အား စိုုက်ထုုတ်ရတာ အနည်းဆုုံးပဲ မဟုုတ်ဖူးလား


၄ ။ Half-Assed Programmer
“မင်း ဘာလိုုချင်တာလဲ ငါ့ကိုုပြော .. အဲဒါ အခုအလုပ်လုုပ်နေတာပဲလေ မဟုုတ်ဖူးလား”
Half Ass
Quality ဆိုုတာ ဘာလဲလိုု့ မေးရလောက်အောင် ဂရုုမစိုုက်တဲ့ သူတွေပေါ့ဗျာ။ သူ့ကိုု ခိုုင်းထားတဲ့ Task ကိုု ပြီးအောင် ခပ်မြန်မြန်ပြီးအောင် လုုပ်မယ်။ မင်း သူ့ကိုု သဘောကျချင်မှ ကျမှာပါ။ သူ့လုုပ်ဖော်ကိုုင်ဖက်တွေဆိုု သူ့ကိုုတောင် အမြင်ကတ်ချင် ကတ်နေလိမ့်မယ်။ ဒါပေမဲ့ အထက်က Management နဲ့ Client တွေကတော့ သူ့ကိုုသဘောကျတယ်။ နောင် သူ့ code က ပြသနာတက်ပြီး မင်းတိုု့ကိုု ဒုုက္ခပေးချင်ပေးလိမ့်မယ်။ နောက်ဆုုံးတော့ မင်းမတတ်နိုုင်တဲ့ ခပ်မြန်မြန် ပြီးဖိုု့လိုုနေတဲ့အလုုပ်တွေကိုု handle လုုပ်နိုုင်တာတော့ သူလိုု programmer တွေပဲ ဖြစ်ပါတယ်။

၅ ။ Theroetical Programmer
“ခုလုုပ်နေတဲ့ဟာမှာ ဖြစ်နိုုင်ခြေတစ်ခုု ရှိတယ်.. ဒါပေမဲ့ ဒီဟာကလည်း နောက်ထပ် ရွေးချယ်စရာ တစ်ခုု ဖြစ်ချင် ဖြစ်နေမှာ”







Theoretical
ဒီလူတွေက ဘာလုုပ်ရင် အသင့်တော်ဆုုံးဆိုုတာထက် ဘယ်လိုု option တွေ ရှိနိုုင်သလဲ ဆိုုတာကိုု ပိုုစိတ်ဝင်စားတဲ့သူတွေပါ။ သူ့အချိန်အားလုုံးရဲ့ 80 % လောက်ကိုု ကွန်ပျူတာကြီး ငေးစိုုက်ကြည့်ပြီး တွေးနေတာနဲ့ ပြီးသွားတာပဲ ။ 15 % လောက်ကိုု သူ့အထက် လူကြီးနဲ့ ဒီမမျှမတ Deadline အကြောင်း ငြင်းခုုံနေတာရယ် ကျန်တဲ့ 4 % လောက်ကိုု တခြား ရွေးစရာ option တွေ ရှာနေတာရယ် နောက်ဆုုံး 1 % လောက်ကိုုမှ တကယ့် coding ရေးတာရယ်နဲ့ ပြီးသွားစေပါတယ်။ နောက်ဆုုံးပြီးသွားတဲ့ product မှာ အောက်က စာကြောင်းလေး အမြဲပါနေပါလိမ်မယ့် “ မင်း ငါ့ကိုုသာ ဒီထက် အချိန်ပိုုပေးရင် ငါ ဒီထက် ကောင်းတဲ့ နည်းနဲ့ လုုပ်ပေးလိုု့ရတယ် ”
အထက်က ငါးမျိုးမှာ Duct Tape နဲ့ Half-Assed , Perfectionist နဲ့ Theoretical တိုု့က တူပုုံရပေမယ့် သေချာ တွေးကြည့်ရင် မတူပါဖူး။
နောက်ထပ် Type တွေလည်း ရှိနိုုင်ပါသေးတယ်။ mechanic programmer လိုု့ခေါ်တဲ့ Build Engineer တွေပေါ့။ product နဲ့ နောက်ဆုုံး finishing ပိုုင်းကိုု လုုပ်တဲ့သူတွေပါ။ build လုုပ်တယ် အလုုပ်မလုုပ် စောင့်ကြည့်တယ်၊ ဒါပေမဲ့ ဒါဟာ အထက်က programmer ငါးမျိုးစလုုံးက လုုပ်တတ်တယ်လိုု့ ယူဆလိုု့ ထည့်မရေးတော့ပါဖူး။
ကျနော်ကတော့ ကိုယ့်ကိုုယ်ကိုုယ် Code မရေးချင်တဲ့ (Anti-Programming)  Duct taper တစ်ယောက်လိုု့ ထင်ပါတယ်။ မိတ်ဆွေတိုု့ရော ကိုုယ့်ကိုုယ့်ကိုုယ် ဘယ်လိုု ထင်သလဲဆိုုတာ Comment လေးတွေ ပေးခဲ့နိုုင်ပါတယ်။ အကြံပေးစရာရှိတာ ဆွေးနွေးစရာများကိုုလည်း တစ်ပါတည်း ရေးခဲ့နိုုင်ပါတယ် =D

Other link :     http://www.infed.org/biblio/b-explrn.htm
http://blogs.techrepublic.com.com/10things/?p=262
http://stevenbenner.com/2010/07/the-5-types-of-programmers/ မှ
postကိုု သင့်တော်သလိုု ဘာသာပြန်ကာ ရေးသားပါသည်။ ဖတ်လိုု့ အဆင်ပြေပါက မူရင်းရေးသားသူ တော်၍ဖြစ်ပြီး မပြေပါက ဘာသာပြန်သူ ကျနော် ညံ့သောကြောင့် ဖြစ်ပါသည်။

1 comments: