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

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

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

หลังจากได้เห็นบล็อกในยุคแรกๆ ผมพยายามทำเว็บไซต์เพื่อเป็นระบบบล็อกให้แก่คนไทย เว็บไซต์เหล่านั้นได้แก่ ThaiSpot.com ซึ่งเริ่มต้นตั้งแต่ปี พ.ศ. 2542 และ NeoThailand.com ซึ่งเริ่มต้นตั้งแต่ปี พ.ศ. 2543 ในขณะที่ผมยังศึกษาที่ประเทศสหรัฐอเมริกา แต่ก็ต้องปิดตัวไปในต้นปี พ.ศ. 2544 เพื่อให้ตัวเองได้ใช้เวลาในการศึกษาให้เต็มที่ การทำเว็บไซต์ดังกล่าวเป็นการพยายามที่ผิดที่ผิดเวลาของผมซึ่งให้ประสบการณ์แก่ผมมากในการบริหารจัดการชุมชนออนไลน์ในภายหลัง

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

เมื่อผมจบการศึกษาและกลับมาประเทศไทย ผมก็ได้เบี่ยงเบนความสนใจจากการทำซอฟท์แวร์หรือเว็บไซต์เพื่อคนไทยไปเป็นทำซอฟท์แวร์สำหรับผู้ใช้นานาชาติ และไม่คิดจะเก็บ domain names ที่ดีอย่างเช่น ThaiSpot.com และ NeoThailand.com ไว้ ซึ่งเรื่องนี้เป็นเรื่องที่น่าเสียดายอย่างยิ่ง

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

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

เมื่อเริ่มต้นที่จะวางแผนพัฒนา GotoKnow.org นั้น สคส. ได้ให้โจทย์แก่ทีมพัฒนาว่าให้ทำอย่างไรก็ได้ ให้ได้เป็นระบบที่ใช้งานได้โดยเร็วที่สุด ในขณะที่ ดร.จันทวรรณ และผมนั้นอยากพัฒนา “ระบบที่ไม่ใช่บล็อก แต่เป็นมากกว่าบล็อก เพราะเป็นระบบเพื่อการจัดการความรู้” ซึ่งต้องใช้เวลาในการพัฒนาไม่น้อย ในที่สุดเลยตกลงกันว่าเราจะใช้ระบบบล็อกที่เปิดเผยรหัสต้นฉบับ (Source Code) และอนุญาตให้ใช้ได้ โดยมีข้อแม้ว่าหากเราดัดแปลงระบบนั้นๆ เราต้องเปิดเผยรหัสต้นฉบับด้วย เป็นซอฟท์แวร์แบบที่เราเรียกกันว่า open source นั่นเอง

หลังจาก ดร.จันทวรรณ และผมกลับมาจากการประชุมกับ สคส. แล้ว เราพบว่าระบบบล็อกที่มีอยู่ในปัจจุบันไม่มีระบบไหนเลยที่ “ตรงใจ” กับสิ่งที่เราอยากได้ เราเลยตัดสินใจสร้างระบบใหม่ขึ้นมาโดยจะพยายามใช้เวลาในการพัฒนาให้น้อยที่สุดเท่าที่เป็นไปได้เพื่อให้ สคส. ได้มีระบบใช้โดยเร็วที่สุด ระบบที่เราพัฒนาขึ้นใหม่นั้นเราให้ชื่อว่า MemeExpress เพราะเป็นระบบที่จะช่วยให้ผู้ใช้สามารถ “express” หรือแสดงออกซึ่ง “meme” หรือหน่วยความคิดของผู้ใช้ได้อย่างรวดเร็ว

ในการพัฒนาที่มีเงื่อนไขว่าต้องทำให้เร็วที่สุดนั้น ผมกลับตัดสินใจทำสิ่งที่ไม่สอดคล้องกับเงื่อนไขอยู่อย่างหนึ่งที่มีส่วนส่งผลถึงขั้นให้เราต้องทิ้งระบบเดิม (MemeExpress) ไปทั้งหมด และต้องพัฒนาระบบใหม่ (KnowledgeVolution) ขึ้นมาทดแทน การตัดสินใจนั้นคือการตัดสินใจพัฒนา Web Development Framework ขึ้นมาเองโดยใช้ภาษา Python เพื่อพัฒนา Web Application ที่ชื่อว่า MemeExpress ดังกล่าวบน Web Development Framework นั้น

