bad-developer
มีโอกาสแลกเปลี่ยนแนวคิดเกี่ยวกับการเป็น developer ที่ดี (Good Developer)
ซึ่งคำนี้มันไม่มีอยู่ในพจนานุกรมใด ๆ
แต่เป็นสิ่งที่ developer ทุกคนต้องค้นหา
เพื่อให้ประสบความสำเร็จและสนุกกับการพัฒนา
มาดูกันว่ามีสิ่งใดบ้าง ?

1. ความรู้พื้นฐานมันสำคัญสุด ๆ

สิ่งที่ developer ต้องรู้และเข้าใจคือ ความรู้พื้นฐานของสิ่งที่ใช้
จงกลับไปที่พื้นฐานของสิ่งนั้น ๆ
จงกลับไปที่พื้นฐานของภาษานั้น ๆ
ว่าถูกสร้างมาเพื่ออะไร
เนื่องจากของแต่ละอย่างมันมีเป้าหมายของมันอยู่

เมื่อเราเข้าใจความรู้พื้นฐานต่าง ๆ แล้ว
มันจะช่วยทำให้สามารถออกแบบ และ สร้างระบบ
ด้วยวิธีที่เรียบง่ายและเหมาะสมกับงาน
ลดการสร้างแบบ over-engineer ไปได้เยอะมาก ๆ

ถ้าพื้นฐานไม่แน่นแล้ว
การจะต่อยอดไปยังเรื่องอื่น ๆ ก็ยากหรือไม่ยั่งยืน
เหมือนกับการสร้างตึก ถ้าฐานไม่แข็งแรงก็จะถล่มได้ง่าย ๆ

ตัวอย่างเช่น
คุณใช้งาน ReactJS, Angular, Vue แล้ว
คำถามคือ คุณเข้าใจ JavaScript, ES5, ES6 หรือไม่ ?
คุณเขียน Ruby On Rails แล้ว
คำถามคือ คุณเข้าใจ Ruby หรือไม่ ?
คุณเขียน Reactive (Rx) แล้ว
คำถามคือ คุณเข้าใจ Observer, Iterator หรือไม่ ?

ดังนั้น back to basic และ review basic ของเราดูกันนะครับ
หยุดเปรียบเทียบว่าอะไรดีกว่ากัน
กลับมาเรียนรู้กันว่า แต่ละอย่างมันเหมาะสมกับอะไร ?

2. เรียนรู้จากการช่วยเหลือผู้อื่น

จากสิ่งที่ได้เรียนรู้มา
การเรียนรู้ที่เร็วมาก ๆ คือ การลงมือทำตั้งแต่เรื่องพื้นฐาน
จากนั้นให้ทำการสอนสิ่งนั้นกับผู้อื่น
ถึงแม้ว่า เราจะบอกว่ามันเป็นเรื่องที่ง่าย ๆ มาก ใคร ๆ ก็รู้ก็ตาม
บางครั้งเราก็คิดแบบนั้นเพียงคนเดียว !!

แต่สิ่งที่ทำให้เราเรียนรู้ได้รวดเร็วยิ่งกว่าก็คือ การช่วยเหลือผู้อื่น
ตัวอย่างเช่น ภายในทีมมีปัญหาบางอย่าง
เราสามารถเข้าไปช่วยเหลือได้
ไม่ได้เอาวิธีการของเราไปใช้นะ
แต่เราต้องหยุดคิด และทำความเข้าใจกับปัญหานั้น ๆ ก่อน
เพราะว่าบริบทของปัญหาล้วนแตกต่างกัน
ทั้งคน
ทั้งสภาวะแวดล้อม
ทั้งเงื่อนไขและข้อจำกัด
จากนั้นจึงช่วยกันวิเคราะห์ปัญหา หาวิธีการแก้ไขปัญหา
ซึ่งสิ่งเหล่านี้ จะช่วยทำให้เราเรียนรู้ได้มากกว่ามาก ๆ

Give more than you take

3. เขียน code ที่ทำความเข้าใจได้ง่าย และ ไม่เยอะ

อยากรู้ว่า code ที่เขียนมานั้นเข้าใจยากหรือไม่
ก็ลองให้คนในทีม review ดูนะครับ
พยายามลดความซับซ้อนลงมา
ถึงแม้ code จะซับซ้อนแต่ถ้าทีมเข้าใจก็ถือว่าใช้ได้

