เขียนโค้ดละลายแม่น้ำ

30. August 2009

ตั้งแต่เริ่มทำงานมา ตามลักษณะงานที่มันเป็นการเขียนโปรแกรมสั้นๆอยู่แล้วซึ่งส่วนใหญ่ก็เป็นการดัดแปลงโปรแกรมตัวอย่าง ทำให้ผมเขียนโค้ดน้อยลงอย่างมากเทียบกับสมัยเรียน (เลยต้องมาระบายอารมณ์ตามบลอกตามที่ท่านเห็น ฮะๆ)

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

  • โค้ดสมัยเรียนค่ายโอลิมปิก
  • โปรแกรมรายรับรายจ่ายง่ายๆบน Windows Mobile และโปรแกรมอื่นๆที่เคยส่ง บ.สามารถ
  • โปรแกรม ChemLive! ที่ส่ง MS Imagine Cup
  • โปรเจควิชา Database + Software Engineering ที่คณะ
  • โปรเจคที่เคยส่งงาน RFID ของ NECTEC
  • โปรเจคย่อยๆมากมายในวิชาเรียนอื่นๆ เช่น Fund Dist, Computer Security, Operating System, Computer Graphics, Image Processing, ..

ถ้าถามถึงโปรเจคทั้งหมดที่ยกมา ผมแทบ “จำไม่ได้” เลยว่าทำอะไรไปบ้างและได้อะไรมาบ้าง งานที่ทำไปบางชิ้นเอาไปวางไว้ที่ไหนก็ไม่รู้เหมือนกัน

มานั่งคิดๆดู มันก็มีหลายปัจจัยที่ทำให้งานที่เคยใช้เวลาทำมาไม่มีประโยชน์อะไรในตอนนี้ เช่น

  • ผมไม่มั่นใจในงาน งานบางอันที่ต้อง “รีบปั่นรีบส่ง” หลังงานเสร็จ ผมจะคิดในใจ (ดังๆ) ว่า “ของมันไม่ดีจริง” แล้วหลังจากนั้นถ้ามีโอกาสอะไรที่จะเอาไป “ต่อยอด” งานได้ ผมจะรู้สึกหวั่นๆ เหมือนกำลังโดนจับผิด หลายครั้งมีโอกาสดีๆเช่น บ.ข้างนอก อยากให้เอาโปรแกรม ChemLive! ไปทำต่อ ผมก็ (น่าจะ) เป็นคนเดียวในทีมที่ไม่สบายใจเอาซะมากๆ ผมไม่อยากแบกรับภาระจากการซ่อมบำรุงงานที่ผมไม่มั่นใจ งานบางชิ้นในลักษณะนี้ก็เลยหายไปจากสารบบโดยปริยาย –..-‘’ เป็นนิสัยเสียที่น่าจะโดนเพื่อนๆร่วมทีมว่าอยู่เยอะเหมือนกัน
  • งานไม่มั่นใจในผม หลายครั้งการเอางานที่เราคิดว่า “นี่ทำมาดีมากแล้วนะ” ไปส่งประกวด แล้ว Feedback จากกรรมการมันไม่เป็นไปอย่างที่คิด มันก็ทำให้เสียกำลังใจและพาลไม่อยากทำต่อได้ครับ ตัวอย่างที่เข้าเคสนี้คือโปรแกรม RFID ที่ค่อนข้างจะทุ่ม effort กันสูงมากทั้งทีม แต่มีปัญหาเรื่องการนำเสนอ (อ่านต่อที่ “การนำเสนอสำคัญกว่าโค้ด”)
  • ผมกำลังทำการบ้านส่ง ผมไม่ได้เขียนโค้ด อันนี้เป็นพวกโปรเจคในคณะ ที่ส่วนใหญ่จะมีเดดไลน์และ scope ชัดเจน มันต่างจาก “ปั่นส่ง” ในข้อแรกตรงที่ งานในลักษณะนี้ มันเป็น “ปั่นส่ง” จากเริ่ม คือก็ทำให้เสร็จๆไปงั้น แต่ในเคสแรกตอนแรกอาจจะทำด้วยความสนุก แต่ตอนหลังโดนบีบให้ปั่น พอส่งเสร็จก็ลืมไปเลยว่าเคยทำ เช่นพวก Database หรือ Software Engineering

จวบจนสองโปรเจคสุดท้ายก่อนเรียนจบ คือ Game Programming กับ Senior Project  ผมก็รู้สึกว่าได้สร้าง “คุณค่า” ไว้พอสมควร

อย่างแรกคือ Game Programming ผมไม่รู้สึกว่าโค้ดตัวเองที่เขียนร่วมกับเพื่อนๆอีก 2 คนมัน “เละ” ถ้ามีโอกาสให้กลับไปทำโปรเจค Ogre อีกรอบนี่จะเป็นที่แรกที่ผมกลับไปดู :) 

ส่วน Senior Project ถึงแม้ผลลัพธ์มันจะออกมาไม่ดีเท่าไหร่และได้ชมเชยใน NSC แต่ผมก็รู้สึกว่าได้ตั้งใจทำเต็มที่แล้ว และทุกอย่างที่ทำทุกวันนี้ก็เข้าถึงได้โดยง่ายเพราะเอาไปวางไว้บน Project Hosting หลายครั้งยังต้องเข้าไปดู Code C++ ที่ตัวเองเขียนอยู่เลย (เพราะบางทีจำไม่ได้ว่าเขียนยังไง - -‘’)

