เรื่องเล่าจากเดี่ยวโปรแกรมเมอร์ (ตอนที่ 2)

เริ่มเลยครับไม่พูดพร่ำทำเพลง

---- ตอนที่ 2 ---

โปรแกรมเมอร์ที่ดี ต้องนอนแต่หัวค่ำ

khonkaenlink-com-71ผู้เขียนทำงานล่วงเวลาอยู่บ่อยครั้ง บางครั้งก็ดึกมาก บางครั้งก็ยันสว่าง บางครั้ง สว่างไปสองครั้งแล้ว งานก็ยังไม่เสร็จ บางครั้ง มันก็เป็นเรื่องที่ช่วยไม่ได้จริงๆ แต่พอลองมองย้อนกลับมาดู ก็พบว่า จริงๆ แล้ว มันก็เป็นความผิดพลาดของผู้เขียนเองนั่นแหละ และถ้าผู้เขียนได้วางแผนดีๆ ตั้งแต่แรก งานล่วงเวลา(ฟรี) พวกนี้ ก็ไม่จำเป็นเลย

จากการวิเคราะห์อย่างเป็นกลางที่สุดเท่าที่ผู้เขียนจะกลางได้ ก็สรุปได้ว่า ปัญหาอาการนอนไม่หลับ (เพราะหลับไม่ได้) นี้ เกิดจาก:

  1. ไม่ได้”สร้างความคาดหวัง” ที่ถูกต้องไว้กับลูกค้า
  2. มัวแต่”เจิม”/”ปิดทอง” (ใส่อะไรที่ไม่จำเป็น/ลองนู่นลองนี่)
  3. เทสงานไม่พอ

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

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

  1. ไม่พยายามตั้งเงื่อนเวลาเป็น “ตอนเช้า” โดยเฉพาะอย่างยิ่ง วันจันทร์ [ผู้แปล: ถ้าทำให้ทันวันจันทร์ ก็แสดงว่าต้องทำเสาร์-อาทิตย์ด้วยใช่ไหมละ]
  2. ไม่เอาเวลาส่วนตัว หรือเวลาตอนกลางคืน รวมเข้าไปในการวางแผน คิดตามวันทำงานจริงๆ เท่านั้น
  3. แบ่งเวลาให้ถูกต้อง ผู้เขียนจะคอยควบคุมเวลาการทานอาหารกลางวัน และเวลาเช็คเมล์ให้เหมาะสมในแต่ละวัน
  4. ผู้เขียนจะใช้เวลาตอนเช้า ในการเขียนโปรแกรม และตอนบ่าย ในการเทส/ดีบัก

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

[ผู้แปล: แม่ผมเองก็เคยบอกว่า ทำงานล่วงเวลามันมองได้สองด้าน ด้านที่ดีก็ดีไป ด้านที่ไม่ดีก็คือ เราทำงานไม่เสร็จหรือเปล่า ถึงต้องอยู่จนเย็น กลางวันมัวไปทำอะไรอยู่???]

สร้างความหวังที่เป็นไปได้…ด้วยการสื่อสารให้เข้าใจกัน

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

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

[ผู้แปล: ถึงตรงนี้ ผมก็นึกได้ว่า ตอนไปพบลูกค้ากับเจ้านาย แล้วผมบอกไปว่า ได้ทดลองทำเดโมมาแล้ว อยากจะโชว์หรือเปล่า เขาก็บอกผมมาว่า บางทีทำเร็วเกินไปก็ไม่ดีนะ เราจะไม่ได้ขายเอา….เพราะอะไรรู้ไหมครับ? หนึ่งในเทคนิคการขาย คือ การสร้างความคาดหวังไงครับ แล้วถ้าเรายังไม่รู้ว่าเขาต้องการอะไร แล้วไปโชว์เลย เขาก้ออาจจะเลยเถิดเข้าใจอะไรผิดไปได้]

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

ผมคือ SOFTWARE ARCHITECT!

kuserในยุคที่เด็กๆ สามารถใส่โปรแกรม หุ่นยนต์เลโก้ได้อย่างทุกวันนี้ และ Source Code ก็มีให้ Copy อยู่ทั่วทุกหนแห่ง คำว่า “โปรแกรมเมอร์” แม้ว่ามันจะเข้าใจง่าย แ ต่คุณค่ามันก็ลดลงจากเมื่อก่อนแล้ว ผู้เขียนจึงพยายามเสาะแสวงหา ชื่อตำแหน่งที่สมศักดิ์ศรีเดี่ยวโปรแกรมเมอร์มาใช้ซักหน่อย และหนึ่งในนั้นคือ “Senior Software Architect” ซึ่งเป็นการดีด้วย เพราะมันคือการปูทางให้กับอนาคต ว่าที่สุดแล้ว คุณต้องการจะเป็นอะไร ในสายอาชีพ

และอีกนัยนึง ผมก็ไม่ใช่ “Computer Guy” ด้วย การมี title เริ่ดๆ แบบนี้ ก็สามารถกันคนที่จะเดินมาที่โต๊ะ เพื่อให้ช่วยฟอร์แมตเครื่อง หรือลงวินโดวส์ให้ เพราะนั่นจะทำให้ผู้เขียนไม่สามารถทำงานให้เสร็จลุล่วงได้ และยังทำให้เสียสมาธิอีกต่างหาก

[ผู้แปล: มีคนเคยบอกผมว่า อาชีพที่ตกต่ำที่สุดของเด็ก Com Sci คือ Programmer ครับ เพราะโดยเนื่องานแล้ว Programmer แค่ Code จริงๆ แทบไม่ได้คิดอะไรเลย…ในขณะที่เราเรียนกันมามากมาย ทั้งเรื่องการ Optimize Performance เรื่อง Data Structure อีกร้อยแปด…

การที่ผู้เขียนสามารถเรียกตัวเองแบบนั้นได้ ก็เพราะว่าเขาทำทุกอย่างครับ (จากที่เขาเล่านะ) ตั้งแต่ออกแบบ รวมไปถึงการคุยกับลูกค้า ซึ่งก็ไม่แปลกเลย เพราะนี่คืองาน Architect เลยละ]

------

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

ความคิดเห็น

บทความที่ได้รับความนิยม