ในปี พ.ศ. 2532 ผมจบการศึกษาจากชั้นมัธยมศึกษาปีที่ 3 ครับ แล้วก็มีความแน่วแน่อย่างมากที่อยากจะเรียนทางด้าน computer เพราะได้แรงบันดาลใจจากการ์ตูนเรื่อง “เมียม” ซึ่งเป็นการ์ตูนญี่ปุ่นที่เล่าถึงการเขียน software computer คิดว่าคนสมัยนี้คงไม่มีโอกาสได้ดูแล้วล่ะน่าเสียดาย ตอนนั้นฉายที่ช่องเจ็ดสีทีวีเพื่อคุณ 🙂 สนุกมาก ๆ
แต่มาทราบในตอนนั้นครับ ว่าการจะเรียนทางด้าน computer ต้องเรียนในระดับปริญญาตรีนู่นแน่ะ โดยตอนนั้นฝังจำมาจากอาจารย์แนะแนวว่า ต้องไปเรียนในคณะวิทยาศาสตร์ สาขาวิทยาการคอมพิวเตอร์ ถึงจะได้เรียน computer สมใจ¿ โดยที่ผมไม่เคยได้รู้เลยว่าจริง ๆ แล้วเราก็สามารถเรียนในคณะวิศวกรรมศาสตร์ สาขาวิศวกรรมคอมพิวเตอร์ได้เหมือนกัน
ผมก็เลยจบวิทยฯคอมฯ แทนที่จะจบวิศวฯคอมฯ เพราะความงงในเส้นทางของตัวเอง อ่ะนะช่างมัน ไงก็จบมาแล้ว
สิ่งที่จะเล่าก็คือว่า ผมไม่เคยได้รู้เลยว่าสาขาที่ผมจบมานั้น มันมีผลอะไรกับโลกทุนนิยม, ยุคอุตสาหกรรม, เศรษฐกิจเสรีนิยมใหม่ ที่ปัจจุบันเป็นอยู่ในขณะนี้ จนกระทั่งปี พ.ศ. 2536 ผมได้อ่านหนังสือชื่อ¿The Third Wave ซึ่งแต่งโดย Alvin Toffler และในปี พ.ศ. 2538 ก็ได้อ่านหนังสือชื่อ¿War and Anti-War: Making Sense of Today’s Global Chaos ซึ่งแต่งโดยคนเดียวกัน¿ จึงทำให้เข้าใจโลกมากขึ้น
จุดที่เป็นประเด็นของหนังสือที่จะหยิบยกขึ้นมาบอกก็คือ ในตอนนั้นได้มีการกำหนดถึงอนาคตแล้วครับว่า อุตสาหกรรมใดบ้าง ที่จะเป็นสิ่งสร้างสรรค์สังคมยุคใหม่ซึ่งก็คือยุคที่พวกเรากำลังใช้ชีวิตอยู่ในปัจจุบันนี้
โดยอุตสาหกรรมดังกล่าวประกอบไปด้วย อุตสาหกรรม electronic และ computer, อุตสาหกรรมอวกาศ, อุตสาหกรรมสมุทรศาสตร์, อุตสาหกรรม¿genetically modified organism¿และอุตสาหกรรม nano technology
ทั้ง 5 อุตสาหกรรมที่กล่าวมาเป็นสิ่งกำหนดความก้าวหน้าของโลกปัจจุบันและอนาคต ซึ่งการพัฒนา software ในอุตสาหกรรม software ก็ถือเป็น sub-set หนึ่งของอุตสาหกรรม electronic และ computer เช่นเดียวกัน
ปัจจุบันประเทศไทยเรายังไม่ให้ความสำคัญกับอุตสาหกรรม software ในประเทศมากนัก เพราะยังไม่เข้าใจและสำคัญผิด ไม่รู้ว่าอุตสาหกรรม software ถือเป็น sub-set ของความก้าวหน้าอันยิ่งใหญ่ 1 ใน 5 อุตสาหกรรมของโลก
นักพัฒนา software ในเมืองไทยเองก็ยังหลงเข้าใจประเด็นผิด คิดว่างานพัฒนา software เป็นงานน่าเบื่อ งานถึก ๆ ไม่ได้ใช้สติปัญญาอะไร ซึ่งเป็นความคิดที่ไม่ถูกนัก เพราะการพัฒนา software ไม่ได้มีความหมายเพียงแค่การเขียน program computer ด้วย Integration Development Environment ที่วางขายอยู่ในท้องตลาดแต่เพียงอย่างเดียว แต่การพัฒนา software ยังหมายถึงการที่เราจะสามารถสร้างสรรค์ algorithm หรือ tools หรือ solutions ใหม่ ๆ ออกมาได้ด้วย
ซึ่งสิ่งเหล่านี้ล้วนใช้กึ๋นของผู้ร่ำเรียนมาทางคอมพิวเตอร์ทั้งสิ้น!!! บางครั้งนักพัฒนา software ก็ต้องทำความเข้าใจอย่างนึงว่า อาจจะมีผู้อื่นที่ไม่ได้ร่ำเรียนมาทางสาขาคอมพิวเตอร์โดยตรง แต่กลับพัฒนา software ได้มีความใกล้เคียงกับเรา เพราะปัจจุบัน Integration Development Environment มันง่าย มันมีเอกสารมากมาย มันมีคู่มือมากมายที่เราจะหาได้จาก Internet จึงทำให้เปิดโอกาสให้กับคนที่ไม่ได้เรียนมาทางด้าน computer สามารถจะเขียน program ได้
ผมยกตัวอย่างจากประสบการณ์ที่ผมเคยเจอ ซึ่งน่าสนใจมาก ๆ เมื่อปี พ.ศ. 2537 ตอนนั้นผมได้มีโอกาสทำงานในบริษัทเอกชนแห่งหนึ่ง ที่นั่น ผมได้พบผู้ร่วมงานสองคน คนนึงจบวิทยาการคอมพิวเตอร์ อีกคนจบศึกษาศาสตร์
ทั้งสองคนถือว่าเป็นรุ่นพี่ในที่ทำงานผม เพราะอายุมากกว่า นอกจากนี้ทั้งสองยังทำงานเป็น Programmer ด้วยกันทั้งคู่ ตอนนั้นผมเอ๋อไปเลยว่า ไรวะจบศึกษาศาสตร์ก็เป็น Programmer ได้ด้วย แล้วพี่เค้าก็เป็นได้จริง ๆ พี่ที่จบศึกษาศาสตร์สามารถเขียน Program เพื่อควบคุม Printer ให้พิมพ์เอกสารในแบบ Form ที่กำหนดได้
แบบว่าไม่ได้พิมพ์ธรรมดานะครับ มีการควบคุม Printer ให้พิมพ์ตัวเล็ก, ตัวใหญ่, ตัวเอียง แถมแต่ล่ะบรรทัดพี่เค้ายังสั่งได้ด้วยว่า column ไหนจะให้พิมพ์ตัวอักษรขนาดเท่าไหร่ โห ๆ เก่งชิบเป๋งเลยรู้จักใช้ Escape Code ด้วย
สำหรับคนที่เข้าวงการไม่ทันนะครับ ขอแจ้งว่าสมัยนั้นการจะสั่งพิมพ์ออก Printer เนี่ย ไม่ได้เป็น Graphic Mode แล้วควบคุมโดย Printer Manager บน Microsoft Windows แบบทุกวันนี้นะครับ แบบว่า Printer สมัยนั้นเราต้องสั่งพิมพ์แบบ Text Mode ครับ แล้ว Program ที่เขียนก็เขียนบน Foxpro แถม run บน MS-DOS 5.0 อีกต่างหาก
เรียกว่าจะสั่งเขียน Program ให้สั่งพิมพ์ออก Printer นี่ต้องเอาคู่มือ Printer มาเปิดเลยนะครับว่าเราต้องส่ง Escape Code อะไรไปบอกมันบ้าง เพื่อให้มันพิมพ์ตัวเล็ก, ตัวใหญ่, ตัวเอียง, ตัวขีดเส้น ได้อย่างที่เราต้องการ
ผมว่าเด็กสมัยนี้โชคดีนะไม่ต้องรับรู้อะไรเลย แค่ Plug & Play เจ้า Driver Printer แล้วพิมพ์ใส่ Microsoft Word ทำตัวอักษรให้เป็นอย่างที่ต้องการ แล้วพิมพ์ผัวะออกมาก็ได้ผลลัพท์แล้ว จริง ๆ มันง่ายก็เพราะ Operating System มันยึดกุมกลไกพวกนี้ไปแล้ว คนทำ Software ก็เลยไม่ต้องมาพะวงมาจัดการเรื่องจุกจิกแบบนี้ ก็ดีอย่างเสียอย่างไป
วกกลับมาเรื่องพี่ศึกษาศาสตร์ต่อครับ คือจะบอกว่าพี่จบวิทยฯคอมฯเขาก็ทำได้อย่างพี่จบศึกษาศาสตร์นั่นแหล่ะ เรียกว่าทัดเทียมกัน แต่จุดที่ทำให้เกิดการชี้ขาดว่าการพัฒนา Software นั้นยังไง๊ยังไงก็ต้องใช้คนที่จบมาทาง computer เท่านั้นถึงจะทำได้ก็เกิดขึ้นจนได้
ตอนนั้นทางเจ้านายให้งานมาชิ้นนึงครับ เป็นการพัฒนา software เพื่อบันทึก, แสดงผล, ค้นหา และพิมพ์กรมธรรม์ประกัน฿ัยทางทะเล โดยมีเงื่อนไขในการคุ้มครองบ้าบอคอแตกที่ละเอียดยิบย่อยไปหมด ซึ่งเงื่อนไขดังกล่าวเราไม่สามารถบรรจุมันใน Code ของ Program ได้ครับ แต่เราต้องออกแบบ Table ใน Database เพื่อใช้สำหรับบันทึกเงื่อนไขต่าง ๆ เอาไว้ แล้วให้ program ของเรามาอ่านเงื่อนไขที่ว่าจาก Table แทนที่จะทำใน Code ของ Program
ซึ่ง Table ดังกล่าวเราจะเรียกว่า Scheme ครับ เราต้องออกแบบมันเพื่อให้มันบรรจุนิพจน์ทางคณิตศาสตร์และตรรกศาสตร์ เพื่อความยืดหยุ่นถึงขีดสุดของ Software ที่เราสร้างขึ้น
ดังนั้น แทนที่เราจะฝัง code ใน program ให้มัน if โน่น then นี่ else นั้น ก็เปลี่ยนเป็นให้มันมาค้นใน table แล้วเปรียบเทียบตรรกะแล้วคืนผลลัพท์กลับมาแทน
พอได้งานมาแบบนี้ พี่ที่จบศึกษาศาสตร์ก็เลยออกแบบอะไรไม่ได้เลยครับ ต้องปล่อยให้พี่ที่จบวิทย์คอมเป็นคนออกแบบ Data Dictionary, ออกแบบโครงสร้างของ program, แล้วก็ออกแบบการส่งผ่านผลลัพท์ จากนั้นจึงบอกอธิบายวิธีการทำงานให้พี่ที่จบศึกษาศาสตร์เข้าใจ แล้วก็แบ่งงานกัน code program โดยที่พี่ที่จบศึกษาศาสตร์ก็ได้แต่ทำตาม แต่ก็ไม่เข้าใจว่าทำไมต้องออกแบบมาแบบนี้ เพียงแต่เห็นว่าเขียนออกมาแล้วได้ผลลัพท์อย่างที่เจ้านายต้องการก็โอเค
ซึ่งจากการวิเคราะห์ของผมก็พบว่าการที่พี่ที่จบศึกษาศาสตร์ไม่สามารถทำอะไรหลาย ๆ อย่างข้างต้นที่กล่าวมาได้ เนื่องจากไม่ได้เรียนจบมาทางสาขาคอมพิวเตอร์นั่นเอง จึงทำให้ไม่ได้มีโอกาสเรียนวิชา Algorithm, วิชา Discrete Mathematic, วิชา Software Design & Development, วิชา System Analyst & Design และวิชา Database Management System ซึ่งเป็นบุพวิชาตั้งหลายอย่าง ที่สามารถนำมาประยุกต์ใช้และประสานกันเป็นหนึ่งเดียว เพื่อสร้างผลงานที่ได้รับมอบหมายให้สำเร็จลุล่วง
หวังว่าคงจะเข้าใจกันนะครับว่า ศาสตร์ทางการพัฒนา Software นั้น มันไม่ได้หมายความว่าจะซื้อหนังสือ How-To ซักเล่มนึงมานั่งอ่าน นั่งทดลองปฏิบัติตาม แล้วจะทำได้นะครับ เพราะมันยังต้องใช้บุพวิชาอีกตั้งหลายสิบหน่วยกิตมาประกอบกัน ถึงจะได้ผลลัพท์ที่ดีออกมา
อุตสาหกรรม Software ของเมืองไทยจะพัฒนาไปไกลครับ ถ้านักพัฒนา Software ไทย ต่อยอดความสามารถของตัวเอง โดยไม่หยุดอยู่กับที่ครับ
ผม post univeristy rankings ทางด้าน engineering ไปแล้ว แต่จะหางด้าน computer science ดูครับ
ปล. ขอ add blog นะครับตอนนี้ พวก blogger มืออาชีพมีน้อยมาก ก็แค่เท่าที่เห็นๆกัน
ขอลบ comment ที่ blog ด้วยครับ เพราะตอนนี้มี error อยู่ไม่ทราบเพราะอะไร เมื่อก่อนไม่มีคน comment เลยไม่ทราบปัญหา
ผม promote blog นี้กับอีก 2-3 blog ที่ http://bignose.exteen.com ลองดูครับว่า มีคนเข้ามาเยอะหรือเปล่า
ไม่ทราบว่าในความคิดของพี่ พี่คิดว่าความรู้ด้านใดบ้างครับที่เป็นประโยชน์ และเป็นสิ่งสำคัญที่ช่วยในการพัฒนา software ให้เกิดประสิทธิภาพ ครับ
ขอบคุณครับคุณ BigNose ที่ช่วย promote blog ให้ ผมได้มาหลายสิบ UIP เชียวแหล่ะ
ผมก็ว่าแล้วล่ะว่า blog ของคุณ BigNose ต้องใส่ plugins อะไรแน่ ๆ เลย มันถึงยังเม้นท์ไม่ได้ ผมเองก็ไปแจ้งคุณ BigNose ที่ exteen แล้วเหมือนกัน อยากเม้นท์ อยากเม้นท์
ความรู้ด้านคณิตศาสตร์จะเป็นความรู้ที่เป็นประโยชน์สูงสุดสำหรับการพัฒนา software ครับคุณ chato เพราะทุก ๆ ทฤษฎีทาง computer ล้วนประยุกต์มาจากคณิตศาสตร์ และในทางวิทยาศาสตร์ คณิตศาสตร์เป็นศาสตร์อย่างเดียวที่ใช้อธิบายปรากฎการณ์ทางวิทยาศาสตร์ได้ครับ โดยการตีความทุก ๆ อย่างให้อยู่ในรูปของสมการ
แม้กระทั่งทฤษฎีสัมพัทธภาพและกลศาสตร์ควอนตัม ก็ใช้คณิตศาสตร์เป็นตัวอธิบายครับ เมื่ออธิบายได้แล้ว จึงสำเนาสมการคณิตศาสตร์ดังกล่าว เพื่อมาสร้างเป็น software สำหรับคำนวณและแสดงผลต่อไป
ดังนั้น คณิตศาสตร์ครับ ปึ้ก ๆ เลย
แวะเข้ามาอ่านครับ หลายๆ blog น่าสนใจมากครับ