ถ้าใครออกมาทำงานเป็นนักพัฒนาซอฟต์แวร์ แล้วการทำงานที่ว่าก็เป็นพนักงานประจำด้วย แถมอยู่ในองค์กรใหญ่โตด้วย ผมว่าคงยากนะ ถ้าจะมีคนที่ไม่คิดทะเยอทะยาน หวังจะไต่เต้าขึ้นไปสู่ที่สูง ๆ น่ะจริงแมะ? ก็อย่างที่เคยโม้ไว้ ตราบใดที่ยังเป็นพนักงานประจำ ใคร ๆ ก็อยากจะก้าวหน้าทั้งนั้นแหล่ะ ขนาดตำรวจกับทหาร ก็ยังห่วงการอวยยศเลื่อนตำแหน่งเลย ต่อให้ใจแข็งยังไงก็ยังต้องมีคิดบ้างแหล่ะ นับประสาอะไรกับพนักงานบริษัทอย่างคนทั่ว ๆ ไป ปรกติแล้วผมจะให้ความสนใจกับผังองค์กรมากเลยครับ โดยเฉพาะกับผังองค์กรขององค์กรทางด้านคอมพิวเตอร์ ผมจะดูว่าใครอยู่ตรงไหน มีตำแหน่งอะไรบ้าง แล้วใครใหญ่อยู่ตรงไหนบ้าง เพราะผมต้องไปคุยกับคนเหล่านี้
Author: ไท้ ปริญญา
ผมเคยเกริ่น ๆ เอาไว้ในบล็อกนี้เมื่อหลายเดือนก่อนครับ ว่าผมจบมาโดยการทำปริญญานิพนธ์เรื่อง speech recognition มาวันนี้ผมก็เลยจะเอาหนังสือที่ครั้งกระโน้นผมเคยใช้มันเป็นคัมภีร์ ตะลุยผ่าหกด่าน ประหารหกนายทัพ วิ่งเข้าสู่เส้นชัยของความสำเร็จ มาอวดให้ดูหน่อย สมัยผมอ่ะนะ (สิบกว่าปีก่อน) การจะซื้อ Text Book ที่เราต้องการซักเล่มนึงจากต่างประเทศ ถือเป็นเรื่องยากโคตร ๆ เลยล่ะ ไม่เหมือนสมัยนี้ที่ง่ายบรมเลย แค่ค้นจาก amazon หรือไม่ก็จาก eBay
เว๊ปนี้แปลกดีครับ ผมเจอแล้วเอามานำเสนอให้ดู คือคุณสมบัติของเขาก็คือ เขาจะสร้าง web form ให้เราอัตโนมัติ แล้วให้เราเอาโค้ดของ web form มาแปะไว้ในเว๊ปเรา เมื่อมีคนมากรอกข้อมูลใส่ใน web form ทาง Sidewalk ก็จะช่วยเก็บข้อมูลดังกล่าวไว้ให้ ไม่ต้องเปลืองเนื้อที่โฮสต์ของเรา เข้าใจว่าเขาทำมาเพื่อเว๊ปไซต์ที่ไม่มี cgi เป็นของตัวเอง, หรือไม่ก็เพื่อ blogger ซึ่งใช้ free
ผมมักเข้าไปอ่านในกระทู้พันธ์ทิพย์บ่อย ๆ ครับ ก็มีแวะไปที่ Tech Exchange บ้างเหมือนกัน ที่นั่นนอกจากมีกระทู้ร้อนแรงประเภทว่าค่าแรงของนักพัฒนาซอฟต์แวร์ควรเป็นเท่าไหร่ดี? ก็ยังมีอีกหัวข้อนึงที่ร้อนแรงไม่แพ้กันนั่นก็คือ … Computer Engineering กับ Computer Science อันไหนดีกว่ากัน หรือ Computer Engineering กับ Computer Science ควรเลือกเอ็นสะท้านเข้าอย่างไหนดี ตั้งกระทู้แบบนี้ก็ทะเลาะกันน่ะสิครับ ความเห็นงี้ยาวเป็นหางว่าวเลย
บางคนอาจจะคิดว่าพวก geek ทางคอมพิวเตอร์ทั้งหลาย คงจะคร่ำเคร่งอยู่กับการเรียนรู้แต่กับเรื่องคอมพิวเตอร์ซะส่วนใหญ่ แต่คงไม่ใช่กับผมอ่ะครับ เพราะโดยส่วนตัวแล้วผมก็ค่อนข้างจะจำเจกับเรื่องคอมพิวเตอร์พอสมควรเลย เนื่องจากมันก็วน ๆ อยู่แค่นี้อ่ะครับ ศาสตร์ทางคอมพิวเตอร์มันมีกรอบของมันครับ ถึงแม้เราจะดิ้นรนทุรนทุราย เวียนว่ายตายเกิด เรียนรู้อยู่นั่นแหล่ะ แต่มันก็อยู่ในขอบเขตของ ซอฟต์แวร์ และ ฮาร์ดแวร์ เท่านั้นเอง ที่สำคัญ geek ทางคอมพิวเตอร์ชอบเล่นกับ tools มาก ๆ พยายามฝึกใช้มันเพื่อชำนาญ
หนังสือเล่มนี้ซื้อมาเมื่อไหร่ผมจำไม่ได้แล้ว แต่ที่รู้แน่ ๆ ก็คือเนื้อหาข้างในมันบรรจุแต่เรื่องกราฟิคส์อย่างเดียวเท่านั้น โดยเป็นหนังสือที่สอนการเขียนกราฟิคส์ด้วย Turbo Pascal 5.5 สำหรับทำงานบน MS-DOS ตอนแรกผมก็นึกว่าจะเป็นการสอนว่าคำสั่งอะไรใช้เพื่อทำอะไร อะไรประมาณนี้ แต่จริง ๆ แล้วหนังสือเล่มนี้กลับสอนสมการทางคณิตศาสตร์เพื่อใช้ในการย่อภาพ, ขยายภาพ, หมุนภาพ, การระบายสี, การตกกระทบของแสงเงา เป็นต้น เอ้อ คือตอนนั้นอ่านแล้วก็เอ๋อไปเลย แบบว่าไม่เคยรู้มาก่อนว่าการทำกราฟิคส์มันต้องอะไรประมาณนี้ด้วย นึกว่าแค่ใช้คำสั่ง สั่งให้วาดภาพแล้วก็วนลูปเพื่อให้มันแสดงผลอย่างที่ต้องการก็พอแล้ว
ผมเคยโม้เรื่องสามเหลี่ยมแห่งทักษะเอาไว้เมื่อหลายเดือนก่อน ซึ่งเป็นหัวข้อที่ผมพยายามอธิบายให้รู้กันว่า ถ้าเราแบ่งทักษะของนักพัฒนาซอฟต์แวร์ออกเป็น ทักษะทางเทคนิค, ทักษะทางระบบ และทักษะทางธุรกิจแล้ว เราจะได้นักพัฒนาซอฟต์แวร์เป็นกี่ประเภท มาคราวนี้เอาใหม่ ผมจะใช้แผนภาพอีกแบบ ในการอธิบายนักพัฒนาซอฟต์แวร์ 4 จำพวกบ้าง จากภาพจะเห็นว่า ด้านซ้ายเป็นพวกของจริง, ด้านขวาเป็นพวกของเทียม, ด้านบนเป็นพวกช่างเจรจา และด้านล่างเป็นพวกเตมีย์ใบ้ ผู้เชี่ยวชาญ คือคนที่สื่อสารกับผู้อื่นให้เข้าใจได้, ทฤษฎีแน่นปึ้ก และลงมือทำให้เกิดผลสำเร็จได้ หุ่นยนต์ คือคนที่สื่อสารกับผู้อื่นให้เข้าใจไม่ได้ หรือไม่ชอบสื่อสารกับใคร แต่ลงมือทำให้เกิดผลสำเร็จได้
วันนี้ผมถูกเรียกเข้าประชุมเรื่องการเชื่อมโยงข้อมูลของซอฟต์แวร์ระดับ enterprise หลาย ๆ ตัวเข้าด้วยกันครับ เป็นเรื่องที่จริงจังและค่อนข้างต้องทำความเข้าใจกันมากเลยทีเดียว ในห้องประชุมก็จะมีระดับผู้จัดการ, Team Lead แล้วก็นักวิเคราะห์ระบบครับ ทั้งขององค์กรที่ผมทำงานอยู่แล้วก็ของบริษัทเอกชนที่เราจ้างให้เขาเข้ามาช่วยทำงานให้เรา วิศวกรซอฟต์แวร์กับโปรแกรมเมอร์ไม่ได้ถูกเรียกเข้าด้วยครับ ปล่อยให้ทำงานตามกำหนดการปรกติต่อไป พอดีองค์กรที่ผมทำงานอยู่ซื้อซอฟต์แวร์และจัดจ้างผู้เชี่ยวชาญมาทำระบบการบริการลูกค้า, ระบบการเงิน และระบบพัสดุให้เรา โดยองค์กรใช้งบประมาณหลายร้อยล้านบาทครับเพื่อการจัดสร้างระบบดังกล่าว ดังนั้นเราจำเป็นต้องเอาระบบใหญ่ระดับยักษ์ของเราที่เดิมมีอยู่แล้วเข้าไปเชื่อมกับของเค้า งานยักษ์ครับ จุดที่น่าสนใจในการประชุมครั้งนี้ก็คือเรื่องของการแบ่งงานกันทำครับ เพราะการที่เราจะเอาระบบขนาดใหญ่ซึ่งมีอยู่เดิมอยู่แล้ว ไปเชื่อมโยงกับระบบขนาดใหญ่ที่กำลังจะสร้างขึ้นใหม่ มันต้องมีงานเกิดขึ้นมากมายครับ เนื่องจากมีจุดต่อเชื่อมอยู่เพียบ เหมือนกับการตัดมือออกแล้วต่อมือใหม่
ผมเจอเว๊ปนี้เข้าโดยบังเอิญครับ แปลกดี แต่ก็ถือว่าตรงแนวคิดของ Software as a Service ครับ โดยแนวคิดของเว๊ปนี้ก็คือ เขาจะอำนวยความสะดวกให้กับผู้ที่ต้องการจัดการเรียนการสอนบนอินเตอร์เน็ต โดยผู้สอนจะบันทึกหลักสูตรการเรียนการสอนของตัวเองเอาไว้ในเว๊ปนี้ แล้วผู้เข้าเรียนก็จะต้องลงทะเบียนเรียนในเว๊ปนี้ด้วยเช่นกัน จริง ๆ แล้วเรายังไม่ลงทะเบียน เราก็เข้าไปดูได้ว่ามีหลักสูตรอะไรบ้าง ถ้าสนใจแล้วจึงค่อยลงทะเบียนก็ได้ บางหลักสูตร ผู้สอนก็จะไม่คิดเงิน แต่บางหลักสูตรก็คิดเงินด้วยนะ เข้าท่าดีแฮะ ต่อไป แค่เปิดคอมพิวเตอร์แล้วต่อเข้าอินเตอร์เน็ตจากที่ไหน ๆ ในโลก
มนุษย์เราจะสร้างความเหนือกว่าได้ก็ด้วยการวางแผนครับ ในชีวิตประจำวันของเราล้วนต้องวางแผนทั้งนั้น เพียงแต่จะเป็นแผนที่วางไว้ในใจ หรือว่าจะเขียนมันออกมาเป็นลายลักษณ์อักษรก็เท่านั้นเอง โดยทั่วไปแล้วแผนที่วางเอาไว้ของคนส่วนใหญ่ มักจะวางไว้อย่างคร่าว ๆ และมีเพียงแผนเดียว มีน้อยคนนักที่จะมีการวางแผนสำรองเอาไว้ หรือถ้ามีจริงก็คงมีแผนสำรองแค่แผนเดียว ไม่ได้มีหลาย ๆ แผนเหมือนบางคน ในการสร้างซอฟต์แวร์เองก็ต้องมีการวางแผนเช่นกัน แต่ผมยังไม่ขอพูดถึงการวางแผนในระดับใหญ่หรอกนะ เอาแค่ระดับเล็ก ๆ ก่อน แค่ระดับการสร้างซอฟต์แวร์ของคน ๆ นึงก็พอ จากภาพจะเห็นว่าผมวาดผังงานสำหรับอธิบายกลไกการทำงานของซอฟต์แวร์ตัวนึงเอาไว้ โดยแผนภาพที่เป็นสีเหลืองหมายถึง กลไกหลักที่จะมีโอกาสเกิดขึ้นได้สูงถึง 99%