นำรูปมาจาก https://www.google.co.th/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&docid=he4FxI9dUK1e2M&tbnid=1wwBnrzWjUXmAM:&ved=0CAMQjhw&url=http%3A%2F%2Fsimpleprogrammer.com%2F2014%2F06%2F30%2Fstep-step-path-becoming-great-software-developer%2F&ei=_eG6U6HPLdHt8AXrhIG4Dg&bvm=bv.70138588,d.dGc&psig=AFQjCNEoVCTuZmWp4wEcQVcSyKfjh9F86Q&ust=1404842865836594

นำรูปมาจาก http://simpleprogrammer.com/

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

เริ่มต้นด้วยการภาษาโปรแกรมสัก 1 ภาษา

ทำการศึกษาตั้งแต่ความรู้พื้นฐานของภาษานั้นก่อน
เนื่องจากคุณไม่สามารถจะวิ่งได้ ถ้าเดินยังไม่ตรง
ดังนั้น คุณต้องเรียนรู้การเดินก่อน เปรียบได้กับการเลือกเขียนโปรแกรมสัก 1 ภาษาก่อน
ไม่ต้องเลือกเยอะไปกว่านี้ เพราะว่าคุณจะไม่ได้อะไรสักอย่างเลย
เรียนรู้แบบค่อยเป็นค่อยไป step-by-step อย่างอดทน
ฝึกทำ ฝึกเขียน ทำแบบฝึกหัดต่างๆ ให้บ่อยเข้าไว้
ช่วงแรกๆ อาจจะรู้สึกอึดอัดหน่อย แต่มันคือเส้นทางที่คุณเลือกแล้ว สู้มันต่อไป อย่ายอมแพ้

สิ่งหนึ่งที่ขอแนะนำเลยเมื่อคุณเขียนโปรแกรม คือ
คุณจะต้องมั่นใจว่า คุณเข้าใจทุกๆ บรรทัดที่คุณเขียนขึ้นมา

ถ้ายังไม่เข้าใจ ลองทำให้ช้าลง แล้วทำซ้ำไปเรื่อยๆ จนเข้าใจ
เชื่อเถอะว่า คุณไม่มีทางเข้าใจมันตั้งแต่ครั้งแรกหรอกนะ

หลังจากเรียนรู้แล้ว ให้ทำการสร้างบางสิ่งบางอย่างเล็กๆ ออกมา

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

เนื่องจาก เรากำลังสนใจเรื่องการเรียนรู้ในภาษาโปรแกรม ห้ามลืมเด็ดขาด

ต่อไปลองทำการศึกษา framework ต่างๆ ของภาษาที่คุณเลือก

เมื่อคุณสามารถเขียน code จากพื้นฐานได้แล้ว
ก็จำเป็นต้องเรียนรู้ด้วยว่า มี framework อะไรบ้าง
ที่สามารถนำมาใช้เพื่อช่วยเหลือเราได้ เช่น web framwork และ mobile framework เป็นต้น
เพื่อเพิ่ม productivity ของตัวเราเอง

แต่ต้องศึกษาแบบลงในรายละเอียดเชิงลึก ไม่ใช่แบบผิวเผิน
และต้องเรียนรู้ทีละหนึ่ง framework นะ อย่าเยอะ !!!
แล้วมันจะทำให้คุณมีทางเลือกและมีความรู้เพิ่มขึ้น

จากนั้นทำการศึกษาในเรื่องของ Database

แน่นอนว่า developer จำเป็นต้องมีความรู้เรื่อง database
ยิ่งในปัจจุบันต้องรู้ทั้ง SQL, NoSQL และ NewSQL
ว่าแต่ละกลุ่มมีข้อดีข้อเสียอย่างไร
เหมาะสมกับงานลักษณะแบบใด

แต่สิ่งที่คุณจำเป็นต้องเรียนรู้ก่อน ก็คือ SQL ประกอบไปด้วย

  • การสร้าง database
  • การสร้างตารางข้อมูล
  • การเขียนคำสั่ง SQL เพื่อดึงข้อมูล เพิ่มข้อมูล แก้ไขข้อมูล และ ลบข้อมูล
  • เข้าใจการ join ข้อมูลจากตารางต่างๆ
  • เข้าใจการทำ index

หรือบางทีอาจจะต้องเรียนรู้การใช้งาน ORM ( Object Relational Mapping ) ด้วยนะ

เมื่อคุณเข้าใจส่วนต่างๆ แล้ว ให้กลับมาศึกษาแนวปฏิบัติอื่นๆ เพื่อให้ code ออกมาดีกว่าเดิม

มันถึงเวลาที่คุณต้องทำให้ code ที่เขียน มันดีขึ้นกว่าเดิมแล้วหรือยัง ?
คุณต้องสนใจเรื่อง clean code เพื่อทำให้ code ง่ายต่อการทำความเข้าใจและดูแลรักษา
ซึ่งผมมีหนังสือแนะนำดังต่อไปนี้

ต่อไป คุณสามารถทำการศึกษาภาษาโปรแกรมต่อไปได้เลย

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

  • Design pattern
  • Dependency Injection (DI) หรือ Inversion of Control ( IoC )
  • Test Driven Development (TDD)
  • Behavior Driven Development (BDD)
  • Acceptance  Test Driven Development (ATDD)
  • วิธีการพัฒนา Software รูปแบบใหม่ๆ เช่น Agile, Scrum และ Kanban เป็นต้น
  • Integration pattern และ Message bus

สุดท้ายนี้ ขอแนะนำว่า

เมื่อคุณรู้อะไรก็ตาม ถ้าอยากเข้าใจมันมากขึ้น ให้ทำการสอนผู้อื่น
จากนั้นอย่าหยุดที่จะเรียนรู้ อ่าน ถาม
และที่สำคัญกว่า คือ อย่าลืมลงมือทำ และทำอย่างสม่ำเสมอ

ผมก็พยายามทำแบบนี้อยู่เช่นกันครับ แต่ยังไปไม่ถึงไหนเท่าไร
ว่างๆ ลอง push code ขึ้น Github.com แล้วเอามาโชว์กันครับ

Screen Shot 2557-07-08 at 1.11.51 AM

Reference Website
http://www.infoq.com/news/2009/09/97-things
http://javarevisited.blogspot.com/2014/01/10-tips-to-improve-programming-skill-become-better-programmer.html
http://simpleprogrammer.com/2014/06/30/step-step-path-becoming-great-software-developer/