Screen Shot 2558-04-22 at 9.25.18 AM
คำถาม

มีใครบ้างที่สนใจ และ ใส่ใจ ใน code ที่เขียน !!

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

Developer ทุกๆ คน มักเจอความจริงว่า

ไม่มีใครสนใจใน code ที่คุณเขียนหรอกนะ
ว่ามันเป็นไปตามการออกแบบ และ วิเคราะห์หรือไม่ ?
ว่ามันเป็นไปตาม architecture ที่ออกแบบไว้ ?
แต่มักจะสนใจ code เมื่อมันเกิดปัญหาเท่านั้น !!

แต่คุณล่ะ สนใจ และ ใส่ใจ กับ code ที่คุณเขียนขึ้นมาหรือไม่ ?

Code มันคือเครื่องมือ ?

หน้าที่ของ developer ไม่ใช่การเขียน code
แต่หน้าที่ที่แท้จริงก็คือ
การสร้าง software/product ขึ้นมา
ให้กับใครก็ตามที่ต้องหาร หรือ จำเป็นต้องใช้ประโยชน์จากมัน

ดังนั้น code มันคือเครื่องมือหลัก เพื่อสร้างสิ่งที่ต้องการขึ้นมา
ดังนั้น code มันไม่ใช่ software/product
ดังนั้นถ้า code ไม่ดี หมายถึงเครื่องมือในการสร้าง software/product ไม่ดี
ดังนั้น software/product มันจะดีหรือ ?
เรื่องนี้ตอบไม่ได้เสียด้วย คุณต้องตอบเองแล้วนะ !!

โชคไม่ดีเท่าไร เมื่อขั้นตอนการพัฒนา software ไม่เป็นในแบบนั้น !!

คำถาม
ทำไมเราต้อง refactor code เพื่อทำให้มันดีขึ้นด้วยนะ ?
ทำการ refactor code แล้วมันจะทำให้ software/product ดีขึ้นกว่าเดิมหรือ ?
ทำการ refactor code ให้ดีขึ้นแล้ว จะได้กำไรมากขึ้นหรือ ?

จากคำถามเหล่านี้
ทำให้ไม่มีใครให้ความสนใจ ใส่ใจ หรือให้เวลาในการปรับปรุง code ให้ดีขึ้น
แต่ให้ทำการแก้ไขตาม defect/incident
แต่ให้ทำการเพิ่ม feature ใหม่ๆ เข้าไป แต่อย่าไปเตะต้อง code เดิมนะ
และก็พบว่า การแก้ไข หรือ เพิ่ม feature เข้าไป มันต้องใช้เวลามากขึ้น
และใช้เวลามากขึ้นเรื่อยๆ เรื่อยๆ เรื่อยๆ …

นั่นหมายความว่า
เครื่องมือในการสร้าง software/product มันไม่ดีขึ้นเลยใช่ไหม ?
แถมกลับแย่ลงไปเรื่อยๆ ?

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

ทีมพัฒนาสื่อสารในสิ่งที่ทำอยู่ ให้คนอื่นรู้และเข้าใจหรือไม่นะ ?

เมื่อทีมพัฒนาเข้าไปคุยกับคนอื่นๆ ที่ไม่มีความรู้ในการพัฒนา
เช่น manager, product owner และ ลูกค้า เป็นต้น

คำถาม
คุณสื่อสารให้คนเหล่านี้เข้าใจถึงสิ่งที่คุรทำได้อย่างไร ?
คุณบอกไหมว่า สิ่งที่คุณสร้างขึ้นมา ประกอบไปด้วย
จำนวน class เท่าไร ?
จำนวน Line of Code เท่าไร ?
การ deploy หรือ deployment script ?
database schema เป็นอย่างไร ?

คำตอบ ….
ถ้าคุณเคยทำ จะพบว่า
มันน่าเบื่อมากๆ
มันไม่ได้น่าสนใจอะไรเลย
ไม่มีใครสนใจสิ่งที่คุณพูดเลย
และคุณจะเลิกทำ เลิกอธิบายแบบนั้นอีก

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

สิ่งที่คนเหล่านี้สนใจก็คือ
งานของฉันมันเสร็จ หรือ ไม่เสร็จ เท่านั้นล่ะนะ !!

ดังนั้น สิ่งที่ทีมพัฒนาต้องสื่อสารออกไปก็คือ

สถานะของแต่ละ feature ว่ามัน เสร็จ หรือ ไม่เสร็จ
รวมทั้งสามารถนำ software/product นั้นไปให้ใช้งานอยู่อย่างเสมอ
แน่นอนว่า คนกลุ่มที่เราสื่อสารไป ต้องสนใจ และ ใส่ใจอย่างแน่นอน
เพราะว่า สิ่งที่ได้มานั้น จะบอกบางสิ่งบางอย่างให้ทำต่อไป
และช่วยในการวางแผนงานต่อไป

แล้วยังไงล่ะ ?

คำถาม
ถ้าไม่มีใครสนใจ code แล้ว
ดังนั้น ก็เขียน code ให้มันแย่ๆ ดีกว่าใช่ไหม ?
คำตอบ
ตอบสั้นๆ ว่า อย่าคิดแบบนั้นเด็ดขาด
เนื่องจาก คุณภาพของคน มันคือสิ่งที่จำเป็น
สำหรับการสร้าง software/product ที่มีคุณภาพออกมา

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

แต่สิ่งที่พึงระลึกไว้คือ
คุณจะไม่สามารถสร้าง software/product ได้ตามความต้องการได้เลย
ถ้าเครื่องมือที่คุณใช้สร้าง มันไร้ซึ่งประสิทธิภาพ
รวมทั้งสิ่งที่คุณเชื่อ นั่นคือ คำว่า คุณภาพ

สุดท้าย ขอฝากไว้ว่า

เป้าหมายหลักของ Developer คือ
การสร้าง software/product ขึ้นมา
การปรับปรุง software/product ให้ดีขึ้น
ไม่ใช่การเขียน code นะครับ

ดังนั้น ถ้าคุณต้องการต้องการปรับปรุงประสิทธิภาพในการทำงาน
คุณจะต้องเข้าใจ feature ต่างๆ ว่าเป็นอย่างไร ?
คุณจะต้องเข้าใจ feature ต่างๆ มันมีคุณค่าต่อลูกค้าอย่างไร ?
คุณจะต้องเข้าใจ feature ต่างๆ มันช่วยลูกค้าคุณอย่างไร ?
ไม่ใช่สนใจเฉพาะ code
ไม่ใช่สนใจเฉพาะ library
ไม่ใช่สนใจเฉพาะ framework
ไม่ใช่สนใจเฉพาะ เครื่องมือ