code ที่ดีนั้นเข้าใจได้ง่าย
code ที่ดีนั้นต้องทำให้มั่นใจในการแก้ไข
code ที่ดีต้องแก้ไขได้ง่าย
code ที่ดีต้องเพิ่มได้ง่าย

ลองกลับไปดู code ที่เราเขียนขึ้นมาสิ
ว่าเป็นอย่างไรบ้าง ?

4. ให้เวลากับการวิเคราะห์และทำความเข้าใจกับปัญหามากกว่าการเขียน code

มีเป้าหมายคือ
จะลดเวลาในการแก้ไข bug ลงได้อย่างไร ?

ก่อนที่จะลงมือเขียน code เพื่อแก้ไขปัญหา
สิ่งแรกที่สำคัญอย่างมาก คือ การทำความเข้าใจกับปัญหา
เพื่อทำให้เราสามารถวิเคราะห์ และ ออกแบบ
และหาวิธีการแก้ไขปัญหา

ดังนั้นแนะนำให้คิดก่อนทำ อย่าทำไปคิดไปนะ
มันเสียเวลาเป็นอย่างมาก

5. เรียนรู้มากกว่าเปลี่ยนตามเทคโนโลยี

เนื่องจากเทคโนโลยีมันเปลี่ยนแปลงเร็วมาก ๆ
มีสิ่งใหม่ ๆ ถูกสร้างออกมาอยู่ตลอดเวลา
ดังนั้น ถ้าจะเปลี่ยนตามไปตลอด
มันคงไม่ใช่สิ่งที่ดีแน่นอน

ดังนั้นสิ่งที่เราจำเป็นสำหรับ developer คือ
เรียนรู้ที่ core concept หรือแนวคิดหลักของเทคโนโลยีต่าง ๆ
ว่าสร้างมาเพื่ออะไร
ว่าสร้างมาเพื่อแก้ไขปัญหาอะไร
ว่าส่งผลกระทบอย่างไรบ้าง
ซึ่งมันจะทำให้เราเข้าใจว่า ควรจะทำอย่างไรต่อไป

ตัวอย่างเช่นโลกของ JavaScript
ถ้าคุณเปลี่ยนตามไปตลอดแล้ว
ระบบที่คุณพัฒนาไม่น่าจะเสร็จอย่างแน่นอน

6. อย่าจมอยู่กับปัญหาหนึ่ง ๆ นานจนเกินไป

การกำหนดกรอบเวลาในการแก้ไขปัญหาหนึ่ง ๆ
เป็นสิ่งที่สำคัญอย่างมาก
มิเช่นนั้น developer มักจะจมอยู่กับปัญหาอยู่คนเดียว
จนส่งผลต่อภาพรวมของการพัฒนา
หรืออาจจะแก้ปัญหาแบบ workaround ไปก่อน
เนื่องจากเวลามีจำกัด
เนื่องจากยังไม่เข้าใจสิ่งที่ใช้งานดีพอ
ซึ่งมันส่งผลต่อไปอนาคตแน่ ๆ

ดังนั้นถ้าติดตปัญหาจงบอกความจริงและหาตัวช่วย
เชื่อเถอะว่า คนในทีมพร้อมช่วยอยู่แล้ว

7. อ่านเอกสารบ้างนะ !!

เป็นสิ่งที่ developer ที่ดีควรทำเสมอ
เนื่องจากพบว่า developer หลาย ๆ คนมักจะไม่ชอบอ่านเอกสารของสิ่งที่นำมาใช้งาน
จะไปหาเพียง code ที่ทำงานได้เท่านั้นเอง
แต่ไม่ได้เข้าใจความรู้พื้ยฐานของสิ่งนั้น ๆ เลย
มันต่างกันมากระหว่างเขียนได้กับเขียนเป็น

สุดท้ายคือ การเรียนรู้จากผู้อื่นทั้งจากคนในและนอกทีม

ซึ่งจะทำให้คุณได้รับประสบการณ์ที่ดี และ มีค่าอย่างมาก
การพัฒนา software นั้นคือ Social networking นะครับ ทำคนเดียวไม่รอดหรอกนะ

ลองถามตัวเราเองสิว่าเป็นอย่างไรกันบ้าง ?
เส้นทางล้วนแตกต่างกัน แต่สิ่งที่ควรจะเป็นคือ ต้องสนุกกับสิ่งที่ทำด้วยเสมอ