จุดประสงค์ที่พัฒนา Web Development Framework ขึ้นเองก็เพื่อจะให้ได้ซอฟท์แวร์สองตัวในการพัฒนาครั้งเดียว ซอฟท์แวร์ตัวแรกคือ MemeExpress ที่ใช้งานกับ GotoKnow.org ส่วนซอฟท์แวร์ตัวที่สองคือ Web Development Framework ที่ไม่ได้ตั้งชื่อนั้น ซึ่งจะสามารถนำไปใช้เพื่อพัฒนา Web Application อื่นๆ ได้อีกภายหลัง

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

การตัดสินใจดังกล่าวเป็นบทเรียนให้ผมทราบว่าการพัฒนา Development Framework ใดๆ นั้น ต้องกระทำเมื่อ “ว่าง” หรือมีเวลา “เปิด” ไม่จำกัดมากนัก เพียงพอที่จะได้คิดไตร่ตรองอย่างรอบคอบและครอบคลุมในทุกประเด็น การใช้ Development Framework ที่ไม่ได้พัฒนาอย่างถี่ถ้วนรอบคอบในการพัฒนา Application นั้น จะเหมือนเป็นการสร้างข้อจำกัดให้กับตัวเอง ทำให้ไม่สามารถทำงานได้อย่างสะดวกรวดเร็วอย่างที่ควรจะเป็น

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

ประสบการณ์ของการพัฒนา Web Development Framework เองแล้วได้ระบบที่ไม่พร้อมและไม่ทันต่อความต้องการใช้นั้น ทำให้ผมตัดสินใจเลือกใช้ Web Development Framework ชื่อ Ruby on Rails ในการพัฒนาซอฟท์แวร์ KnowledgeVolution เพื่อใช้งานกับ GotoKnow.org รุ่นที่สองที่ใช้งานในปัจจุบัน โดย Ruby on Rails เขียนด้วยภาษา Ruby เป็น Web Development Framework แบบ open source ที่แม้จะมีพัฒนาการมาไม่นานนัก แต่ก็ใช้งานอย่างแพร่หลายไปทั่วโลก

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

อย่างไรก็ตาม เมื่อเรานำ KnowledgeVolution ไปใช้กับ GotoKnow.org เราพบว่าเรากำลังถูกทดลองกับศักยภาพของ Ruby on Rails เสียแล้ว เพราะ Ruby เป็นภาษาที่ได้ชื่อว่าทำงานช้า แม้จะเป็นภาษาที่ออกแบบได้ดีก็ตาม นอกจากนี้ Ruby on Rails ยังเป็น Web Development Framework ที่มีความซับซ้อนสูง ด้วยเหตุนี้ KnowledgeVolution จึงทำงานได้ช้ากว่า MemeExpress ที่เราเขียนเองทั้งหมดด้วยภาษา Python มาก

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

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

การพัฒนา KnowledgeVolution นี้ เราหวังไว้ไกลมากกว่าการเป็นระบบที่ใช้สำหรับ GotoKnow.org อย่างเดียว เราเปิด open source ตัวซอฟท์แวร์ KnowledgeVolution โดยหวังให้ KnowledgeVolution เป็นระบบที่องค์กรต่างๆ ที่ต้องการจัดการความรู้สามารถนำไปใช้อย่างง่ายดาย นอกจากจะช่วยให้องค์กรเพิ่มศักยภาพในการทำงานด้วยการจัดการความรู้แล้ว ยังช่วยลดค่าใช้จ่ายด้านซอฟท์แวร์ที่ประเทศไทยต้องจ่ายหากต้องซื้อซอฟท์แวร์เพื่อช่วยจัดการความรู้จากต่างชาติอีกด้วย

นอกจากนี้ เราหวังจะสร้างบทเรียนแห่งความสำเร็จ (Best Practice) ในการพัฒนาซอฟท์แวร์เพื่อใช้งานในหน่วยงานภาครัฐและหน่วยงานอิสระที่ไม่หวังผลกำไรภายในประเทศไทย โดยใช้การพัฒนาแบบ open source เพื่อลดความซ้ำซ้อนในการพัฒนาซอฟท์แวร์ เป็นการใช้กำลังคนที่ประเทศเรามีอย่างจำกัดให้เกิดประโยชน์สูงสุด

อย่างไรก็ตามวัตถุประสงค์เหล่านี้ยังต้องใช้เวลาในการพิสูจน์ว่าเราสามารถทำให้เป็นจริงได้หรือไม่ เราคงได้ทราบผลสำเร็จนั้นในวันครบรอบ GotoKnow.org ปีที่สองครับ