จุดยืน ต้นทุน มูลค่า ซอฟต์แวร์ และ “แอพตู้”

เคยสัญญาว่าจะเขียนภาคต่อของบทความ “ต้นทุน/มูลค่า” ที่แท้จริงของซอฟต์แวร์” ที่เป็นประเด็นต่อเนื่อง แต่ไม่มีเวลาและไฟพอที่จะเขียน แต่พักหลังๆ เนื่องจากตัวเองได้ involve กับการบ่มเพาะและสร้าง Startup Tech Industry ในประเทศไทยค่อนข้างมาก ก็เลยคิดว่าถึงเวลาที่ผมจะต้องเขียนเรื่องนี้ต่อเสียที

จากบทความก่อน ที่ผมลงท้ายว่า

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

มันเป็น The price we all have to pay … สิ่งที่พวกเราทุกคนต้องจ่ายด้วยกัน

ที่จริงแล้วผมต้องการจะสื่อถึงอะไรกันแน่หรือสื่อถึงอะไรบ้างเหรอ อะไรคือ “สิ่งที่เราทุกคนต้องจ่าย” แล้วทำไมเราถึงต้องแคร์กับมัน?

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

เมื่อทัศนคติทางสังคม ยังตีมูลค่าและต้นทุนของ “ซอฟต์แวร์” ต่ำเกินกว่าที่ควรจะเป็น เรื่องที่เกิดขึ้นได้ก็จะมีมากมายอย่าง ส่งผลลบกันทั้งนั้น เช่น

  • เกิดอะไรขึ้นกับเรื่อง Tablet ป.1 ครับ? ต้นทุนเรื่องมูลค่าของโปรแกรมที่จะต้องพัฒนาขึ้นมารองรับอยู่ที่ไหน แล้วเนื้อหาล่ะ ผมเห็นแต่สนใจเรื่องฮาร์ดแวร์กันซะจนไม่ได้สนใจเรื่องพวกนี้เลย แล้วก็นำมาซึ่งการเร่งพัฒนาและการแปลงเนื้อหาอย่างฉาบฉวยไม่ได้คิดหน้าคิดหลังกันเท่าไหร่
  • เกิดอะไรขึ้นกับการพัฒนาระบบฐานข้อมูล การพัฒนาโปรแกรมด้านบริการหลายต่อหลายตัวครับ? เราไม่ได้สนใจเรื่องคุณภาพของข้อมูล คุณภาพเรื่องการใช้งาน ฟังก์ชั่นการทำงาน อะไรกันเลย เราละเลยเรื่องพวกนี้มากมาย เราคิดว่าต้นทุนของซอฟต์แวร์มันมีแค่การเขียนมันขึ้นมาเท่านั้น ซึ่งมันน้อยกว่าความเป็นจริงมากมาย
  • เกิดอะไรขึ้นกับงานอีกหลายงาน ที่คิดว่าต้นทุนทางการพัฒนาซอฟต์แวร์มันน้อย แล้วเราต้องลงเอยกับระบบห่วยๆ มากมายมหาศาลที่มันมีผลกับชีวิตของพวกเราในระยะสั้นและระยะยาวไม่แพ้อย่างอื่นเลย

Continue Reading →

“ต้นทุน/มูลค่า” ที่แท้จริงของ “ซอฟต์แวร์”

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

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

ผมว่าคนบ้านเรามันประหลาดแท้ ผมเคยได้ยินความฝันเฟื่องมาเยอะว่าเราอยากจะมีนักพัฒนาที่ประสบความสำเร็จระดับโลก อยากมี Bill Gates เมืองไทย อะไรประมาณนั้น และเรามักจะรู้สึกหน้าใหญ่ใจโตเสมอ เวลาที่ยืดว่า “คนไทยเก่ง” เมื่อเด็กเราได้รางวัลเหรียญทองโอลิมปิคหรืออะไรก็ตาม

แต่มันไปไหนกันหมดล่ะ? จริงๆ เรื่องนี้ผมเคยเขียนเปรยๆ ไปนิดหน่อยในบทความเก่าๆ เรื่องคอมเมนท์เพิ่มเติมถึงบทสัมภาษณ์ผมที่ลงกรุงเทพธุรกิจ และที่ผมไปออกรายการแบไต๋ไฮเทค ว่ามันมีปัจจัยอะไรบ้างที่ทำให้สังคมอื่นๆ เค้าเจริญเหนือเราได้ ทั้งๆ ที่วัดกันตัวต่อตัว คนที่เก่งที่สุดของเราก็ไม่ได้แย่อะไรกว่าใครเค้าเลย (ซึ่งผมก็เข้าใจว่ามันไม่ได้วัดกันแค่คนที่เก่งที่สุด แต่มันต้องวัดกันทั้ง community)