ผมมีแนวทาง (ที่ตอนนี้ใช้อยู่เอง) ในการเพิ่ม “คุณค่า” ให้โปรแกรมที่เขียนดังต่อไปนี้

    1. พยายามทำให้ Source Code ที่เขียนและงานที่ทำเข้าถึงง่ายที่สุด สมัยนี้มีเว็บประเภท Project Hosting ให้ใช้เยอะแยะ ทั้ง Git Hub, Google Code, Code Plex, Source Forge (แต่ก่อนประเทศไทยมี Code Bank ด้วย แต่ไม่รู้เจ๊งไปรึยัง)
    2. จดบันทึกสิ่งที่ทำอยู่ ไม่ต้องละเอียดมาก (แต่ก็อย่าแย่ถึงขั้น “โอ้ววว ไพธอนหล่อแสรดดด” –..-‘a) เอาแบบไว้อ่านคนเดียวก็ได้ จะ Tweet หรือจะ Blog ก็น่าจะเวิร์คเหมือนกัน อันนี้จะเหมือนการ Document ตลอดเวลา แล้วตอนหลังเวลาติดปัญหาเดียวกันจะได้กลับมาดูได้ นอกจากนั้นอาจจะได้วิธีการที่ดีกว่าเดิมจากเพื่อนๆที่มาอ่านอีก (แนะนำวิธีจด)
    3. วิ่งเข้าหาสิ่งใหม่ๆให้บ่อยๆ ในงานที่ทำเล่นๆหรือที่เดดไลน์มันไม่บีบคั้นมาก ลอง “เลือก” อะไรที่มันแตกต่างจากเดิม (และดูดีมีอนาคต :P) มาลองบ้างดีมั้ย?? สมัยนี้มีพวก Framework, Libraries, ภาษาใหม่ๆ ให้ลองใช้เยอะแยะ
    4. อย่าปั่นงาน ..ทำยากโคดว่ะ

ขอให้สนุกกับการเป็นนักเขียนโค้ด “เชิงคุณค่า”

Direction , ,

Comments

8/30/2009 11:06:03 AM #
จริงๆแล้วเกม Karaoke ของนายน่ะ เจ๋งมากเลยนะ ทุกวันนี้ยังไม่รู้เลยว่าต้องใช้อะไรบ้าง ถึงจะทำแบบนั้นได้
8/30/2009 11:12:27 AM #
ข้อที่เขียนเกี่ยวกับ "ผมไม่มั่นใจในงาน" อยากให้นึกอย่างนี้ครับว่า Source code คนอื่น ก็เขียนมาก็มีปัญหาได้เหมือนกันหมด ไม่ว่าอันใดก็คงไม่มีสมบูรณ์ครับ การแก้ซอสโค้ดเพราะมีคนเอาไปใช้ประโยชน์ได้มันย่อมสนุกกว่าการเขียนซอสโค้ดโดยไม่มีใครเอาไปใช้ จริงไหมครับ

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

ทุกโปรแกรมต้องแข่งขันกับเวลาทั้งนั้นครับ Smile ถ้าเรากล้าที่จะเริ่มเอาไปใช้ ก็อาจทำให้เห็นมุมมองใหม่ๆแทนมุมมองที่เรากลัว อย่างมากก็แค่ Fix Bug แต่ Fix Bug ไม่ได้แปลว่าโปรแกรมเราไม่เจ๋ง, การที่คนเลือกจะเอาโปรแกรมเราไปใช้นั่นแปลว่าโปรแกรมเราเจ๋งพอแล้วครับ

เราอาจจะเสียดายยิ่งกว่า เมื่อพบว่าโปรแกรมที่พัฒนาหลังเราหนึ่งปีข้างหน้าโด่งดังทำความสำเร็จได้มากมาย เพียงเพราะเรากลัวที่จะใช้โปรแกรมเรานะ Smile.
8/30/2009 4:03:38 PM #
ฮ่าๆ เขียนโค้ดละลายแม่น้ำ  

เข้าใจคิดชื่อว่ะ ขอเอาไปตั้งเป็นชื่อเอ็มนะ
หมากรุกจีน
หมากรุกจีน
8/30/2009 9:33:49 PM #
นักเขียนโค้ดเชิงคุณค่า นี่มัน... คล้ายๆ คุณ วอเรน บุฟเฟต์หรือเปล่า?
8/30/2009 10:30:09 PM #
มีคนโหลด paper JSTP ของแอมไปอ่านตั้ง 500 กว่าครั้ง ทั้งๆ ที่แอมเขียนได้เน่ามาก (แสดงทศนิยมตั้ง 10 ตำแหน่ง เกรียนสุดๆ อะ) เป็นอะไรที่แอมเขินจนถึงทุกวันนี้ - -"
9/2/2009 8:29:17 PM #
ต่อเน็ตได้แล้ว ได้เวลาตอบคอมเม็นต์

@Wittawat ขอบคุณครับ ^^ จริงๆก็อยากทำให้ผลลัพธ์มันดีกว่านี้ (แต่สามารถแค่นี้ว่ะ) 55+

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

@teerapap ยังไม่เห็นชื่อเอ็มคุณ เพิ่งใช้เน็ตได้เสถียรๆเนี่ย

@หมากรุกจีน ใช่ครับ คนที่ทำกำไรมหาศาลช่วงกิจการบุฟเฟต์ตกต่ำนั่นแหละ o__o??

@blueflame พี่ก็มีอะไรเกรียนๆอยู่บน internet เยอะเหมือนกัน แฮ่ๆ
แต่อย่ากลัวที่จะเกรียนครับ ถ้าไม่เคยเกรียนก็ไม่เคย grown up เหมือนกัน Smile
Comments are closed