ยามเช้านั่งอ่านบทความเรื่อง Don’t be the software developer you hate to work with
อธิบายว่านักพัฒนา software แบบไหนที่ไม่มีใครอยากทำงานด้วย
ซึ่งสรุปไว้ 8 ข้อ
ผมคิดว่า น่าจะใช้ได้ทุก ๆ สายอาชีพนะ
เลยทำการสรุปมาไว้นิดหน่อย

 

ข้อที่ 1 เขียน code ที่ยุ่งเหยิง เข้าไจยาก ดูแลยาก

เป็นข้อสำหรับนักพัฒนา software มาก ๆ
ทั้งการตั้งชื่อ
ทั้งการไม่ update หรือ แก้ไข comment เมื่อเปลี่ยน code
ทั้งไม่ใช้ code formatter แม้จะใช้ IDE ก็ตาม
ทั้งไม่สนใจ warnning ต่าง ๆ จาก lint และ IDE

การกระทำเหล่านี้ มันส่งผลและรบกวนจิตใจต่อคนอื่น
ส่งผลให้การพัฒนาช้าลงไป
ยกตัวอย่างเช่น
ในการ review code ต้องมาเสียเวลาจัด format ของ code และแก้ไข warning ต่าง ๆ
ซึ่งมันไม่น่าจะใช่เรื่องที่ต้องมาทำในการ review code นะ

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

นักพัฒนา software ต้องมีความเป็น Software Craftsmanship

Craftsmanship is a way of thinking and doing where humanity is in tune with nature, not working against it.

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

ตั้งแต่ข้อที่ 2 ไปนั้น สามารถใช้ได้กับสายอาชีพอื่น ๆ แน่นอน

ข้อที่ 2 ไม่เคารพผู้อื่น เช่นการมาไม่ตรงเวลา

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

ข้อนี้ผมเป็นบ่อยเลย ต้องปรับปรุงให้มาก ๆ

ข้อที่ 3 ชอบปัดความรับผิดชอบ ที่ไม่เกี่ยวกับ code ออกไป

ยกตัวอย่างเช่น
เราทำ product A แต่ทำในเฉพาะส่วน backend
แต่เมื่อได้รับข้อติชมมาว่า
ในส่วนของ UI ไม่ค่อยดีนะ ใช้งานยาก หรือแสดงผลผิดพลาดแล้ว
เรามักจะบอกว่า ผมทำในส่วน backend นะ ไม่ได้ทำในส่วนของ UI
หรืออาจจะบอกว่า ไม่ได้เขียนนะ
หรืออาจจะบอกว่า มันแย่เพราะว่า ไม่มี skill หรือ ประสบการณ์นะ
หรือมีบางอย่างผิดขึ้นมา เรามักจะบอกว่า เราไม่ได้ทำก่อนเลย
รูปแบบนี้ ไม่น่าจะใช่สิ่งที่ดีสำหรับการทำงาน

ดังนั้นควรมีทั้ง responsibility และ accountability ในการทำงานด้วย
ควรมองที่ภาพรวมหรือภาพใหญ่ของระบบ
ไม่ใช่ดูเพียงในส่วนงานที่เราทำเท่านั้น
ถึงเราจะไม่ใช่ผู้เชี่ยวชาญ แต่สามารถเรียนรู้และฝึกฝนกันได้
เพื่อทำให้งานมันออกมาดีกว่าเดิม

ข้อที่ 4 เมื่อเกิดปัญหาขึ้นมา เรามักจะหาเหตุผลมาแก้ตัว มากกว่าหาวิธีการแก้ไข

ยกตัวอย่างเช่น
ทำไม product A มีปัญหาหรือข้อผิดพลาดเยอะ ?
นักพัฒนามักจะบอกว่า
เวลามีน้อย
Requirement ไม่ชัด เปลี่ยนไปเปลี่ยนมา
ความรู้ไม่เพียงพอ
เราไม่เคยใช้เทคโนโลยีนี้
งานมันยากและซับซ้อน

พอฟัง ๆ แล้วทำมันมันมีแต่การหาเหตุผลมาแก้ตัว
ฟังแล้วดูเหมือนจะไม่ผิดเลย
และฟังดูหดหู่มาก ๆ

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

ข้อที่ 5 พูดไปเรื่อย ไม่เข้าประเด็น หรือเข้าปัญหาและการแก้ไขสักที

บ่อยมากที่เราจะเจอคนที่พูดไปเรื่อย วนไปเรื่อย อ้อมไปเรื่อย
แล้วจะจบที่ว่า เราไม่ได้อะไรเลย
สรุปอะไรไม่ได้เลย
บางทีดูดี แต่จับต้องอะไรไม่ได้เลย
เสียเวลามาก ๆ

ดังนั้นเราควรพูดให้ตรงประเด็น ตรงปัญหา ตรงเรื่องที่ต้องการจะพูดคุย
ไม่ต้องมาอ้อมค้อมให้เสียเวลา

ข้อที่ 6 บ่นไปทุกเรื่อง คิดในแง่ลบ แถมไม่ลงมือทำอีกด้วย

มักจะเจอคนลักษณะนี้เยอะ
คือบ่นไปได้ทุกเรื่อง คิดแต่แง่ลบ
แต่พอให้ลงมือทำกลับเป็นง่อย ทำไม่ได้ ไม่ทำ
แต่พอตอนคิด พูด present นี่เก่งจัง !!

ผมน่าจะเป็นด้วยนะ 555

ข้อที่ 7 ในที่ประชุมชอบพูดเรื่อยเปื่อย ไม่จบหรือเข้าประเด็นสักที

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

ข้อที่ 8 ข้อนี้น่ากลัวมาก ๆ คือ ความดีเอาใส่ตัว ความชั่วให้คนอื่น

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

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

สุดท้ายแล้ว เราเป็นนักพัฒนา software ที่กระทำสิ่งต่าง ๆ ทั้ง 8 ข้อมาบ้างหรือไม่นะ ?