Fundamental of successful software development?

ย้อนกลับไปไม่นาน ซัก 5 – 6 เดือนที่แล้ว เป็นช่วงที่ได้เริ่มทำงานโดยใช้ Agile จริงๆ เป็นครั้งแรก ตอนนั้นมีความคิดเต็มเปี่ยมว่าหน้าที่ของเราในฐานะ developer คือ การทำตามความต้องการของฝ่าย business(marketing, product, business development, …) เราต้องให้เกียรติเค้าในฐานะของคนที่น่าจะเข้าใจคนไม่ geek (ผู้ใช้งาน)มากกว่าเรา เราไม่ควรปฏิเสธไม่ทำตามความต้องการของเค้าด้วยเหตุผลทางการออกแบบของระบบ เราควรทำระบบของเราให้ยืดหยุ่นเพียงพอที่จะรองรับความต้องการที่เปลี่ยนแปลงไป

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

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

แนวทางแนะนำเพื่อใช้ในการแก้สถานะการณ์นี้คือ หาให้ได้ว่าจริงๆ ความต้องการจริงๆ ของเค้าคืออะไร โดยหนังสือแนะนำให้ใช้วิธี 5 Why? คือ ถามว่า “ทำไมต้องทำ” ซ้อนในคำตอบของเค้าไปเรื่อยๆ ประมาณ 5 ครั้งจะไปถึงต้นตอของความต้องการจริงๆ

เรื่องการค้นหาต้นตอของความต้องการนี้ ถ้ามองให้ลึกเข้าไปอีกมันคือ การค้นหาปัญหา ค้นหาว่าผู้ใช้งานมีปัญหาอะไร และจากนั้นก็หาวิธีแก้มัน

ผมได้ยินแนวคิดนี้บ่อยๆ ช่วงหลังมานี้ในวงการ startup ตัวอย่างเช่น Instagram ที่เค้าแก้ปัญหาการถ่ายและแชร์รูป* หรืออย่างบทความเรื่อง วิธีการเริ่มต้นเปิดบริษัทของตัวเองของ Paul Graham ก็มีการพูดถึงเรื่องนี้

หยิบปัญหาน่าสนใจมาซักหนึ่งปัญหา และโฟกัสที่การแก้ปัญหานั้นจริงๆ น่าจะเป็นหนทางหนึ่งที่นำไปสู่ความสำเร็จได้

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

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

*จำไม่ได้ว่าอ่านมาจากไหน

Advertisements

3 thoughts on “Fundamental of successful software development?

  1. Bewilder

    5 Why นี่คุ้นๆ เหมือนได้ยินตอนเพื่อนๆเรียน Innovative กัน

    Reply
  2. Nuttanart Pornprasitsakul

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

    Reply
  3. Pingback: ย้อนกลับไปมองความคิดในเรื่องการพัฒนาซอฟแวร์ | Tap

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s