เคยทิ้งของไหมครับ?
คำถามนี้ทุกคนจะตอบว่าเคยทั้งนั้น ไม่มีใครไม่เคยทิ้งอะไรสักอย่างในชีวิต อย่างน้อยเราก็ทิ้งขยะทุกวันครับ
แล้วเคยทิ้งของที่ใช้ความพยายามในการสร้างขึ้นมาไหมครับ?
หลายคนอาจตอบว่าเคย หลายคนอาจตอบว่าไม่เคย
สำหรับผมแล้ว ผม "ทิ้ง" เป็นเรื่องปกติในชีวิต และบันทึกนี้ผมจะมาเล่าศิลปะในการทิ้งครับ
เวลาเราจินตนาการภาพศิลปินในสาขาต่างๆ ไม่ว่าจะเป็นวิจิตรศิลป์หรือวรรณศิลป์ เราส่วนใหญ่มักจะนึกภาพศิลปินคนนั้นทำงานอยู่ท่ามกลางข้าวของรกรุงรังซึ่งส่วนใหญ่เป็นขยะทั้งสิ้น
เมื่อนึกภาพนักวาดรูป เราจะเห็นเขาอยู่ท่ามกลางกระดาษสเก็ตที่ขยำอยู่รอบตัว หรือภาพในเฟรมที่ไม่ได้วาดต่อแล้ว ยิ่งศิลปินสีน้ำเราจะยิ่งเห็นงานที่ทำต่อไม่ได้มากกว่าศิลปินประเภทอื่น เพราะสีน้ำต้องอาศัยความ "สด" ในการวาดมากกว่าสีอย่างอื่น
เมื่อนึกภาพนักเขียนสักคน (ที่เขียนก่อนยุคที่จะมีเครื่องคอมพิวเตอร์ใช้ในปัจจุบัน) เราจะเห็นภาพนักเขียนท่านนั้นอยู่ท่ามกลางกองกระดาษที่ขยำทิ้งเต็มตัวไปหมด เขาว่านักเขียนเป็นอาชีพที่ใช้กระดาษเปลืองที่สุด
ศิลปินทุกแขนงเป็นเช่นนี้ครับ การสร้างงานศิลปะนั้น สร้างขึ้นมาบนกองสิ่งที่ทำต่อไม่ได้หรือตัวต้นแบบ (prototypes) โดยกว่าจะได้งานแต่ละชิ้นที่งดงามที่ให้คนอื่นเสพได้นั้น มีชิ้นที่ทำแล้วทิ้งมากมายจนกว่าจะได้พบเจอสิ่งที่ "ลงตัว" ที่สุด
ความ "งาม" แห่งงานศิลป์คือความ "ลงตัว" ครับ มากเกินไปก็ไม่งาม น้อยเกินไปก็ไม่งาม แต่กว่าจะเจอจุด "ลงตัว" ได้นั้น ต้องผ่านการทดลองมากมายครับ
และคำว่า "ลงตัว" ของศิลปะแต่ละแขนงนั้นก็จะแตกต่างกัน การจะเสพความงามได้นั้นจึงต้องอาศัยการซึมซับตลอดชีวิตครับ
เรื่องเหล่านี้คนที่ทำงานศิลปะจะต้องเรียนรู้ด้วยใจครับ และเป็น requirement แรกสุดของการฝึกฝนที่จะทำงานศิลปะ
จากงานศิลปะ คราวนี้เรามามองงานวิศวกรรมกันบ้าง
ใครนึกภาพวิศวกรยืนอยู่ท่ามกลางซากตึกปรักหักพังบ้างยกมือขึ้น
นึกไม่ออกใช่ไหมครับ แต่ผมนึกออก เป็นวิศวกรที่กำลังจะเข้าคุก เพราะสร้างตึกแล้วพังครับ
ในเจตคติ (mind set) แบบวิศวกรนั้น สร้างแล้วแก้ สร้างแล้วทิ้ง สร้างแล้วต้องสร้างใหม่ ถือว่าเป็นความผิดพลาดอย่างมหันต์
เจตคติแบบศิลปินและวิศวกรนั้น ต่างกันอย่างกับฟ้ากับดินครับ หากวิศวกรใช้เจตคติแบบศิลปินในการทำงานนั้น แย่แน่ๆ และหากศิลปินใช้เจตคติแบบวิศวกรในการทำงาน ก็ย่อมไม่ได้สร้างงานที่งามแท้จริงขึ้นได้
เรื่องเหล่านี้ไม่มีปัญหาครับ เพราะโลกของวิศวกรและศิลปินนั้นเป็นคนละโลกอยู่แล้ว
แต่ประเด็นของเจตคติที่ต่างกันนั้นมากลายเป็นปัญหาเมื่อมาเจอกันที่สาขาวิชาที่เรียกว่า "วิศวกรรมซอฟต์แวร์" (Software Engineering)
ผมเองมองการสร้างซอฟต์แวร์เป็นงานศิลปะ ชีวิตผมเริ่มต้นการเรียนรู้มาจากครูดนตรีและครูศิลปะ ผมไม่ได้เก่งมากมายอะไรนัก แต่ผมเป็นมือวางในการไปล่ารางวัลของโรงเรียนบ้านนอกในจังหวัดเล็กเมื่อหลายสิบปีก่อน จึงได้รับโอกาสในการฝึกฝน และบังเอิญช่วงนั้นเกิดมีศิลปินมาซ่อนตัวหนีความวุ่นวายทางโลกอยู่ในจังหวัดเล็กๆ นั้นพอดี ทำให้ผมได้ซึมซับเจตคติของศิลปินมาไม่น้อย
เมื่อผมมาเรียนรู้การสร้างซอฟต์แวร์ ผมก็มาเรียนรู้นอกระบบในประเทศไทยอีก เมื่อผมไปเรียนรู้ในระบบที่ต่างประเทศ สิ่งที่เรียกว่า "นอกระบบ" นั้นคือสิ่งที่ได้รับการส่งเสริม
ผมจึงสร้างซอฟต์แวร์อย่างการสร้างงานศิลปะมาตลอดชีวิต ผมไม่เคยพยายามเรียกตัวเองว่า "วิศวกรซอฟต์แวร์" ถ้าไม่จำเป็น
ผมชื่นชมแนวความคิดแบบ Agile Software Engineering เพราะเห็นว่าเป็นแนวคิดที่เริ่มเข้าถึง "ศิลปะ" ของการพัฒนาซอฟต์แวร์แล้ว และผมชื่นชอบ User-Centered Software Development เพราะเป็นแนวคิดที่เริ่มกำหนดให้เห็นถึงความ "งาม" ของงานศิลปะแขนงนี้แล้ว
การเขียนซอฟต์แวร์คือการเขียนกลอน nothing more, nothing less
ความงามของซอฟต์แวร์เบ่งบานที่ผู้ใช้ nothing more, nothing less
เมื่อผมใช้เจตคติในการสร้างงานศิลปะมาสร้างซอฟต์แวร์ ผมจึงสามารถทิ้งสิ่งที่ผมเขียนได้อย่างไม่อาลัย หากสิ่งที่ผมทำนั้นไม่งาม
ผมทิ้งโปรแกรมที่เขียนมาหลายหมื่นบรรทัดเพื่อเริ่มต้นใหม่อย่างเป็นเรื่องปกติ เหมือนนักเขียนสักคนขยำเรื่องสั้นที่เขาเขียนทิ้งหลังจากอ่านทวนหลายต่อหลายครั้งแล้วพบว่า "มันไม่ใช่"
ผมไม่ได้บอกว่าผมคิดถูกหรือคิดผิด แต่นี่คือหนทางที่ผมเรียนรู้ และยังเรียนรู้ต่อไปครับ
สำหรับนักพัฒนาซอฟต์แวร์แล้ว เมื่อใช้เจตคติอย่างศิลปินในการสร้างซอฟต์แวร์นั้น ต้องพร้อมที่จะทิ้งซอฟต์แวร์ที่ตนเองทำได้ทุกเมื่อ
แต่จะทิ้งตอนไหนล่ะ
จะทิ้งตอนไหนนี่ละครับคือ "ศิลปะแห่งการทิ้ง"
ศิลปะแห่งการทิ้งคือ ต้องทิ้งให้เร็วที่สุด ทันทีที่พบว่าต้องทิ้งแล้ว
ทิ้งเหมือนศิลปินทิ้งครับ คือ 80% ทิ้ง 20% ใช้ได้จริง
เมื่อจะทิ้งเยอะขนาดนี้ ก็ต้องทิ้งได้เร็ว
เหมือนการเดินหลงทางครับ ไม่แปลกที่จะเดินหลงทาง หากทางที่เดินมีความซับซ้อน (complexity) สูง แต่อย่าหลงทางไกล เพราะเราจะเสียดายหนทางที่เราอุตส่าห์เดินมา แม้เราจะรู้ว่าไม่สามารถไปถึงจุดหมายที่เราต้องการได้ก็ตาม
ดังนั้นนักพัฒนาซอฟต์แวร์ต้อง "รู้ตัว" อยู่ตลอดเวลา (อาจใช้คำว่า "สติ") ในการเขียนโปรแกรม
โปรแกรมเมอร์ไม่ใช่มีหน้าที่ทำงาน routines ตาม descriptions ที่ส่งมาจากนักวิเคราะห์ระบบโดยไม่มีคำถาม แต่ต้องคิดอย่างเป็นส่วนหนึ่งของระบบในการพัฒนาตลอดเวลาครับ
นักวิเคราะห์ก็เช่นกัน ต้องพร้อมทิ้งงานที่ตัวเองคิดได้อย่างเร็วที่สุดเมื่อพบว่า "It's a no-go!"
ผมจึงเห็นว่าแนวความคิดแบบ Iterative Software Development นั้นดีและเป็นธรรมชาติเหมาะกับงานพัฒนาซอฟต์แวร์มาก
แนวคิดการพัฒนาแบบ Prototype-Based Software Development ก็เป็นสิ่งที่ควรทำ การเริ่มต้นตั้งแต่ Low Fidelity Prototype แล้วค้นหา "ความงาม" ไปถึง High Fidelity Prototype จนกว่าจะได้ที่จึงส่งให้โปรแกรมเมอร์ทำจริงนั้นเป็นสิ่งที่ดี
แนวความคิดเหล่านี้เป็นสิ่งใหม่ในวงการพัฒนาซอฟต์แวร์ที่ยังปกคลุมด้วยเจตคติแบบวิศวกรอยู่มากในปัจจุบันนี้ ผมคิดว่าเราจะเข้าไม่ถึงแนวความคิดเหล่านี้ถ้าเราไม่ได้พยายามเข้าถึง "ใจ" ของแนวคิดเหล่านี้ครับ
ผมยืนยันอีกครั้ง "งานพัฒนาซอฟต์แวร์นั้นเป็นงานศิลปะ ต้องจับด้วยใจศิลปะ" ครับ
แล้วงานของอาจารย์ไปจด ความเป็นเจ้าของลิขสิทธิ์ไว้หรือเปล่าคะ
ในด้านสิทธิบัตรยาให้.การคุ้มครองลิขสิทธิ์ยาวนานถึง 50 ปี และการคุ้มครองสิทธิบัตรยาวนานถึง 20 ปี ทำให้ราคายาแพง
ไม่ทราบว่า เรื่องซอฟแวร์นี้เป็นอย่างไร ไม่ทราบเหมือนกันค่ะ
ทราบแต่ว่า นายบิล เกตส์เป็น เจ้าของลิขสิทธิ์และสิทธิบัตรรายใหญ่ที่สุดของโลก แต่ตอนนี้ ความรวยตกลงมาเป็นอันดับ 3 แล้วค่ะ
เรียนท่าน อาจารย์ ดร.ธวัชชัย ศิลป การทิ้ง เคล็ดวิชา คงต้อง "ทำใจ" ด้วยครับ
เป็นคำถามที่ให้ข้อคิดดีมากค่ะ
ดร. ธวัชชัย ปิยะวัฒน์
มีจิตรกรคนหนึ่งเคยเล่าให้ฟัง (ไม่ยืนยันว่าเรื่องจริงหรือไม่) เค้าว่า...
ปิกัสโซ มักจะมาวาดภาพอยู่ที่สะพานแห่งหนึ่ง วาดๆ ไป เมื่อรู้สึกว่าไม่ได้ดังใจจึงขว้างทิ้งลงแม่น้ำ แล้วก็วาดใหม่ เป็นอย่างนี้อยู่เสมอ... หลังจากปิกัสโซจากไปแล้ว และมีชื่อเสียงเป็นจิตรกรเอกคนหนึ่งของโลก มีผู้ทราบเรื่องนี้ก็ลงไปงมภาพที่ปิกัสโซขว้างทิ้ง นำมาทำความสะอาดแล้วนำไปขาย ก็ยังได้ราคาสูง....
อาตมามีความเห็นว่า บางสิ่งที่อาจารย์ทิ้งไป ก็อาจมีคุณค่าสูง แต่อาจารย์เต็มใจทีจะ่ทิ้งไปเพื่อสร้างสิ่งใหม่ให้มีความสมบูรณ์ยิ่งกว่าเดิม... ทำนองเดียวกับปิกัสโซขว้างภาพทิ้งลงแม่น้ำหลายครั้งในชีวิต.... ประมาณนั้น
เจริญพร
การเขียนซอฟต์แวร์ในความคิดผม ใช้ทั้งศาสตร์และศิลป์ บางครั้งก็ใช้มนต์ดำด้วย
โค้ดสวยงามแต่ประสิทธิภาพไม่ดีก็ไม่พอใจ
ประสิทธิภาพดีแต่โค้ดไม่สวยงามก็ไม่พอใจ
บางงานก็ต้องพบกันครึ่งทาง บางงานก็ต้องเอนเอียงไปข้างใดข้างหนึ่ง
มนต์ดำจะเอาไว้ใช้กันตอนพรีเซนท์ครับ (โอม.. มหาอุจ เนตเวิร์คอย่าหลุด บั๊กที่นึกไม่ถึงอย่าได้ออกมา) ^_^;
ผมเองก็ทิ้งเหมือนกันครับ ไม่พอใจก็เขียนใหม่ แต่ทิ้งไว้ใน Harddisk เพราะบางครั้งก็สามารถเอาบางส่วนของงานที่ทิ้ง มาใช้ในงานใหม่ได้
ชอบมากๆครับ จะลองนำไปใช้ดูบ้าง
ขอบคุณครับ