Skip to main content

Software Engineer တွေ ဖတ်သင့်တဲ့ စာအုပ်များ

Software Engineer တွေ ဖတ်သင့်တဲ့ စာအုပ်များ
Photo by Jilbert Ebrahimi on Unsplash

အောက်မှာဆက်ပြောမယ့်စာအုပ်တွေက အနည်းဆုံး work experience 2 ~ 3 years ရှိမှပိုအဆင်ပြေပါလိမ့်မယ် ဒါမှမဟုတ် ကိုယ်ကနောက်တစ်ဆင့်ကို ထပ်တက်ချင်တာ ပိုပြီးနားလည်တတ်ကျွမ်းချင်တာ ဆိုတဲ့သူတွေအတွက် ညွှန်းချင်တာပါ software engineer တစ်ယောက်အနေနဲ့ ဖတ်သင့်တဲ့စာအုပ်တွေဖြစ်လို့ framwork တစ်ခု language တစ်ခုကို သင်ပေးတဲ့စာအုပ်တွေတော့မဟုတ်ဘူးပေါ့ဗျာ တစ်ချို့ဟာတွေတော့ စာဖတ်ရတာ နည်းနည်း လေး တယ်။

Dependency Injection: Principles, Practices, and Patterns by Mark Seemann and Steven van Deursen

DI နဲ့အစချီထားပေမယ့် DI အပြင် cross cutting concerns တွေထည့်တာ aspect oriented programming, domain driven design, common DI patterns, anti patterns တွေနဲ့ software တစ်ခုရဲ့ dependency graph ကဘယ်လိုရှိသင့်တယ်ဆိုတာကို အတွေးပွားစေတဲ့စာအုပ်ပါ။ C# dotNet ကိုအခြေခံပြီးရေးထားပေမယ့် ရှေ့အပိုင်းတွေက တော်တော်လေး generic ဖြစ်တော့ ကျွန်တော်ကတော့ framework အကြောင်းရှင်းတာတွေကိုကျော်ပြီး ကျွန်တော်လိုချင်တာကိုဖတ်ပါတယ်။

Domain-Driven Design by Eric Evans

တော်တော်လေးကြာနေပြီဖြစ်တဲ့စာအုပ်ပါ ဒါပေမယ့် အခုထိ DDD အတွေးအခေါ်တော်တော်များများက အသုံးဝင်နေဆဲပါပဲ သုံးတဲ့ language အပေါ်မူတည်ပြီး ပိုလို့တောင် concise ဖြစ်သွားပါသေးတယ်။​ ဒီစာအုပ်ရဲ့အဓိကရည်ရွယ်ချက်က complex ဖြစ်တဲ့ business logics တွေ requirements တွေကနေ domain object တွေ communication pattern တွေကို မြန်မြန်ဆန်ဆန် spot လုပ်နိုင်အောင် အတွေးအခေါ်ကို train ပေးတဲ့သဘောပါ။ Theory ပိုင်းတွေနဲ့ သူတို့ခေတ်က challenges တွေကို ရှင်းပြထားတာဆိုတော့ ကျွန်တော့်အတွက်တော့ ဖတ်ရတာနည်းနည်းလေးခဲ့ပေမယ့် system design round တွေမှာရော လက်တွေ့လုပ်ငန်းခွင်မှာပါ ပိုပြီးမြင်တတ် တွေးတတ်လာတဲ့အတွက် အကျိုးရှိမယ်ထင်ပါတယ်။

Implementing Domain-Driven Design by Vaughn Vernon

အပေါ်ကစာအုပ်ကိုဖတ်ပြီးပြီဆိုရင်တော့ တစ်ဆက်တည်းဒီစာအုပ်ကို ပူပူနွေးနွေးဆက်ဖတ်သင့်ပါတယ်။ အပေါ်ကစာအုပ်ထဲကမရှင်းတာတွေ ဒီမှာရှင်းသွားပါမယ်။ မျက်စိထဲမမြင်တာတွေ ပိုမြင်လာပါမယ်။ နှစ်အုပ်ကို တစ်ဆက်တည်းဖတ်ရင် အာဘော်နှစ်ခုကိုယှဥ်ထိုးကြည့်ပြီး ပိုပြီးဆက်စပ်မိသွားပါလိမ့်မယ်။

Test Driven Development: By Example by Kent Beck

TDD ကိုကြိုက်တဲ့သူလဲရှိသလို မကြိုက်တဲ့သူလည်းရှိတယ်ပေါ့။​ ကျွန်တော်ကတော့ personally က behavioiural driven (BDD) ကိုပိုသဘောကျပါတယ်။ ဘယ်လိုပဲဖြစ်ဖြစ် TDD တစ်ခုတည်းမဟုတ်ဘဲ software testing နဲ့ပတ်သက်တဲ့ အယူအဆ သဘောတရား ချဥ်းကပ်ပုံတွေကို အများကြီးနားလည်သွားပါလိမ့်မယ်။

Extreme Programming Explained by Kent Beck

TDD ဆိုတာ တစ်ကယ်တော့ extreme programming ကနေပေါ်လာတဲ့အရာတစ်ခုပါ။​ အခု agile တို့ CI/CD တို့ဆိုတာလည်း XP ကနေဖြစ်လာတာတွေပါ။ TDD ကိုဖတ်ပြီးရင်တော့ XP အကြောင်းလေးလည်း နည်းနည်းမြည်းစမ်းကြည့်သင့်ပါတယ်။ ချက်ချင်းကြီး အကျိုးမရှိရင်တောင် တရေးရေးနဲ့ အဲ့စာအုပ်ထဲကအကြောင်းတွေ ခေါင်းထဲပေါ်လာတဲ့အခိုက်အတန့်တွေ ရှိလာပါလိမ့်မယ်။

