สรุปบทความ The Mark of true senior developer
เป็นบทความที่คุณ Aphinya Dechalert เขียนไว้เมื่อวันที่ 28 มิย. 2019 ครับ
ใครสนใจอ่านเพิ่มเติมสามารถอ่านได้ที่ https://medium.com/madhash/the-marks-of-a-true-senior-developer-d5f3b11c3375
Senior Developer ไม่ได้เกี่ยวกับ อายุงานหรือประสบการณ์
เรื่องนี้ส่วนตัวก็เห็นด้วยนะครับ มันมีคนที่อยู่สั้นแต่สามารถพัฒนาตัวเองได้รวดเร็ว กับคนที่อยู่มานาน แต่ไม่มีอะไรพัฒนาเลย
ส่วนใครที่อายุงานเพิ่มความสามารถเพิ่มด้วย ส่วนตัวเชื่อว่าจะต้องมีคุณสมบัติที่จะเขียนต่อไปไม่มากก็น้อยครับ ซึ่งสิ่งเหล่านี้ก็จะเกิดจากการเรียนรู้ ล้มลุกคลุกคลานกับงานที่ทำนั่นเอง
ก่อนจะเข้าเรื่องคุณสมบัติ ขอทิ้งท้ายด้วยประโยคชวนคิดที่เคยได้ยินมาจากคุณ รวิศ หาญอุตสาหะ ว่า
ประสบการณ์ 10 ปี นี่หมายถึง ประสบการณ์ 10 ปีจริงๆ หรือประสบการณ์ 1 ปี 10 ครั้ง
Programming Paradigm
สิ่งหนึ่งที่ช่วงหลังส่วนตัวเห็นด้วยมาก คือ Programming is a language. เมื่อมันเป็นภาษามันคือเครื่องมือหนึ่งในการสื่อสาร ซึ่งมันจะใช้ในการสื่อสารทั้งกับคนและกับเครื่อง
โดยเราจะสังเกตได้จากกระบวนการคิดของเขา ซึ่งอาจจะเป็นแนวทางของ OOP หรือ Functional Programming หลักการ Clean Code , Test Driven Development
ทั้งหมดนั้นจะนำไปสู่ Structure of Coding ว่าจะประกอบด้วยอะไรในโครงสร้างของการเขียนโปรแกรม
จากนั้นจะเข้าสู่การจัดรูปให้มีเนื้อหาที่สามารถสื่อสารกับคนอื่นๆ ได้อย่างสละสลวยเหมือนกับเขียนบทความหรือนิยาย
Ability to Create
ผู้เขียนจะสามารถเข้าใจในสิ่งที่เขียนในโค้ดได้ สามารถบอกที่มา หลักการในการนำมาซึ่งโค้ดที่เขียน
สิ่งที่อาจะจะสามารถวัดได้คือในเวลาที่ลงมือเขียนโปรแกรม อาจจะไม่ได้ใช้ Google มากนัก (ส่วนตัวเชื่อว่า ในช่วงวางแผนอาจจะมีการค้นหาเพื่อทำ Literature Survey บ้าง แต่บางคนก็ใช้การเขียนโค้ดทดลองเลย)
Objective Criticism
Senior Dev จะสามารถให้คำวิจารณ์ตามข้อเท็จจริง โดยมีการใช้หลักเหตุและผลที่เหมาะสม ตามสถานการณ์นั้นๆ
นอกจากนี้ Senior Dev จะสามารถมองภาพรวมของงาน เพื่อทำการวิเคราะห์ และโฟกัสกับ ผลลัพธ์หรือแนวทางการแก้ปัญหามากกว่า Tools ต่างๆ ได้
แยกแยะระหว่าง Good Software กับ Working Software ได้
โดย Dev จะทราบว่า ปัญหาที่เกิดขึ้นจากการปล่อย ให้เกิด Technical Debt หรือ Code Smell จะส่งผลอย่างไรในระยะยาว และสามารถที่จะบริหารจัดการสมดุลย์ระหว่าง Good และ Working Software ตาม timeline ให้เหมาะสมได้
ตรงนี้เนื่องจากว่าในการพัฒนาอะไรสักอย่างมา มันมักจะมีข้อจำกัดด้านเวลามาเกี่ยวข้องเสมอ บ่อยครั้งที่เวลาไม่สามารถทำให้ทุกส่วนของ Software มันเป็น Best Software ได้ เราจำเป็นที่จะต้องตัดสินใจว่า ส่วนไหนต้องทำให้เนียน ให้ดี ส่วนไหนปล่อยได้บ้าง เพื่อให้ Software สามารถเดินหน้าต่อได้ตามเวลา
ซึ่งตรงนี้ถ้าใครไม่สนใจเรื่องเวลา ปล่อยให้มัน Delay ได้ ก็ไม่น่าจะมีผลอะไรครับ แต่ส่วนตัวมักจะเจอว่า การเสียเวลาเพิ่มมักจะนำมาสู่การเสียโอกาสบางอย่างเสมอครับ
จริงๆ อย่างตัว Clubhouse นี่ก็เป็นกรณีศึกษาที่ดีของ Software ที่ส่วนตัวคิดว่ายังไม่ได้เสร็จสมบูรณ์ แต่ก็สามารถออกมาให้ใช้งานได้ และทำส่วนที่ต้องเป็น The best กับส่วนที่ Just work ได้อย่างดี
Able to Teach
การเป็น Senior Dev ไม่ใช่ว่าจะส่วนตัวจะต้องรับโหลดงานที่เพิ่มขึ้น แต่ควรจะต้องทำให้ทีมสามารถรับโหลดงานได้เพิ่มขึ้น โดยเพิ่มประสิทธิภาพของคนในทีมได้
การสอนงานก็เป็นสิ่งที่ควรจะทำได้เป็นอย่างดี โดยสามารถแบ่งระดับความสามารถในการสอนได้ 4 ระดับ
- Tell
- Explain
- Demonstrate
- Inspire
นอกจากนี้ Senior Dev จะสามารถย่อยข้อมูลทางเทคนิคที่ดูยากๆ ออกมาอธิบายให้ทีมงานเข้าใจได้โดยง่าย ซึ่งในการที่จะทำตรงนั้นได้นั้น ก็จะต้องมีความสามารถด้านการสื่อสารเข้ามาด้วย
ทั้งหมดนี้คือ สรุปของบทความครับ ถ้าใครสนใจข้อมูลเต็ม ก็แนะนำให้อ่านตาม Link ด้านบนครับ ส่วนตัวก็ยังคงต้องพัฒนาตัวเองต่อไปครับ