การที่เราไปไหนไม่ได้ เพราะว่าเรา “ตีค่าของซอฟต์แวร์ต่ำเกินไป” ย้ำอีกครั้งนะครับ เราตีค่ามันต่ำเกินไปมาก ที่ๆ เค้าเจริญเค้ารู้กันมานานแล้ว อย่างที่ Steve Jobs เคยพูดเสมอว่า “It’s Software, Stupid” น่ะแหละ สิ่งที่สำคัญทีสุดในคอมพิวเตอร์ คือ “ซอฟต์แวร์” ครับ ไม่ใช่ฮาร์ดแวร์ หรือคอนเทนท์ (Content) อย่างที่หลายคนเข้าใจ ถ้าซอฟต์แวร์อ่อนซะอย่างเดียว ฮาร์ดแวร์จะดีแค่ไหน มันก็ด้อยไปด้วย ถ้าซอฟต์แวร์ห่วยซะอย่างเดียว ต่อให้เตรียมคอนเทนท์ดีแค่ไหน มันก็กากทั้งนั้น เพราะการใช้งานคอนเทนท์มันก็ต้องผ่านซอฟต์แวร์ (แต่ที่เราพูดถึงคอนเทนท์โดดๆ ได้ ก็เพราะว่าสำหรับมีเดียหลายๆ อย่าง มันมักมีซอฟต์แวร์ดีๆ อยู่แล้ว ทำให้มองถึงคอนเทนท์ดีๆ ได้ แต่ถ้าต้องการพัฒนาคอนเทนท์เฉพาะทาง เช่น Interactive Learning ทั้งหลาย ไม่มีซอฟต์แวร์ดีๆ มันก็ทำไม่ได้

อะไรบ้างที่มันตามมา? ผมเห็นความพยายามในการหา “ของเถื่อน/ของโจร” (ผมใช้คำว่า “ของเถื่อน/ของโจร” นะ ไม่ใช่คำว่า “ของฟรี”) ของคนหลายคนแล้วผมเศร้าใจนะ แล้วพวกนี้ก็มักจะมีแต่ความเห็นแก่ตัวเต็มไปหมด ยกตัวอย่างให้เห็นชัดๆ มั้ยล่ะ

  • บางคนต้องการทำร้านขายหนังสือออนไลน์ ขายเพลงออนไลน์ ขายนี่นั่นโน่นออนไลน์ แล้วกลัวแทบเป็นแทบตายกับการที่คนอื่นจะมาก๊อปปี้ของๆ ตัวเอง แต่ขอโทษนะ ดันถามหา crack, serial โปรแกรม เอา iPhone ไปลงโปรแกรมตามมาบุญครอง
  • มันเคยมีคนอยากให้ผมพัฒนาซอฟต์แวร์บน iPhone ให้นะ แล้วก็กลัวเหลือเกินว่าคนอื่นจะ crack ไปใช้ แล้ววันหนึ่งเขามาถามผมว่าจะเอาโปรแกรมไปทดสอบบนเครื่องพวกเขาได้มั้ย ผมบอกวิธีการไปว่าต้องทำแบบนี้นั้นโน้นก่อน เค้าบอกว่า “เครื่องพวกผม jailbreak ทั้งบริษัท” พอถามไปถามมา ก็หากันแต่ของเถื่อนจากมาบุญครอง แถมจ่ายเงินอีกตะหากนะนั่นน่ะ
  • ช่างภาพหลายคนนะ จะเป็นจะตายเวลารูปถูกคนเอาไปใช้ แต่ขอโทษนะ ถ้ากูใช้ Photoshop/Lightroom เถื่อนได้ กูเก่ง กูฉลาด กูไม่โง่เสียเงิน
  • อาจารย์มหาลัยหลายคน เด็กลอก paper ด่าเด็กแทบเป็นแทบตาย บอกว่าจะไม่ให้จบ แต่ท่านก็ขโมยโปรแกรมชาวบ้านเค้าใช้ เจอหน้ากันทีไรถามหาแต่วิธีใช้โปรแกรมแบบไม่ต้องจ่ายเงิน ทำได้มั้ย หา serial ให้หน่อย crack ให้หน่อย
  • คนที่ปล้นมาให้คนอื่น ก็ชอบบอกว่า “เป็นคนไทยต้องช่วยกัน เราไม่ช่วยกันใครจะช่วยเรา เราก็ต้องเอามาแบ่งปันกันใช้”

ไอ้อันสุดท้ายนี่แหละ ที่ทำให้ผมรู้สึกเจ็บปวดที่สุด ว่าทำไมมันถึงมีความคิดที่เห็นแก่ตัวกันได้มากมายขนาดนี้ … บางครั้งผมถึงกับตั้งคำถามว่า “จะเป็นอย่างไร ถ้าคนหมู่มาก เห็นแก่ตัว” ..​ “จะเป็นอย่างไร ถ้าการโหวต การลงความเห็นของคนหมู่มาก มันมาจากรากฐานความเห็นแก่ตัวของแต่ละคน ..” มันจะทำให้เกิดเรื่อง “รวมหัวกันปล้น” อะไรสักอย่าง แล้วยังคงเหมือนเป็นความชอบธรรม ได้ไหมล่ะ?

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

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

ถ้า 30 บาทที่จะจ่ายให้นักพัฒนา มันเยอะแยะมากมายมหาศาลมากนักล่ะก็ ลองคิดอะไรกันดูเล่นๆ มั้ยครับ ว่าเดือนๆ นึงเราเอาเงินไปทำอะไรบ้าง ที่มันพอๆ กัน

  • เคยให้เงินทิปเด็กเสิร์ฟกันเดือนละกี่บาทครับ? บางคนเงินทอนไม่เก็บกันทีละสิบกว่าบาท ป๋ามากครับ จ่ายได้ไม่ยาก (ยิ่งเด็กเสิร์ฟสวยนี่ยิ่งยัดแบงค์ยี่สิบลงไปด้วยไม่ยากเลย) ทำแบบนี้ทุกมื้อเป็นเงินเท่าไหร่ อย่าบอกนะครับ ว่าเด็กเสิร์ฟฐานะยากจน ทำงานหนักต้องนี่นั่นโน่น แล้วโปรแกรมเมอร์ล่ะครับ เราไม่ได้ทำงานเหรอ เรารวยนักเหรอ เด็กเสิร์ฟมีเงินเดือน แต่เราหลายคนไม่มีเงินเดือนแบบประจำ ก็มีแค่เงินจากการรับจ้างทำงาน กับเงินจากการกดซื้อโปรแกรมทีละ 30 บาทเท่านั้นนะครับ อย่าลืมข้อนี้ไป การมีคอมใช้ก็ไม่ได้แปลว่ารวยนะ มันก็สิ่งจำเป็นสำหรับการทำงานของพวกเราน่ะแหละ
  • หนักกว่านั้นครับ เคยโชว์ป๋าด้วยการให้เงินขอทานเวลาเดินข้ามสะพานลอยกับแฟนมั้ยล่ะ? ลองคิดๆ ดูซิ ว่าเท่าไหร่ ถ้าทำเลดีๆ หน่อย รายได้ต่อเดือนอาจจะมากกว่าโปรแกรมเมอร์บ้านเราโดยเฉลี่ยซะอีกนะครับ
  • แย่กว่านั้นหน่อย เราเคยให้เงินคนที่ “หาของโจรมาขาย” กันเท่าไหร่กันเหรอครับ ลง app ที่ขโมยมาครั้งละ 500 บาท ได้ app เต็มเครื่อง ที่เราก็ไม่ได้ใช้หรอก ใช้จริงๆ จังๆ ก็อาจจะแค่ 7-8 ตัว ถ้าจ่ายให้นักพัฒนาตรงๆ ก็ไม่ต่างอะไรกันมากมายนักหรอก

[ป.ล. ผมไม่ได้บอกว่าอาชีพเหล่านี้สบาย หรือรายได้สูงนะครับ ทุกอาชีพมันก็มีความยากลำบากของมันเหมือนกันหมด มีงานต้องทำ มีต้นทุน มีอะไรเหมือนกันหมด ความลำบากแต่ละอาชีพ อย่าเอามาเทียบกันโดยเด็ดขาด]

แล้วไอ้ข้อสุดท้ายนี่มันต่างกันตรงไหนล่ะ?

หลายคนคิดง่ายๆ ตื้นๆ แค่ “เงินออกจากกระเป๋าเราเท่ากัน ให้ได้มากที่สุดดีกว่า ไม่เข้ากระเป๋านักพัฒนาเลยก็ช่างมันประไร” แต่ลองมองถัดไปสักนิดนะ นักพัฒนาได้เงินไปแล้วเอาไปทำอะไรเหรอครับ ก็ต้องเอาไปศึกษานี่นั่นโน่นเพิ่มขึ้น เอาไปเพิ่มทรัพยากรในการทำงาน ไม่ว่าจะเป็นคน ความรู้ หรือเครื่องที่พอจะทำงานได้ดีขึ้น หรือจ้างคนมาเป็น customer service คอยตอบคำถามผู้ใช้ ฯลฯ อย่าคิดว่าเอาไปซื้อเรือยอร์ชซื้อรถสปอร์ตแบบไร้สาระกันทุกคนสิครับ (จริงๆ ถ้ามีเงินไว้ละลายเล่นเมื่อไหร่ หลายคนอาจจะทำงั้นนะ แต่โปรแกรมเมอร์แทบจะ 100% ของบ้านเรา ไปไม่ถึงจุดนั้นเด็ดขาด แค่ไม่อยู่ในภาวะเดือนชนเดือน ก็หรูพอควรแล้ว)

ผมก็เห็นว่าคนไทยควรช่วยกันนะ แต่เราอยากได้อะไรล่ะ? เราอยากได้สังคมนักพัฒนาที่เก่งๆ กันหรือเปล่า เราอยากได้คนไทยที่เก่งไม่น้อยหน้าใครในโลกบ้างไหม? … ไปๆ มาๆ ผมเชื่อว่า “เราไม่อยากได้มันหรอก” ทำไมน่ะเหรอ ก็เพราะคนไทยมันไม่ช่วยกันเองไงล่ะครับ แล้วเราจะได้นักพัฒนาเก่งๆ สังคมนักพัฒนาเก่งๆ แบบที่เราฝันมาจากไหน (หรือว่าผมฝันไปคนเดียววะ)

ทีนี้เราจะเห็น “ค่า” จริงๆ ของซอฟต์แวร์ล่ะครับ … cost จริงๆ ที่พวกเราทุกคนต้องจ่ายก็คือ วงการที่นักพัฒนาถีบตัวเองไม่ขึ้น scale ตัวเองไม่ได้ สร้างทรัพยากรในการรองรับงานที่ใหญ่ขึ้น มี demanding สูงขึ้นไม่ได้ เพราะทุกอย่างต้องใช้เงิน ใช้ใจและมาม่าอย่างเดียวไม่ได้ (ขนาดมาม่ายังต้องซื้อเลย) ซึ่งยิ่งจะทำให้เราเสียศักยภาพในการแข่งขันในภาพรวมมากขึ้นๆ ทุกวัน

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

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

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

นักพัฒนา มันก็คนเหมือนๆ กับทุกคนน่ะแหละครับ ต้องกินข้าว ต้องมีชีวิต ต้องจ่ายค่าเช่า ต้องเลี้ยงครอบครัว ต้องแบกภาระของครอบครัว ถูกครอบครัวฝากความหวัง ฯลฯ เหมือนกับพวกคุณทุกคนน่ะแหละครับ

ผมอยากจะตะโกนดังๆ ตรงนี้เหลือเกินครับ

นักพัฒนาไทย มันไประดับโลกไม่ได้หรอก ไม่ใช่เพราะมันไม่เก่ง แต่เพราะคนไทยด้วยกันเองไม่ช่วยกันสนับสนุน ปากบอกอยากได้คนเก่ง อยากให้คนไทยไม่แพ้ใครในโลก แต่ก็ปล่อยให้มันตายไป ใจไม่ช่วยสร้าง

มันไปไหนไม่ได้หรอกครับ เพราะวุฒิภาวะ (maturity) และทัศนคติ (mindset) ของ “สังคมผู้ใช้” ของเราไปไม่ถึง ไม่สนับสนุนให้พวกเราไปได้ ไม่ยอมให้ไป และต้องการให้นักพัฒนามันตายกันหมด

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

แล้วพวกเราล่ะ … ไม่ใช่ “คนไทย” กระนั้นหรือ? แล้วทำไมท่านไม่ช่วยเราบ้าง?

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

มันเป็น The price we all have to pay … สิ่งที่พวกเราทุกคนต้องจ่ายด้วยกัน

ด้วยความเคารพ
รวิทัต ภู่หลำ, ศิลปินซอฟต์แวร์ นักเขียน และอาจารย์มหาวิทยาลัย


[อัพเดท 10/07/2555] ป.ล. ผมเขียนเรื่องนี้ ตั้งใจเพื่อเป็น wake up call ด้วยส่วนหนึ่ง ดังนั้นจะแรงหน่อย และผมต้องการชี้ให้เห็นภาพที่มันใหญ่ขึ้นอีกนิดหน่อย ของอุตสาหกรรม IT ว่ามันเป็นเรื่องของพวกเราหลายต่อหลายคน รวมถึงผู้บริโภคด้วย มากกว่าแค่นักพัฒนา

นาฬิกาปลุก มันต้องดังหน่อย ต้องแรงหน่อย ไม่งั้นคงจะหลับกันต่อไป แล้วมันก็จะกลับมาเดินปกติต่อไป จนถึงเวลาที่จะต้องปลุกอีกครั้ง

ก่อนที่มันจะกลายเป็นนาฬิกาตาย … เมื่อถ่านมันหมดไฟ และใจมันหมดลาน

แปลหนังสือ/เขียนหนังสือ

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

ด้วยจรรยาบรรณ ผมขอสงวนชื่อทั้งหมด ทั้งหนังสือ ผู้แปล และสำนักพิมพ์เอาไว้นะครับ

ผมพบว่าผู้แปลหนังสือ “แปลไม่รู้เรื่อง” เป็นอย่างมาก ซึ่งขอสรุปเป็นเรื่องๆ อย่างคร่าวๆ ดังนี้

  • ใช้ภาษายากเกินความจำเป็นมาก หนังสือต้นฉบับเขียนด้วยภาษาอังกฤษพื้นๆ พื้นมากๆ เรียกได้ว่าเหมือนกับภาษาพูดธรรมดา แต่ว่าทำไมเวลาแปลแล้ว กลายเป็นภาษาไทยที่ไม่ธรรมดามาก ต้องปีนบันไดอ่าน ขึ้นไปสามสี่ชั้นก็ยังอ่านไม่รู้เรื่อง (แล้วจะปีนทำบ้าอะไร) ต้องแปลไทยเป็นไทย เรียบเรียงใหม่ในหัวตั้งหลายต่อหลายครั้ง
  • อิงกับตัวหนังสือ/ตัวอักษรมากไป จนสื่อเจตนา “ผิด” จากภาษาอังกฤษอย่างมาก แบบไม่น่าให้อภัย ถ้าดูทีละคำในประโยคว่าแปลว่าอะไร ก็อาจจะแปลถูกต้อง แต่ว่าถ้าดูพร้อมกันทั้งประโยค และยิ่งทั้งย่อหน้า ทั้งหน้า จะเห็นได้ว่าผิดแบบชัดเจน
  • เน้นภาษาสวย (อีกครั้ง) แต่อ่านแล้วไม่อินเลย ส่อให้เห็นชัดเจนว่าผู้แปลเป็นนักภาษา แต่ไม่มีความรู้ความเชี่ยวชาญความชำนาญอะไรเลยในเรื่องที่เค้ากำลังแปลอยู่ (พูดง่ายๆ ว่าไม่มี Domain Knowledge ในเรื่องนั้นๆ เลย)
  • โครงสร้างทุกอย่างที่ออกมา เป็น “ภาษาอังกฤษ” มากกว่าเป็นภาษาไทย มันขัดธรรมชาติของภาษาเรา ผิดจริตหลายอย่างมาก (แต่ว่าถ้าแปลกลับเป็นภาษาอังกฤษ อาจจะเข้าท่ากว่า) เช่น มีการใช้ “-” แสดงประโยคขยาย/เสริม ในระหว่างประโยค ซึ่งภาษาเราไม่ใช้กัน เป็นต้น

สิ่งที่ผมอยากจะฝาก อยากจะเขียนถึง ไม่ใช่การด่าว่าใคร แต่อยากจะเอาความจริงที่ตัวเองพบมา ทั้งจากประสบการณ์เขียน แปล และบรรณาธิการหลายต่อหลายอย่าง ฝากให้คนที่มาอ่าน Blog ผมดังนี้

  • งานแปลหนังสือ จริงๆ แล้วมันคือ “งานเขียนหนังสือ” โดยอาศัยเค้าโครง โครงสร้าง การเรียงลำดับเนื้อเรื่อง จากหนังสือเล่มอื่นที่มีอยู่แล้วเท่านั้นเอง
  • ดังนั้นมันจะดีกว่า ถ้าเราคิดว่า ก่อนอื่น เราต้องการคนแปลหนังสือ แบบเดียวกับที่เราต้องการคนเขียนหนังสือ นั่นคือ ไม่ใช่นักภาษาศาสตร์ แต่เป็นคนที่มี Domain Knowledge ในด้านนั้นๆ โดยเฉพาะ ที่มีความสามารถในการสื่อสารภาษาไทยได้ดีเป็นหลัก และพอจะอ่านภาษาต่างประเทศ (ภาษาต้นทาง) ออก เท่านั้นเอง
  • ทำไมน่ะหรือ เพราะว่าการแปลที่ดี ไม่ใช่แปลตัวอักษรออกมาให้ครบทุกตัว ทุกคำพูด ทุกบรรทัด ให้เหมือนต้นฉบับทุกวรรคทุกตอน แต่ว่าต้องเป็นการสื่อสาร “วิญญาณ” ของมันออกมาในอีกภาษาหนึ่งต่างหาก ดังนั้นหากผู้แปลไม่มีความรู้ความเชี่ยวชาญ ประสบการณ์อะไรเลย พูดง่ายๆ ว่า “ไม่อิน” กับเรื่องที่ตัวเองแปล มันจะออกมาแย่มาก เพราะว่านักภาษาหลายคน (จากประสบการณ์ที่พบ) มีแนวโน้มจะแต่งภาษาให้สละสลวย มากกว่าสื่อวิญญาณของมันให้ได้อย่างดิบๆ ตรงไปตรงมา
  • อย่าคิดว่า “ก็ให้นักภาษาแปลก่อน จะได้แปลถูกหลักภาษา แล้วค่อยให้คนมี Domain Knowledge แก้ไขทีหลัง” ให้คิดกลับกันว่า “ให้คนมี Domain Knowledge เขียนจากต้นฉบับภาษาต่างประเทศก่อน แล้วค่อยให้นักภาษาเกลาทีหลัง” จะดีกว่ามาก

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

ปิดท้ายละกัน ผมเจอประโยคนี้ “It takes all you’ve got to keep safe” …. ซึ่งในบริบทของเนื้อหาส่วนหนึ่งในหนังสือเล่มนั้น มันหมายถึงว่า “เราต้องทำทุกวิถีทางให้รอดจากอันตรายทั้งหลายแหล่” ….​ ดันไปแปลว่า “มันจะเอาทุกอย่างที่เราได้มา ไปเก็บไว้ในตู้เซฟ”

สุดตรีนมากครัฟ

The Flying Ducthman

ในหนังเรื่อง Pirates of Caribbean มีเรือลำหนึ่งที่ผมชอบมาก ยิ่งกว่า The Black Pearl นั่นคือ The Flying Dutchman ส่วนหนึ่งก็เพราะว่าผมเคยได้ยินตำนานของเรือลำนี้มาตั้งแต่เด็กๆ

ยอมรับว่าในตอนแรกที่ผมดูเรื่องนี้ ผมไม่ได้คิดอะไรมากเลย กับการออกแบบ The Flying Ducthman และลูกเรือ ออกจะผิดหวังเสียด้วยซ้ำ ที่ออกแบบมาเป็นสัตว์ประหลาดที่ผสมคนกับสัตว์ทะเล มากกว่าที่จะเป็น “เรือผี” แบบ The Black Pearl ในภาคแรก (อาจจะด้วยเหตุผลง่ายๆ ว่าไม่อยากจะออกแบบซ้ำ)

แต่ว่ายิ่งเวลาผ่านไป ผมมีโอกาสดูหนังเรื่องนี้ใหม่ทั้งสามภาคแบบรวดเดียวอีกรอบ และมีโอกาสนั่งคิดอีกครั้ง ด้วยประสบการณ์ชีวิตที่เปลี่ยนไปมาก จากการทำงานบริหารหน่วยงานราชการ (ศูนย์คอมพิวเตอร์ ม.ศิลปากร) มาสองปีเต็มๆ …. ก็เห็นอะไรบางอย่าง ที่ “เฮ้ย เจ๋งว่ะ”

  • ก่อนอื่นขอเล่าว่า ผมมักจะเปรียบเทียบการทำงาน กับการเดินเรือในมหาสมุทรอยู่แล้ว
  • เรือทุกลำที่เดินทางในมหาสมุทร ย่อมต้องมีเป้าหมาย ไม่เช่นนั้นจะหลงทาง เรือหลายลำมีเป้าหมายที่เรียบง่าย เช่น เดินทางจากท่าหนึ่งไปยังอีกท่าหนึ่ง และ Flying Dutchman ก็เช่นเดียวกัน
  • Flying Dutchman เป็นเรือที่ “เคย” มีเป้าหมาย และเป้าหมายที่ว่านั้น คือ การส่งวิญญาณจากภพหนึ่ง ไปยังอีกภพหนึ่ง
  • แต่สิ่งที่เราเห็นในภาพยนต์นั้น Flying Dutchman คือ “องค์กรที่ไร้เป้าหมาย” ซึ่งอาจจะเกิดจากเหตุผลอะไรก็แล้วแต่
  • ทีนี้พอเป็นองค์กรไร้เป้าหมาย ผลเป็นอย่างไร ผลคือ “การเสื่อมสลายขององค์กร” องค์กรที่ไม่ได้รับการดูแล เหลียวแล มีสภาพกลืนไปกับสภาพแวดล้อมอะไรก็ได้ที่มันเป็นอยู่ กลายเป็นแหล่งหา “ผลประโยชน์” ของลูกเรือในองค์กร ที่อ้างองค์กรเพื่อผลประโยชน์ตัวเองและพวกพ้อง กลายเป็นแหล่งพักพิง “ถาวร” ของบรรดาลูกเรือ
  • การล่าผลประโยชน์ในคราบขององค์กรมันช่างน่าสะพรึงกลัวนัก หลายคนอยู่ไปนานๆ เข้า ก็ปรับตัว “ฝัง” เข้าไปเป็นส่วนหนึ่งขององค์กรที่ไร้เป้าหมาย ล่องลอยอยู่ในทะเลเรื่อยๆ ลืมตัวตนของตัวเอง ลืมว่าตัวเองเคยเป็นใคร ตัวเองเคยอยากทำอะไร ตัวเองต้องการอะไร ตัวเอง ฯลฯ อะไร จนวันหนึ่งความเป็นตัวเองก็สูญสิ้นไป กลายเป็นส่วนหนึ่งของกระบวนการหาผลประโยชน์ในคราบของ “องค์กร” อย่างสนิท
  • อย่างหนึ่งที่ผมโคตรชอบเลยว่ะ ก็คือ Flying Dutchman ไม่สามารถเทียบฝั่งได้ ถ้าโดยทั่วไปแล้ว เรามักเทียบฝั่งเป็นเป้าหมาย และการ “ถึงฝั่ง” คือ การไปถึงเป้าหมาย ก็จะพบว่า องค์กรแบบ Flying Dutchman รวมถึงคนในองค์กร ไม่มีวันนั้นแน่นอน
  • การเปลี่ยนกัปตันเรือ (= การเปลี่ยนผู้บริหาร) อาจจะนำมาซึ่ง “เป้าหมาย” ให้กับองค์กร (เหมือนที่ลูกเรือคนหนึ่งบอกว่า “เรือลำนี้มีเป้าหมายอีกครั้ง”)
  • ซึ่งเมื่อองค์กรมีเป้าหมาย เราอาจจะได้เห็นความเป็นตัวเองของลูกเรือแต่ละคนอีกครั้ง เป็นลูกเรือที่ช่วยกันเพื่อให้องค์กรไปสู่เป้าหมาย (และตัวเองก็ไปถึงเป้าหมายร่วมกับองค์กร) โดยยังคงเป็นตัวเองอย่างชัดเจน ไม่เหมือนกับสมัยที่ยังไร้เป้าหมาย ที่ “เหมือนจะทำงาน” แต่ว่าไปไม่ถึงไหน หาประโยชน์อะไรบางอย่างไปวันๆ
  • แต่ว่าไอ้พวกองค์กรไร้เป้าหมายพวกนี้อ่ะนะ ว่าไป ก็ชอบเป็นมาเฟียน่านน้ำ ใช่มั้ยล่ะ ไม่รู้ว่าจะโผล่มาเมื่อไหร่ เป็นที่หวาดกลัวของบรรดานักเดินเรือที่มีเป้าหมายทั้งหลาย

ตัดกลับมาที่องค์กรของเราๆ ทั้งหลายนะครับ ลองถามเล่นๆ ว่า “องค์กรของเรามีเป้าหมายหรือเปล่า” ไม่ใช่เป้าหมายเชิงผลประโยชน์ หรือว่าการหาผลประโยชน์นะครับ ไอ้พวกนั้นเซ็ตง่าย และถ้าเซ็ตเป็นเป้าหมายหลักเมื่อไหร่ มันก็ไม่ต่างอะไรกับ Flying Ducthman ตั้งแต่ต้น (คือเป็นเรือที่เกิดมาเป็น Flying Dutchman เลย)

หากองค์กรของเรามีเป้าหมายไม่ชัดเจน วัดไม่ได้ว่าไปถึงไหนหรือเปล่า เราสังเกตดีๆ ว่ามันจะเป็นเหมือนกับ Flying Dutchman น่ะแหละ คือเป็นแหล่งรวมคนที่ต้องการประโยชน์ในคราบองค์กร ที่อาศัยองค์กรเป็นแหล่งฝังตัวอย่างเหนียวแน่น สับสนระหว่างผลประโยชน์ตัวเอง พวกตัวเอง และผลประโยชน์ขององค์กร ฯลฯ

อย่างหนึ่งที่ต้องระวัง ในองค์กรหลายองค์กร มีการพูดถึง “หน้าที่” ก่อน “เป้าหมาย” ซึ่งผมบอกได้เลยว่า “งี่เง่า” ครับ บนเรือ Flying Dutchman มีลูกเรือทำหน้าที่ต่างๆ มากมาย แต่พาองค์กรไปไหนกัน? เพราะว่า Flying Dutchman ในฐานะขององค์กรมันไม่ได้มีเป้าหมายอะไร (ใน timeline ของหนัง) พูดอีกแบบคือ มันกลายเป็นเครื่องมือในการทำอะไรก็ไม่รู้ของใครบางคน (หรือของกลุ่มบุคคล) ผิดวัตถุประสงค์ขององค์กรที่ตั้งมาตั้งแต่ต้น

ในองค์กรที่มีแต่ “หน้าที่” แต่ไม่มี “เป้าหมาย” ความอันตรายของมันก็คือ ทุกคนจะคิดว่าตัวเองกำลัง “ทำงาน” แต่ว่ามันอาจจะ pointless ไม่ได้พาอะไรไปไหนเลย ไม่ได้มีประโยชน์อะไรเลย นอกจากภาพลวงตาว่าตัวเองกำลัง “ทำงาน” อย่างหนักหนา ตาม “หน้าที่” ที่ได้กำหนดไว้แล้ว

ที่น่ากลัวคือ หลายองค์กรมี “หน้าที่” แต่กลับไม่มี “เป้าหมาย” จริงจัง มีเพียง “เป้าหมาย” ที่ลอยไปลอยมา เอาไว้พูดติดปากให้เท่ๆ เก๋ไก๋ เวลามีใครถามเท่านั้นเอง .. ก็มักจะลงเอยด้วยการอ้าง “หน้าที่” นั้นแหละ มาทำลายความเจริญหรือความคืบหน้าอันควรจะเป็น “เป้าหมาย” ขององค์กรตามที่มันถูกตั้งมาแต่ต้น อย่างแน่เสียดาย

update 1 : มีอะไรเพิ่มเติมนิดหน่อย … สังเกตมั้ยว่ากัปตันเรือจะต้องเริ่มด้วย “ให้หัวใจกับเรือ” … ครับ ถ้าไม่สามารถให้ “ใจ” กับองค์กรได้แล้ว อย่าริไปเป็นกัปตันเรือลำไหนเด็ดขาด มีเวิร์กหรอก

Programmer->Manager

จาก ข้อความของ @sugree ใน twitter

my profession is coding. don’t hire me to be manager. it’s useless.

ทำให้นึกถึงคำพูดของอาจารย์ชูศักดิ์ วรพิทักษ์ประโยคนึงมากๆ เลย ว่า “บ้านเรา” ไม่ค่อยให้ความสำคัญกับการเติบโตในลักษณะทำนองนี้เท่าไหร่ (คือการเติบโตโดยใช้ technical skill เป็นไปได้ยาก) ถ้าอยากจะโตต้องขยับขยายไปเป็นผู้จัดการ หรือ Manager เท่านั้น ทำให้หลายๆ คนต้องกระเสือกกระสนอัพเกรดตัวเองไปเป็นระดับผู้จัดการ

และท่านก็ต่ออีกว่า

เราก็เอาโปรแกรมเมอร์ที่เก่งๆ (มักจะเป็นคนที่เก่งที่สุด) ไปโปรโมทเป็นผู้จัดการ ส่วนมากผลที่ได้ก็คือ เสียโปรแกรมเมอร์เก่งๆ ไปคนนึง แล้วก็ได้ผู้จัดการห่วยๆ มาคนนึงแทน

KID In Digital ก็เรียนรู้เรื่องนี้แบบ Hard-way ล่ะนะ แต่ตอนนี้น้ององ(คช) คนที่ลองทำงานเป็น Project manager อยู่ครึ่งปี ก็อยากจะกลับมาเขียน code แล้ว แต่ใครจะมาเป็น Project manager แทนล่ะ? เพราะว่าผมเองก็อยากจะกลับไปเขียน code เหมือนกัน……

จะว่าไป ผมก็ไม่ได้้เป็น Project manager ที่ดีเท่าไหร่หรอกนะ และไม่เคยคิดว่าตัวเองเป็นได้ดีด้วย ไม่ได้คิดว่าน้ององเป็นได้ดีเหมือนกัน เพียงแต่ว่าคนมันมีกันแค่นี้ ก็เลยต้องทดลองกันไปเรื่อยๆ ตราบใดก็ตามที่ยังทดลองกันได้อยู่

บางทีถ้าไม่ลองจับให้มีบทบาทบางอย่าง เราจะรู้ได้ยังไงว่าใครเหมาะ/ไม่เหมาะกับอะไรบ้าง ก็ต้องให้โอกาสกันเรียนรู้บ้าง

อย่าไปคิดว่าทุกอย่างมันจะต้องถูกต้อง เหมาะสม ไร้ที่ติ ไร้ข้อผิดพลาด ตั้งแต่แรก ตั้งแต่ต้นเลย ป่วยการ

Goodbye, SIGMA. Hello, DACI!

ผมพยายามตั้ง Lab วิจัยทาง Computational Science (ใน Link เป็นข้อมูล “เก่ามาก” ไม่ได้ update มานานมากกกก) ที่ภาควิชาคอมพิวเตอร์ คณะวิทยาศาสตร์ ม.ศิลปากร ตั้งแต่จบกลับมาทำงานใหม่ๆ และ Lab นั้นก็เป็นรูปเป็นร่างขึ้นมาภายใต้ชื่อ SIGMA Lab (Scientific & Informatics Group of Multidisciplinary Arts; และคำย่อก็แปลว่าการรวบรวมซะด้วย) ซึ่งอยู่ในภาควิชาคอมพิวเตอร์เป็นเวลาครึ่งปี ก่อนที่จะขยับขยายมาอยู่ที่ใหม่ ที่สถาบันวิจัยและพัฒนา ม.ศิลปากร เช่นกัน ภายใต้โครงการนำร่อง Silpakorn Digital Content City (ตามที่ได้คุยและปรึกษากับผู้บริหาร ในเรื่องที่ท่านต้องการผลักดัน) ซึ่งผมก็เคยได้ post กิจกรรมของ SIGMA Lab ไปใน blog นี้เมื่อนานมาแล้ว

และในวันนี้ วันที่ SDCC โตขึ้น งานการทั้งหมดออกในชื่อนี้มากขึ้น เทียบกับ SIGMA Lab ที่เป็นองค์กรเกือบจะลับๆ ที่ไม่มีตัวตน (เพราะว่าที่มหาวิทยาลัยไม่ได้มีระบบการเรียนการสอนแบบห้องวิจัย) และลักษณะงานที่ออกไปในเชิง Computational Science และ Scientific Computation ตามเจตนาเดิมน้อยลงไปทุกที (ถึงวันนี้แทบไม่มีเลย) ในขณะที่ความต้องการในการทำ Digital Content มีมากขึ้น ไปประชุมที่ไหนก็มีแต่เรื่องนี้ทั้งนั้น เรื่อง Digital Content กลายเป็นประเด็นหลักในการทำงาน การวางแผนงาน และการสนทนา …. หลายคนพยายามที่จะผลักดันให้กลายเป็นวาระแห่งชาติ (แต่ไม่รู้จะแค่ไปอยู่ในแผน ที่ไม่เคยมีผลจริงๆ หรือเปล่า)

นอกจากนี้ยังมีเรื่องของความสามารถของทีมงาน SIGMA Lab เอง ที่ไม่เพียงพอจะทำ Scientific Computation และยังไม่มีโจทย์อีกด้วย แต่ว่าถ้าเป็นเรื่องการทำเนื้อหาดิจิทัลล่ะก็ ..​ เรามีความพร้อมพอสมควร และคิดว่าทำได้ดีกว่า

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

ยินดีต้อนรับสู่ DACI: Digital Arts & Content Industry

เปลี่ยนภาษาเขียนโปรแกรม

อะไรยากกว่ากัน ระหว่าง

  1. สอนคนที่เขียนโปรแกรมเป็นแล้ว ให้เปลี่ยนภาษา
  2. สอนคนที่เขียนโปรแกรมไม่เป็น ให้เขียนโปรแกรมเป็น

หลายคนจะตอบข้อ 2 โดยไม่ลังเลเท่าไหร่ เพราะว่าถ้าเป็นภาษาหนึ่งๆ แล้ว เรียนอีกภาษาหนึ่งคงไม่ยากเท่าไหร่ สาเหตุหนึ่งก็คงเพราะว่าภาษาส่วนมากมีรากที่คล้ายๆ กัน เช่น Pascal, C, C++, Java, C# ถ้าเป็นภาษาใดภาษาหนึ่งแล้ว การเรียนรู้ syntax ของอีกภาษาหนึ่งก็ไม่ใช่เรื่องยากเย็นเท่าไหร่แต่ว่าสอนคนที่เขียนโปรแกรมไม่เป็นให้เขียนโปรแกรมเป็นนี่สิ งานช้าง เพราะว่าอาจจะต้องสอนแนวคิด หลักการคิดแบบคอมพิวเตอร์ หลักการคิดแบบ von Neumann machine หลักการคิดแบบที่เราต้องใช้เวลาเขียนโปรแกรม ฯลฯ ซึ่งอาจจะยากหน่อย ไหนเลยจะต้องมานั่งเรียนรู้ syntax อีกแต่ว่าถ้าเปลี่ยนคำถามหน่อยนึงล่ะ เปลี่ยนข้อที่ 1 ให้เป็น

  1. สอนคนที่เขียนโปรแกรมเป็นแล้ว ให้เปลี่ยน paradigm ในการเขียนโปรแกรม

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

  • นึกถึงโปรแกรมที่ประกาศตัวแปรไม่ต้องประกาศ type แต่ว่าก็ยังเป็น strong typing ออกไหม
  • นึกถึงโปรแกรมที่ไม่ต้องประกาศ main function ออกไหม
  • นึกถึงภาษาโปรแกรมที่ไม่มี loop ออกไหม
  • นึกถึงภาษาโปรแกรมที่ฉลาดพอที่จะทำ list comprehension (เช่นบอกว่า จะเอา x จาก list L โดยที่ x มากกว่า 3 แล้วมันเข้าใจว่าจะต้องทำอะไรโดยที่เราไม่ต้องเขียน low-level instruction)

นอกจากเรื่องพวกนี้จะยาก เพราะว่าพอสมองเราถูก over-train ให้ชินกับอะไรบางอย่างมากๆ แล้ว มันจะเรียนรู้สิ่งใหม่ยากขึ้น มีอะไรที่ต้อง unlearn มากขึ้น อย่าว่าแต่ imperative vs. functional programming เลย แค่ procedural vs. object-oriented ก็แย่แล้ว การที่เราจะ unlearn เรื่องหนึ่งๆ แล้วปรับไปสู่เรื่องใหม่ เป็นเรื่องที่ค่อนข้างยากเอาการทีเดียวไม่ใช่แค่นั้น แต่ให้เขียน style เดิม แต่ว่าเปลี่ยนภาษาเขียนโปรแกรม ก็ยากแล้ว

  1. สอนคนที่เขียนโปรแกรมเป็นแล้ว ให้เปลี่ยนภาษา โดยต้องใช้เป็นภาษาหลักในกรณีทั่วไปแทนภาษาเดิม

ผมเห็นน้องหลายคนเขียน Ruby กันมาพักนึง (เพราะว่างานบางงานที่อาจจะต้องใช้ Rails) แต่ว่าพอลองตั้งโจทย์ที่มองไม่เห็นชัดว่าจะใช้ความสามารถของภาษาตรงไหน (ให้สร้าง permutation ของ list) น้องหลายคนก็ fall-back กลับไปเขียน C เหมือนเดิมไม่แปลกอะไร เพราะว่าจริงๆ แล้วผมเอง บางทีขนาดโปรแกรมง่ายๆ ก็ยังดื้อจะเขียน C++ กับ STL อยู่เลย ทั้งๆ ที่รู้อยู่แก่ใจว่า Ruby, Python, Haskell มันก็ทำได้ และจะง่ายกว่าด้วย แต่ว่าทำไมนะ ทำไมผมถึงยังจะดื้อที่จะ fall-back ไปเขียน C++ อยู่ดี?ความเคยชินบางอย่างมันแก้กันยาก อาจจะเป็นเพราะว่าผมใช้เวลาอยู่กับ C++ มานานกว่าภาษาอื่นๆ และทำงานจริงในภาษาตระกูล C มานานกว่าภาษาอื่นๆ หลายเท่าตัวก็ได้ (C, C++, Objective-C)เปล่าหรอกครับ ผมไม่ได้ถามเพื่อหาคำตอบใดๆ เพราะว่านี่คือธรรมชาติของมนุษย์ อะไรก็ตามที่เราทำจนเป็นนิสัย จนเป็น second nature แล้วมันอาจจะเปลี่ยนแปลงยากมาก หลายเรื่องเราเปลียนไม่ได้ เพราะว่าเรามีความรู้สึกว่า “เคยทำ” อะไรที่มันคล้ายๆ กันมาก่อนในลักษณะนั้นอยู่แล้ว (เช่นเวลาผมจะเขียนโปรแกรมง่ายๆ บางทีผมใช้ C++ โดยไม่มีเหตุผล ทั้งๆ ที่เขียน Ruby ง่ายกว่าเยอะ ส่วนหนึ่งเพราะว่าผม “เคยทำ” สิ่งนั้นมาแล้วใน C++ มั้ง)ผมเลยมีข้อสังเกตและข้อเสนอแนะให้น้องๆ ที่อยากจะเขียนโปรแกรมภาษาใหม่นะครับ ดังนี้

  1. เขียน code ภาษานั้นให้เยอะที่สุดและเร็วที่สุด โดยอย่าเอาแต่ลอก code จากหนังสือหรือว่า tutorial เพราะว่าคุณจะไม่ได้ใช้งานจริง และไม่ได้ force ให้ตัวเองคิดในลักษณะของภาษาใหม่ๆ เท่าไหร่
  2. เรียน standard library ของภาษานั้นๆ ให้มากที่สุดในเวลาที่น้อยที่สุด เพื่อให้รู้ว่ามันพอจะทำอะไรให้เราได้บ้าง โดยไม่ต้องลงอะไรเพิ่มเติม แล้วก็ลองดูว่ามันเอามาทำอะไรให้ชีวิตเราง่ายขึ้นได้บ้าง
  3. หักดิบ อย่าเล่นภาษาเดิมเท่าที่จะทำได้ ถ้าจำเป็นจริงๆ ก็ลองลบ compiler ภาษาเดิมทิ้งไปเลย
  4. อย่าเอาแต่เรียน syntax กับ library นะ เพราะว่าสิ่งที่สำคัญที่สุดสิ่งหนึ่งที่แทบทุกคนลืม ก็คือ การเรียน idiom ของภาษานั้นๆ ยิ่งหลายภาษา โดยเฉพาะพวกภาษาใหม่ๆ เป็นพวก expressionism ซะด้วยสิ แบบนี้ idiom ยิ่งสำคัญมากเข้าไปอีก
  5. ยิ่งถ้าเป็นการเรียนภาษาคนละ paradigm กับที่เคยเขียนนะ ยิ่งไปกันใหญ่ เพราะว่าลักษณะการเขียน วิธีคิด idioms ต่างๆ มันจะต่างกันมาก มากๆ ถึงมากที่สุด
  6. ยากนะ แต่ว่าหลายครั้งต้องคิดนอกกรอบเดิม ถ้าคิดตามกรอบเดิมล่ะก็ คุณก็จะไม่ได้เขียนภาษาใหม่หรอก แต่ว่าจะเขียนภาษาเดิมน่ะแหละ แต่ว่าอยู่ใน syntax ใหม่เท่านั้นเอง
  7. ทำงานจริง เพราะว่าทำงานจริงเท่านั้นที่จะบังคับให้เราต้องอยู่กับภาษาโปรแกรมภาษาใหม่และกระบวนการคิดของมัน ยิ่งทำงานจริงแบบมี deadline ด้วยแล้วล่ะก็ ยิ่งดี เพราะว่าเป็นการบังคับให้เรายิ่งต้องคิดและ figure out การทำงานต่างๆ และ idioms ของมันให้ได้เยอะที่สุด เพื่อประโยชน์สูงสุด และให้งานเสร็จเร็วที่สุด
  8. หา library เพื่อช่วยงานโน้นงานนี้เยอะๆ มีของเล่นเยอะๆ แล้วลองเล่นกับมัน เดี๋ยวก็ชินกับมันไปเองแหละ
  9. ดูภาษาอื่นๆ ใน paradigm เดียวกันบ้าง เพื่อหาข้อเปรียบเทียบหน่อยๆ ก็ดี
  10. ระลึกไว้ ว่าไม่ใช่ทุกภาษาเหมือนกัน สิ่งที่ผิดหลักการในภาษาหนึ่ง อาจจะเป็นสิ่งที่ถูกหลักการและควรทำในอีกภาษาหนึ่งก็เป็นได้ ดังนั้นอย่ายึดติดกับหลักการและข้อบังคับข้อกำหนดต่างๆ ของภาษาหนึ่งๆ มากไปนัก
  11. พยายามมองหาโอกาสใช้มันให้เยอะที่สุดเท่าที่จะทำได้ และอย่าเลี่ยงโอกาสในการใช้มันซะล่ะ

จริงๆ เรื่องนี้ยังเขียนได้อีกยาวมาก แต่ว่าวันนี้พอแค่นี้ก่อน ชักเหนื่อย แต่ขอปิดท้ายด้วย quote ดังจากคนดัง

Anyone could learn Lisp in one day, except that if they already knew Fortran, it would take three days.Marvin Minsky

ชีวิตคนทำงาน

เห็นรูปนี้จาก MSN น้องโตโต้ (protocoltoto ใน blog นี้) มานานล่ะ วันนี้ไม่รู้นึกยังไงก็เลยเอามา share กันบ้าง ไม่รู้ว่า original creator เป็นใคร แต่ว่า creative มากมาย ชอบ


Syntax highlighting

คิดๆ อยากจะเขียน code snippet (ที่ไม่เกี่ยวกับ mac development) ลงในนี้บ้างเหมือนกัน แต่ว่ามันไม่มี highlighting เจ๋งๆ เลย ไอ้ตัวที่ใช้อยู่นานนมกาเลอย่าง code2html ก็ดันไม่ highlight Haskell อีก จะเขียนเพิ่มเข้าไปเองก็ขี้เกียจ (ทั้งๆ ที่จริงๆ ก็ทำได้อ่ะนะ แต่ว่า code มันเขียนแบบ Perl-ish มากกกกก แถมไม่ factored ไม่แยก module เท่าไหร่) … อืมมม มันต้องมีคนคิดเหมือนเราสิ ว่าแล้วก็เริ่มหา

สักพักก็ไปเจอหน้า Plugins/Syntax Highlighting ที่ WordPress เอง แต่ว่าเท่าที่อ่านๆ ดูไม่ค่อยจะมีตัวไหนเข้าท่าเลยแฮะ (มันไม่ highlight Haskell ซักกะตัว เท่าที่อ่านแบบผ่านๆ) นอกจาก Vim Color แต่ว่าไอ้ตัวนี้ก็ดันไป dependent กับ Text::VimColor ที่เป็น Perl module ต้องลงผ่าน CPAN อีก เออ ไม่เป็นไร ลงก็ได้ แต่ว่าก็ดัน build ไม่ผ่านซะงั้น (test ผ่านน้อยไปหน่อย) จะ force install ลงเลย ก็ดันไม่ work อีก เฮ้อ เบื่อจริง ก็เลยต้องหาต่อไป

และแล้วเราก็ไปเจอ GeSHi: Generic Syntax Highlighter ที่เขียนในภาษา PHP เราก็เลยเอามาเขียนทำเป็น command line application ง่ายๆ ที่อ่านไฟล์ตาม argument แล้วก็เดาภาษาจาก extension ของไฟล์ แล้วก็พ่น highlighted code ที่เป็น HTML ออกมาให้เรา code-paste ใส่ blog ได้ผลดังนี้ (Haskell)

import List
 
permute [] = [[]]
permute xs = [x:ys | x <- xs, ys <- permute (delete x xs)]
 

หรือว่าภาษา Ruby แบบนี้

class Array  
  def permute
    return [self] if size < 2
    perm = []
    each {|e| (self - [e]).permute.each {|p| perm << ([e] + p)}}
    perm
  end
end
 
[0,1,2,3].permute.each {|e| p e }

ก็ใช้ได้อ่ะนะ แต่ว่ามันอาจจะรก HTML code ไปหน่อยนึง

[update 1]: พอมี line number แล้วมันเละใน blog แฮะ เลยเอาออก ไว้จะแก้ CSS ทีหลัง ตอนนี้ขี้เกียจ (อีกล่ะ)

[update 2]: เพิ่งจะสังเกตจากหน้า web ว่า \\ ใน code haskell มันหายแฮะ เหลือแค่ตัวเดียว .. ไม่รู้เหมือนกันว่าทำไม code ฝั่งนี้ก็ยังอยู่นะ เลยไม่รู้จะว่าไงดี :-(

[update 3]: สุดท้ายก็เลยลงเอยด้วยการเขียน code ใหม่ไม่ให้มันมี \\ อืมมม อ่านเป็นภาษาคนกว่าเก่าแฮะ แต่ว่ามัน geek-ish น้อยลง :-P

[update 4]: อ๊ากกก GeSHi มันไม่มี Erlang highlighting! ว้า กำลังจะหัดเล่นอยู่เลย ว่าแต่ Erlang นี่ทำไมมันลูกเมียน้อยตอนนี้จังเลย emacs ก็ไม่มี (ผมใช้ Carbon Emacs distribution) TextMate ก็ไม่มี มีแต่ vim … สุดท้ายก็ตายรังสินะ แต่ว่า Emacs mode ของ Erlang ก็ไม่น่าหายากเท่าไหร่ [note — ณ ปัจจุบัน เจอแล้ว] ไม่เป็นไร มีเวลาและชินๆ กับ Erlang มากกว่านี้เมื่อไหร่ (พอจะชินกับ module/keywords) แล้วเดี๋ยวค่อยทำเพิ่มเข้าไปใน GeSHi เองก็ได้วะ

ซื้อ software แท้ vs. crack/เถื่อน

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

  • หลายคน (ความเชื่อสาธารณะ) ยังคงมองซอฟต์แวร์ ว่าเป็นสิ่งที่แถมมากับเครื่องอยู่ พอจะซื้อเครื่องใหม่ ก็มักมีค่านิยมให้ร้าน load โปรแกรมให้เยอะๆ จะใช้ไม่ใช้อีกเรื่องนึง load ไว้ก่อน ซึ่งก็เลยกลายเป็นงูกินหางกับทางร้าน เพราะว่าการ load ซอฟต์แวร์ที่ลูกค้าต้องการให้ได้ กลายเป็น competing feature หนึ่งไปซะงั้น
  • Trialware/Shareware หลายตัวที่มีให้ download ใช้เพื่อทดลองจากเน็ต พอหมดอายุหรือว่าหมด feature เราก็มักจะนิยมทำการ “หา crack” หรือ “หา serial” ที่มันก็ไม่ได้หายากหาเย็นเท่าไหร่ เป็นอันดับแรกๆ ในความพยายามที่จะทำให้เราได้ใช้ซอฟต์แวร์ตัวนั้นๆ ต่อไป
  • ราคา อันนี้เรื่องใหญ่และเป็นปัญหาโลกแตก … จ่ายแพงกว่าทำไม ในเมื่อจ่ายร้อยเดียวได้ (หลายโปรแกรมด้วย) ทำไมต้องจ่ายเป็นพันด้วย? (ไม่ใช่แค่พันหรอก ซอฟต์แวร์บางตัวแพงกว่าเครื่องอีก อย่าง Mathematica เงี้ย ซื้อ laptop ได้สองเครื่องสบายๆ)
  • Availability อันนี้อาจจะเป็นเรื่องใหญ่กว่าด้วย … โปรแกรมหลายตัวอยากใช้ด่วนน่ะ แต่ว่ามันไม่มีขาย ติดต่อตัวแทนจำหน่ายก็เรื่องมาก ท่าเยอะ ต้องมีกระบวนการมากมายวุ่นวาย ทั้งเรื่องการเงิน ฯลฯ เฮ้อ ขับรถไปศูนย์ซอฟต์แวร์แป๊บเดียว ดีกว่ากันเยอะ
  • Support เราหลายคนก็ไม่ได้ต้องการ support อะไรมากมายกับโปรแกรมที่เราซื้อมาซะด้วย เพราะว่าส่วนมากก็ไม่ได้ใช้งานมากอะไรถึงขนาดที่ทำให้ support มัน crucial ขึ้นมา ใช้งานงูๆ ปลาๆ ไม่กี่ feature ไม่กี่อย่าง คลำๆ เอาเอง หรือว่าถ้ามันไม่ work จริงๆ ก็ไปเรียนเอา หรือว่าหาคนสอนแถวๆ ไหนก็ได้เอา

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

แล้วผมเขียนถึงเรื่องนี้ทำไม …​ พอดีวันนี้ iWork 08 หมดอายุ trial 30 วันแล้ว ก็เลยไปซื้อของแท้แบบมีกล่องมาซะหน่อย (จริงๆ ซื้อ license/serial ผ่าน net ก็ได้ แต่ว่าไหนๆ มันก็ราคาพอกัน ได้กล่องด้วยดีกว่า .. พวกบ้าวัตถุก็เงี้ย) …​ แล้วผมทำงั้นไปทำไมล่ะเนี่ย ก็ในเมื่อ iWork มันก็หา serial เถื่อนได้นี่ (จริงๆ ผมก็มี serial เถื่อนอยู่ในมือเรียบร้อยแล้วล่ะ)

ผมยืดถือธรรมเนียมปฏิบัติส่วนตัวอยู่ไม่กี่ข้อในการใช้ซอฟต์แวร์นะ

  1. Freeware/Free Software/Open Source มาก่อนเสมอ ถ้าทำได้ จ่ายแพงกว่าทำไมถ้ามีของฟรี (จริงๆ ไม่ใช่ละเมิดเค้ามา) หลายตัวมันไม่ feature-complete แต่ว่าถ้าเราต้องการใช้มากกว่านั้นและบังเอิญมันมีใน commercial software ก็จ่ายตังค์ซื้อ feature พวกนั้นไปสิ ถ้าเราไม่มีปัญญาจ่ายก็ถือว่าเราไม่ได้ต้องการมันจริง (รักจริงต้องสู้สินสอดได้) และใช้ๆ ไปเถอะ เราจะพบว่าหลายครั้งเราหลอกตัวเองว่าเราต้องการโน่นนี่ จริงๆ ไม่มีไม่ตายหรอก พวก Freeware/FS/OS พวกนี้หลายต่อหลายตัว “เจ๋ง” กว่าที่หลายคนคิดเยอะ
  2. ถ้าจำเป็นจริงๆๆๆๆ ก็ใช้มันไปเถอะ ไอ้ซอฟต์แวร์เถื่อนน่ะ แต่ว่านี่หมายถึงต้องหา Freeware/FS/OS ที่ทำงานแทนได้แบบสุดความสามารถแล้วนะ ห้ามเอามาเป็นข้ออ้างเด็ดขาดด้วย และต้องใช้ในการทำมาหากิน “เท่านั้น” และ
  3. “ถ้า” เราทำเงินจากมัน ไม่ว่าจะโดยตรงหรือโดยอ้อม ได้มากกว่าราคาซอฟต์แวร์ตัวนั้นเมื่อไหร่ เราจะต้องซื้อมันแบบถูกต้อง ไม่มีข้ออ้าง เพราะว่าคุณทำเงินได้มากกว่าราคามันแล้วนี่

ผมก็เลยลองไล่ซอฟต์แวร์ในเครื่องดู พบว่าผมมี Freeware/FS/OS ค่อนข้างหลายตัวที่เป็นชิ้นส่วนสำคัญในการทำงานของผม ส่วนโปรแกรมที่ผมใช้ทำงานจริงๆ ผมก็เสียเงินซื้อเสียเป็นส่วนมาก (เช่น iWork ที่ Pages มันช่วยชีวิตผมในการทำ poster งานวิจัยมาหลายครั้งแล้ว และ Keynote ที่ถ้าไม่มีมัน ชีวิตผมในฐานะวิทยากรรับเชิญตามที่ต่างๆ และอาจารย์ประจำ คงจะกร่อยไปอีกเยอะ แล้วก็มี TextMate อีกตัว และอื่นๆ อีกหลายตัวด้วย) ….​ส่วนที่ยังใช้แบบเถื่อนอยู่ก็มีบ้างแหละครับ แต่ว่านั่นเป็นเพราะผมต้องใช้มันบ้าง (อย่างมากก็เดือนละครั้ง) .. แต่ไม่เคยทำเงินจากมันได้ไม่ว่าจะตรงหรืออ้อม และหาตัวแทนมันไม่ได้จริงๆ (พยายามหาแล้ว หาอีก หาแล้ว หาอีก) .. ก็ถือว่ายังตรงกับธรรมเนียมตัวเองล่ะนะ

ปล. ผมเห็นน้องๆ หลายคนนะ หัดเขียนโปรแกรมจะต้องใช้ Visual Studio Enterprise Architect edition ทั้งๆ ที่จริงๆ แล้ว Express (ซึ่งฟรี) มันก็มี หรือว่าหลายคนหัดทำ 3D ก็ไปใช้ Maya “Unlimited” ทั้งที่จริงๆ แล้ว Personal Learning Edition มันก็มี ..​ ฯลฯ

ว่าแต่คุณล่ะ มีหลักการ/ธรรมเนียมปฏิบัติยังไงในการใช้ซอฟต์แวร์?

[update 1]: ขอขยายความข้อ 2 นิดหน่อย คือบางคนชอบเอาข้ออ้างที่ว่า “ต้องการศึกษาเพื่อนำไปใช้งาน” โดยมากมักจะเกิดขึ้นกับซอฟต์แวร์ที่เป็นระดับ professional เช่นฐานข้อมูล Oracle ชุดพัฒนาซอฟต์แวร์ VS.NET Enterprise Architect โปรแกรมแต่งภาพ Photoshop CS3 โปรแกรม 3D Modeling/Animation เช่น Maya Unlimited บางทีก็เข้าใจและเห็นด้วยนะ ที่ว่าบางทีเราก็ต้องการเรียนรู้โปรแกรมพวกนี้เพื่อนำไปทำงานจริงในอนาคต ซึ่งโปรแกรมพวกนี้จริงๆ แล้วหลายตัวก็จะมี scaled-down version ให้ใช้ฟรีหรือราคาถูก และไม่ยอมให้นำไปใช้เพื่อทำการค้าได้ ให้ใช้อยู่แล้ว ถ้าจำเป็นต้องใช้โปรแกรมพวกนี้จริงก็ค่อยซื้อ version ที่เหมาะสมเอาทีหลัง หรือว่าถ้ามันไม่มี version อย่างที่ว่าจริงๆ (แต่ว่าบางทีก็มี trial-ware version) ก็ใช้เถื่อนใช้ crack ไปก่อน จนกระทั่งเราทำเงินกับมันได้ ซึ่งเร็วหน่อยก็ดี และซื้อใช้ซะ