Working Effectively with Legacy Code by Michael C. Feathers

ကိုယ့်ရဲ့ လက်ရှိ knowledge ကနေ scale up ဖြစ်ချင်တဲ့သူတိုင်း ဖတ်ကိုဖတ်သင့်တဲ့စာအုပ်ပါ။ ကျွန်တော်တို့က နေ့စဥ် change request တွေ သူများ project တွေနဲ့ လုံးပန်းနေရတာမို့ code ပြင်တာ feature အသစ်ထည့်တာကို ဘယ်လို strategy နဲ့သွားရမလဲ unit test တွေကိုဘယ်လို leverage လုပ်ရမလဲ အများကြီးလေ့လာစရာတွေရှိပါတယ်။ Good code ဆိုတာဘာလဲ ဘယ်လို code မျိုးက ပြောင်းလွယ်ပြင်လွယ်တာလဲဆိုတာကို ပိုပြီးမြင်သာလာအောင် ဒီစာအုပ်ကိုဖတ်သင့်ပါတယ်။

ကဲ high-level, system design level က စာအုပ်တွေပြီးတော့ ဒီတစ်ခါ low-level က စာအုပ်တွေကိုပြောပါမယ်။

Operating Systems: Three Easy Pieces (Remzi Arpaci-Dusseau, Andrea Arpaci-Dusseau)

Operating System တွေနဲ့ပတ်သက်ပြီး စာဖတ်ရတာ မလေးဘဲ ပါးပါးလေးပုတ်သွားတဲ့ blog ပါ။ အသေးစိတ်မဟုတ်ဘဲ အဓိကအစိတ်အပိုင်သုံးခုဖြစ်တဲ့ memory, file system နဲ့ concurrency အကြောင်း ရှင်းပြထားတာပါ။ ကျွန်တော့်လို OS အကြောင်းတို့ computer architecture အကြောင်းတို့ မသင်ခဲ့ရတဲ့သူတစ်ယောက်အတွက် နားလည်ရအလွယ်ဆုံးထဲမှာပါပါတယ်။ နောက်ဒီကောင်က Free ပါ။

The Art of UNIX Programming by Eric S. Raymond

Computer Architecture တို့ Operating System တို့ ကျောင်းမှာမသင်ခဲ့ရရင် ဖတ်ရတာ တော်တော်လေးပါလိမ့်မယ်။​ ကျွန်တော့်အတွက်လည်း တော်တော်ခက်ပါတယ်။ ဒါပေမယ့် အရေးကြီးတာက unix ဘယ်လိုလုပ်နေလဲဆိုတာ ရေးရေးလေးမြင်သွားရင်ကို နောက် debug လိုက်ရတာဖြစ်ဖြစ် automation လုပ်တာဖြစ်ဖြစ် ထူးထူးဆန်းဆန်း task တွေ R&D လုပ်ရတဲ့အခါမျိုးမှာဖြစ်ဖြစ် သူများထက်နှာတစ်ဖျားပိုသာပါတယ်။ အပေါ်က OS 3 easy pieces ပြီးရင် တော်တော်လေးဖတ်ရအဆင်ပြေမှာပါ။

The Structure and Interpretation of Computer Programs by Abelson, Sussman, Sussman

ဒါကတော့ programming language တွေရဲ့ အလုပ်လုပ်ပုံ compiler, interpreter နဲ့ပတ်သက်တာတွေကို low level ကျကျရေးထားတာမျိုးပါ။

နောက်ဆက်ပြောမှာကတော့ book series ပါ တော်တော်လေးမိုက်ပါတယ် ကျွန်တော်ကတော့ဖတ်တာ voume 1 ရှိပါသေးတယ်

Write Great Code: Understanding The Machine 2nd Edition by Randall Hyde

Write Great Code, Volume 2: Thinking Low-Level, Writing High-Level
Write Great Code, Volume 3: Engineering Software
Write Great Code, Volume 4: Reading and Writing Files

နောက်ဆုံးတစ်ခု Apple Developer တွေအတွက်ပါ အထူးသဖြင့် ကျွန်တော့်လို platform/infra ဘက်သွားတဲ့သူတွေအတွက် သင့်တော်ပါတယ်။ ဖတ်ရတာတော့ တော်တော်လေးပါတယ်။

OS Internals Trilogy by Jonathan Levin

ကျွန်တော်ဆက်ပြီး ဖတ်ဖို့လုပ်ထားတဲ့စာအုပ်ကတော့ ဒီတစ်အုပ်ပါ

The Art of Mac Malware by P.Wardle

ဆက်ရှိသေးတာကတော့ clean code တို့ clean architecture တို့ပေါ့ဗျာ ပြောရရင် ကျွန်တော်က Uncle Bob ရဲ့ fan တော့မဟုတ်ဘူးဗျ သူ့စာအုပ်တွေဖတ်ရင် ကျွန်တော်အမြဲပြောနေကျ John Ousterhout ရဲ့ Philosophy of Software Design ကိုပါ တွဲဖတ်သင့်တယ်။