จากบทความเรื่อง Software Engineer Traits
ทำการสรุปคุณสมบัติที่จำเป็นสำหรับนักพัฒนา software ที่ดี
ต้องประกอบไปด้วย 4 อย่างดังนี้
Curiosity Awareness Resoluteness Empathyจึงทำการแปลและสรุปไว้นิดหน่อย มาเริ่มกันเลย
1. Curiosity
ต้องมีความกระตือรือร้นในการเรียนรู้อยู่อย่างเสมอ โดยไม่ต้องให้ใครมาบังคับ ทั้งสิ่งที่รู้และไม่รู้ เป็นสิ่งที่สำคัญอย่างมากต่อนักพัฒนา software (หรือใคร ๆ ก็ตาม) เช่น การเรียนรู้ภาษาโปรแกรมใหม่ ๆ โดยไม่ต้องให้ใครมาบังคับ การทดลองสร้างระบบใหม่ ๆ การทดลองทำในแนวทางใหม่ ๆ การแก้ไขปัญหาในแนวทางใหม่ ๆ การตั้งคำถามต่าง ๆ เพื่อค้นหาคำตอบ เพียงข้อแรก ลองคิดดูก่อนว่าเราเป็นอย่างไร ?2. Awareness
แปลตรง ๆ คือ ความตระหนักหรือรับรู้ในสิ่งต่าง ๆในขณะนั้น ต้องเข้าใจว่าเหตุผลในการเลือกสิ่งต่าง ๆ คืออะไร สามารถอธิบายให้คนอื่น ๆ รู้และเข้าใจได้ ไม่ใช่เพียงแต่บอกว่า ทำตาม ๆ กันมา !! เช่น Architecture ของระบบ ทำไมต้องเป็นแบบนั้น หรือเป็นแบบนี้ไม่ได้หรือ ? ทำไมต้องเขียน code ชุดนี้ ? แบบนี้ ?สิ่งที่ติดสินใจต้องลงมือทำด้วยนะ จึงจะเกิดผลสุดท้ายสิ่งที่คิด ตัดสินใจ และลงมือทำเหล่านั้น จะเห็นเป็น pattern นั่นแหละคือ สิ่งที่เรียกว่า standard หรือ มาตรฐานต่อไป
3. Resoluteness
มีความกล้า มีความมุ่งมัน มีความเด็ดเดี่ยวในสิ่งที่ทำ มีเป้าหมายเพื่อพัฒนาระบบให้ออกมาดีที่สุดเท่าที่จะทำได้ นั่นคือการตัดสินใจเลือกสิ่งที่ดีมาใช้งาน ถึงแม้จะอยู่ท่ามกลางความไม่แน่นอนก็ตาม รวมไปถึงการจะทำอย่างไรให้สิ่งที่พัฒนาออกมาสมบูรณ์ที่สุด ถึงจะดูแข็งกร้าว แต่ก็ต้องมีความยืดหยุ่นด้วยเช่นกัน นั่นคือเปิดรับฟังความคิดเห็นจากผู้อื่น รวมทั้งต้องรู้ว่าตัวเองไม่รู้อะไรด้วย เพื่อที่จะได้ศึกษาเพิ่มเติมต่อไป4. Empathy
แปลตรง ๆ เลยก็คือ เอาใจเขามาใส่ใจเรา มันสำคัญมาก ๆ สำหรับการทำงานเป็นทีม (TEAM) ซึ่งจะขัดแย้งมาก ๆ สำหรับบริษัทที่ต่างคนต่างทำงานของตัวเอง ลองกลับมามองในแง่ของนักพัฒนากันบ้าง เราเขียน code เพื่อคนอื่นไหม ? code อ่านง่ายไหม ? code เข้าใจง่ายไหม ? code แก้ไขง่ายไหม ? ดังนั้นต้องเขียน code ให้ออกมาดีนะทั้ง 4 ข้อรวมกันอ่านว่า CARE น่าจะมีประโยชน์ต่อนักพัฒนา software บ้างนะครับ