อ่านเจอบทความเกี่ยวกับ การเป็น PHP Developer ที่ดีจาก Sitepoint
เป็นบทความที่อธิบายว่า developer ที่ดีทุกคน
จำเป็นต้องทำการปรับปรุงอยู่อย่างเสมอ
ดังนั้นคุณต้องเรียนรู้ และ นำความรู้ใหม่ๆ ไปใช้ในทุกๆ วัน
มาดูกันว่าต้องทำอย่างไรบ้าง
โดยผมเคยเขียนไปบทความหนึ่ง สำหรับแนวทางการเป็น developer ที่ดี
บทความของ Sitepoint อธิบายไว้ 4 ส่วนคือ
1. How to be a professional ?
แน่นอนว่า คุณต้องมีความเป็นมืออาชีพ ในงานที่คุณทำ
เพราะว่า ทุกอย่างมันเกิดจากคุณ
ดังนั้น สิ่งที่คุณต้องเคารพในความเป็นมืออาชีพ ประกอบไปด้วย
อย่าคิดว่าตัวเองเก่งสุดๆ หรือ เห็นแก่ตัว หรือมี Ego สูง
การเรียนรู้ การทำงานร่วมกัน การแบ่งปัน
นั่นคือสิ่งที่ส่งเสริมให้ทีมมีสภาวะการทำงานที่ดีกว่า การทำงานคนเดียว
มีความรับผิดชอบในสิ่งที่ทำ
developer ควรมีหน้าที่ และ ความรับผิดชอบมากกว่า การเขียน code
ลองดูสิว่า ในบริษัท หรือ ทีม ที่ทำงานอยู่ได้รับผิดชอบอะไรบ้าง
หรือหน้าที่ความรับผิดชอบไปอยู่ที่ Leader และ Management กันหมด
developer ที่เป็นมืออาชีพ จะไม่ยอมสร้าง bug ที่มีมันกระทบต่อบริษัทขึ้นมา
หรือถ้ามันเกิดขึ้นมา ก็ต้องรู้และแก้ไขได้อย่างรวดเร็ว
ยอมรับการวิจารณ์ในเรื่องต่างๆ
ให้เชื่อเถอะว่า ไม่มี software ใด ที่ไม่มี bug หรอกนะ
แต่สิ่งที่เหนือกว่าคือ จะจัดการ หรือ รับมือกับมันอย่างไรมากกว่า
เราสามารถที่จะรับฟังและเรียนรู้ จากความผิดพลาดต่างๆ ได้เสมอ
และนำมันมาปรับปรุง และทำให้มันดีขึ้นอยู่อย่างเสมอ
แต่ถ้าไม่ยอมนำความผิดพลาดมาปรับปรุง หรือผิดซ้ำแล้วซ้ำเล่าในสิ่งเดิมๆ
น่าจะเรียกว่า ….
และไม่หยุดที่จะเรียนรู้ (Stay Hungry Stay Learning)
ไม่ใช่จะเรียนรู้แต่ในเวลางานเท่านั้น นอกเวลางานคุณก็ควรแบ่งเวลาสำหรับการเรียนรู้ไปด้วย
2. How to write good code ?
เป็นสิ่งที่สำคัญมากๆ ของ developer เพราะว่าเป็น developer ก็ต้องเขียน code ไงล่ะ
ดังนั้น วิธีการเขียน code ให้ดีจึงสำคัญ
โดยในบทความอธิบาย ไว้ดังนี้
เริ่มจากอ่าน sourcecode เยอะๆ
คุณจะไม่มีวันอ่านเร็วเลย ถ้าคุณไม่หัดอ่าน
เช่นเดียวกัน ถ้าคุณอยากเป็น developer ที่เขียน code ได้สวยๆ
คุณก็ต้องหัดเขียน code สวยๆ สิ
แต่ code สวยๆ มาจากไหนล่ะ คุณก็ต้องรู้ก่อนว่า code ที่มันดี มันสวยเป็นอย่างไร
นั่นก็คือ เริ่มด้วยการอ่าน code ของคนอื่น
ง่ายๆ เริ่มด้วยการอ่าน code ของ library ที่คุณนำมาใช้งาน
ลองเข้าไปเปิด code ลองทำความเข้าใจกับมัน
ลองเริ่มเขียน test ขึ้นมา แล้วคุณจะเข้าใจมันมากขึ้น
การอ่าน code เป็นทางที่ช่วยให้คุณเป็น developer ที่ดีกว่า ได้อย่างรวดเร็ว
สามารถหาข้อผิดพลาดได้อย่างรวดเร็ว
ยิ่งถ้าได้ทำการ pair programming และ review code ด้วยจะแจ่มมากๆ
เรียนรู้เทคนิคใหม่ๆ อยู่เสมอ
เปิดรับแนวคิดใหม่ๆ อยู่อย่างเสมอ อย่าคิดว่าสิ่งที่เรารู้หรือเป็น มันดีที่สุดแล้ว
ความจริง คือ มันไม่มีสิ่งที่ดีที่สุด
มันมีแต่สิ่งที่เหมาะสมในบริบทนั้นๆ มากกว่า
developer ที่ดีจะไม่หยุดเรียนรู้ในสิ่งใหม่ๆ
เพราะว่า ถ้าคุณหยุดเมื่อไร นั่นหมายถึงคุณกำลังถอยหลัง
ทำตัวให้ช้าลงบ้าง
ในบางครั้งการแก้ไขปัญหาไม่จำเป็นต้องการความเร็วเสมอไป
แต่จำเป็นต้องการความถูกต้อง ดังนั้น ให้ลดความเร็วลงบ้าง
เพื่อให้ตรวจสอบในสิ่งที่ทำ ว่าถูกต้องหรือไม่
ไม่มี bug ใหญ่ๆ แล้วใช่ไหม
การทำงานเร็วๆ มักจะพบมาก จาก developer ใหม่ๆ
เนื่องจากพยายามทำให้งานเสร็จไวๆ
แต่สิ่งที่ได้กลับมา คือ Bug ทั้งนั้น
ทำให้เราต้องเสียเวลาแก้ไขอีก มันยิ่งทำให้เราช้าลง
ดังนั้น แนวทางนี้ไม่น่าจะถูกต้อง คุณว่าไหม ?
แต่ก็ไม่ได้ทำงานช้า หรือ ทำงานอื่นๆ เช่นพวก Senior ชอบนั่งทำงานไป ดูหุ้นไปนะ
แบบนี้ก็ใช่เรื่องนะครับ
ดังนั้น ให้คิดก่อนทำนะครับ แต่ก็ไม่ใช่คิดมาก จนไม่ได้ทำ
ทดสอบ code ที่คุณเขียนด้วยนะ
ไม่ใช่ว่าคุณต้องทำ TDD นะ แต่ให้คุณเชื่อว่า การทดสอบนั้นคือสิ่งที่สำคัญ
สำหรับการส่งมอบงานที่มีคุณภาพ
คุณจะรู้ได้อย่างไร ว่าอะไรมันพัง โดยไม่มีการทดสอบ ?
คำตอบที่มักจะได้คือ debug ไงล่ะ … อืมนะ
คุณจะรู้ได้อย่างไร ว่าคุณทำอะไร บน feature อะไร บน code ส่วนไหน ?
คำตอบที่มักจะได้คือ ก็ทำตาม requirement ไงล่ะ … อืมนะ
ดังนั้นถ้าคุณมี test หรือการทดสอบแล้ว คุณสามารถที่จะเรียนรู้กับมันได้
ว่างานที่เรากำลังทำอยู่เป็นอย่างไร
แน่นอนว่าเขียน test นั้นมันยาก
แต่ให้เชื่อเถอะว่า มันจะดีต่อคุณในระยะยาว
สุดท้ายต้องทำเข้าใจว่า เครื่องมือ มันช่วยแก้ไขปัญหาอะไร อย่างไร
ถ้าคุณไม่เข้าใจว่า เครื่องมือที่คุณนำมาใช้งาน มันช่วยอะไรคุณ
คำถามคือ แล้วคุณใช้มันไปทำอะไร ?
ดังนั้น คุณต้องเข้าใจในเครื่องมือที่คุณใช้ก่อน
เครื่องมือที่ดีที่สุด คือ เครื่องมือที่ไม่ทำให้คุณช้าลงนะครับ
ดังนั้นอย่าเอาเครื่องมือมาตั้ง ก่อนที่คุณจะเริ่มเขียน code บรรทักเแรก
3. How to stay on track ?
คุณจะทำงานอยู่ในสาย developer ได้อย่างไร ถ้าคุณหมดไฟ
หรือคุณอาจจะทำงานหนักไป ทำงานแบบหามรุ่งหามค่ำ
เพื่อให้ได้สิ่งที่คุณต้องการ เช่น ทำงานให้เสร็จ และ ทำให้มันดีกว่าเดิม
สุดท้าย เมื่อคุณทำไปนานๆ หรือบ่อยๆ คุณจะรู้สึกเหนื่อยล้า ท้อใจ
เพราะว่า สิ่งที่คุณหามานั่นคือเงิน ถูกใช้ไปกับค่าใช้จ่ายเรื่องสุขภาพ
มันไม่คุ้มกันเลย
ดังนั้น สิ่งที่คุณสามารถทำได้ก็คือ ถอยหลังออกมา จากการทำงานแบบหามรุ่งหามค่ำ
ไม่ทำงานเพียงคนเดียว และ มีกรอบเวลาในการทำงาน
เช่นการทำงานเป็นทีม ทำ pair programming เป็นต้น
ทำการดูแล code ให้มันสะอาดอยู่เสมอ
ไม่ใช่เพื่อคนอื่นเท่านั้น แต่เพื่อคุณด้วย
code ที่ไม่มี test และเอกสาร มันก็คือ code ขยะดีๆ นี่เอง
แล้วมันจะกลับมาทำร้ายคุณอยู่เสมอ
ดังนั้น อย่าเพียงสนใจแค่เพิ่มความสามารถใหม่ๆ เข้าไป
แต่ให้ดูด้วยว่า code เรามันดีพอไหม ที่จะเพิ่ม code ใหม่ๆ เข้าไป
ถ้ายังไม่ดี แนะนำให้ทำการ refactor code ซะ
ให้ทำทีละเล็กละน้อย แต่ทำอย่างสม่ำเสมอ
การ refactor code ไม่ใช่การ rewrite นะครับ
ให้จำไว้ว่าการ estimate นั่นไม่ใช่การ commitment ว่างานจะต้องเสร็จตามนั้นทั้งหมด
เพราะว่ามันคือการเดาล้วนๆ ดังนั้นอย่าใช้เวลากับมันมากไป
ลงมือทำเลยดีกว่า แล้วคุณจะรู้เองว่าคุณเดาเป็นอย่างไร
แต่ถ้าคุณต้อง estimate จริงๆ ต้องอธิบายให้คนอื่นฟังให้ชัดเจนว่า
สิ่งที่ estimate ไปไม่ใช่ commitment นะ
ไม่เช่นนั้น งานจะเข้า … ปกติก็งานเข้ากันใช่ไหมล่ะ ?
จำไว้ว่า มันก็แค่การเดา ไม่ใช่การสัญญา
4. How to be a master ?
สำหรับใครก็ตามที่ต้องการเป็น master developer แล้ว
สิ่งที่ต้องเพิ่มเข้ามาก็คือ soft skill ต่างๆ ประกอบไปด้วย
การสื่อสาร
develop ร้อยละ 99 มักจะคุยกับคนอื่นๆ ไม่รู้เรื่อง
ไม่เชื่อลองกลับไปบอกคนที่บ้านสิ ว่าคุณทำอะไรอยู่ !!
แล้วจะรู้ว่าคุณคุยรู้เรื่องไหม
การพูดคุยที่มีประสิทธิภาพควรมีความ เรียบง่าย
ไร้ซึ่งคนกลาง ระหว่างผู้พูด และ ผู้รับ
เนื่องจากยิ่งมากคนยิ่งมากความ ยิ่งมีความซับซ้อนเพิ่มขึ้นเรื่อย
ดังจะพบได้ในองค์กรขนาดกลางถึงขนาดใหญ่
และอย่ากลัวที่จะถาม ในสิ่งที่ควรถาม
ต่อมาคือการทำงานร่วมกับผู้อื่นๆ
เช่นฝ่าย business, management, team และ ลูกค้า
นั่นคือ ต้องสามารถทำงานเป็นทีมได้
สิ่งที่สำคัญต่อมา คือ เรื่อง The curse of knowledge
ปัญหานี้มันจะเกิดขึ้นเมื่อ คุณพยายามอธิบายบางสิ่งบางอย่าง
ที่คุณรู้อยู่แล้ว ให้กับคนอื่นฟัง
โดยที่คนอื่นนั้น ไม่ได้มีความรู้ในสิ่งเหล่านั้นเลย
ผลทำให้ผู้รับฟังไม่รู้เรื่องอะไรเลย
ดังนั้น สิ่งที่คุณต้องทำให้ได้ หรือ ปรับปรุงก็คือ
คุณต้องหาคำพูดเกี่ยวกับปัญหา หรือ สิ่งเหล่านั้น
และรายละเอียดที่เข้าใจง่าย
คุณต้องเห็นอกเห็นใจ ผู้รับฟังก่อนเสมอ ไม่ใช่สนใจเพียงตัวเองเท่านั้น
คุณต้องเข้าใจ business ที่คุณทำอยู่
คุณไม่สามารถที่จะพัฒนา software ที่ดีขึ้นมาได้
ถ้าคุณไม่รู้ว่า business ที่คุณอยู่มันคืออะไร และ มีปัญหาอะไร
ถ้าคุณไม่รู้เรื่องใน business ของคุณ มันจะส่งผลออกมายัง code ที่คุณสร้างขึ้นมา
นั่นคือ ถ้ายังไม่ชัดเจนในเป้าหมาย หรือ ปัญหา
คุณก็จะสร้าง code ที่มั่วไปหมดขึ้นมา
ถ้าคุณมีความรู้ทาง business แล้ว เป้าหมายต่างๆ แล้ว
คุณจะสามารถแนะนำได้ว่า สิ่งใดควรทำ หรือสิ่งใดไม่ควรทำ
เพราะว่า เวลา มันมีค่าใช้จ่าย และมันมักจะแพงขึ้นเรื่อยๆ
และคุณต้องฝึกซ้อมอยู่อย่างสม่ำเสมอ เช่น การทำ Kata
สามารถแก้ไขปัญหา ด้วยวิธีการที่แตกต่างกันได้
ตัวอย่างเช่น