เห็น post ใน Facebook มาเกี่ยวกับ งานที่ยากสุดๆ ของ programmer
เห็นว่าน่าสนใจเลยหาข้อมูลต่อพบว่า
ซึ่งเป็นผลสรุปจาก ITWORLD.COM ออกมาตั้งแต่เดือนตุลาคม ปี 2013
โดยนำข้อมูลมาจากการพูดคุยใน Quora และ Ubuntu Forums
รวมๆ แล้วเป็นผลมาจาก 4,522 vote มาดูผลดีหว่า ว่าโดนใจไหม
จากที่ share กันมาน่าจะมาจาก Reddit ที่มีการพูดคุยในเรื่องนี้

เริ่มต้นด้วยภาพสรุปก่อนเลย

ไม่เชื่อก็ต้องเชื่อว่างานที่ยากที่สุดจาก programmer ส่วนใหญ่ก็คือ

  • การตั้งชื่อ
  • การอธิบายว่าตัวเองทำอะไร
  • การประเมินเวลาที่ใช้พัฒนา
  • การทำงานร่วมกับคนอื่นๆ
  • ทำงานกับ code ของชาวบ้าน

Screen Shot 2557-09-12 at 8.14.39 PM

มาดูคำอธิบายกันหน่อย

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

อันดับที่ 9 การออกแบบ เพื่อหาทางแก้ไขปัญหา

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

อันดับที่ 8 การเขียน test

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

สิ่งที่ท้าทายก็คือ จะเลือก test case ไหนมาเขียน test ดี
และทุกๆ คนมีความรู้สึกว่า งานมันจะเพิ่มจากเดิมอีกนะ

อันดับที่ 7 เขียนเอกสาร

หมายถึง การ comment code และ เอกสารมาตรฐานที่ต้องเขียน
เช่น User manual, Installation เป็นต้น

ความท้าทายก็คือ มันเป็นงานที่กินเวลาอย่างมาก
และสิ่งที่ทำออกไปมันเหมือนขยะ เพราะว่าไม่มีใครอ่านเลย
ดังนั้น สิ่งที่ programmer มักจะพูดออกมาเสมอ เพื่อปฏิเสธการเขียนเอกสาร ก็คือ
code ของผมนั่นแหละคือ เอกสาร

คำพูดที่เสียดแทงสำหรับการเขียนเอกสารก็คือ
เราเขียนเอกสารที่ไม่มีใครใช้ ไม่มีใครอ่าน ก็เนื่องจาก process นั่นเอง

อันดับที่ 6 การสร้างระบบงานที่เราไม่เห็นด้วย

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

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

อันดับที่ 5 ไปทำงานหรือแก้ไข code ที่มีอยู่แล้ว (Working with Legacy code)

ความท้าทายก็คือ ต้องใช้ความพยายามเพื่อทำความเข้าใจการทำงานของ code
ซึ่งมันจะยากมากๆ ถ้า code นั้นมันห่วย

แต่เชื่อไหมว่า programmer คนนั้นก็กำลังสร้าง Legacy code ขึ้นมาอีกชุดเช่นเดียวกัน
มีรูปขำๆ มาให้ดูเล่น

รูปจาก abstrusegoose.com

อันดับที่ 4 การทำงานร่วมกับผู้อื่น

เช่น การพูดคุยเพื่อสรุป requirement กับลูกค้า
การสรุปสถานะของงานเพื่อรายงานผู้บริการ
การทำงานร่วมกับ tester
การทำงานร่วมกับ programmer คนอื่นๆ

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

อันดับที่ 3 programmer เป็นกลุ่มคนที่ประเมินเวลาการทำงานได้ห่วยแตกมากๆ

ปัญหามาจากการเดาล้วนๆ เพราะว่า ต้องมาประเมินเวลาของสิ่งที่ยังไม่เคยทำมาก่อน
และการต้องมานั่งประเมินเวลาของ requirement ทั้งหมด มันเสียเวลาอย่างมากมาย

อันดับที่ 2 อธิบายให้คนอื่นรู้ว่าทำอะไร หรือจะไม่ทำอะไร

เป็นสิ่งที่ยากสำหรับ programer มากๆ ว่า จะอธิบายให้คนอื่นๆ รู้ได้อย่างไร
เช่นจะอธิบายให้ญาติพี่น้อง คนในครอบครับ รู้ได้อย่างไร
ว่างาน programmer มันคืออะไร
รวมทั้งอธิบายให้คนในบริษัทรู้ด้วยว่า ตัวเองกำลังทำอะไร แบบภาษาคนทั่วไปรู้เรื่อง

อันดับที่ 1 การตั้งชื่อ (ชื่อนั้นสำคัญไฉน)

ว่าด้วยเรื่องของการตั้งชื่อตัวแปร method คลาส object และ database
เป็นเรื่องที่ไม่น่าเชื่อ ว่ามันคืองานที่ยากสุดๆ ของ programmer

ความท้าทายก็คือ ในการสร้างระบบหนึ่งๆ ขึ้นมานั้น ต้องการการตั้งชื่อมากมาย
ดังนั้น การเลือกชื่อที่ดีและเหมาะสมเป้นงานที่ไม่ง่ายเลย

แต่ผมก็ไม่แน่ใจนะว่า a,b,c,i,j,k,x,y,z ทำไมมันมักมีอยู่ใน code เสมอเลย

แล้วคุณล่ะ คิดว่า งานอะไรที่มันยากสุดๆ สำหรับคุณ ?