คลังเก็บหมวดหมู่: Management

การจัดการองค์กร IT

ปัญหาการจัดหมู่คลาส Factorial เชิงสังคมศาสตร์

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

ในงานสร้างซอฟต์แวร์โดยเฉพาะซอฟต์แวร์ขนาดใหญ่ มักจะต้องแบ่งงานกันทำ เพราะทำคนเดียวไม่ได้ มันเสร็จช้า และก็อาจจะไม่ประณีตในหลาย ๆ เรื่อง ดังนั้น แบ่งกันทำดีกว่า

ปรกติแล้วการสร้างซอฟต์แวร์ถ้ามีคนพอ จะแบ่งงานออกเป็น 3 ส่วนใหญ่ ๆ คืองาน Management งาน Functional และงาน Technical

ทีนี้เรามาสมมติว่าเราเป็นผู้อำนวยการสร้างกันดีกว่า โดยสมมติให้เราคิดคำนวณตัดสินใจแบบคอมพิวเตอร์ คือสมมติว่าเรามีโครงการสร้างซอฟต์แวร์อยู่โครงการนึง ตั้งงบประมาณไว้ที่ 2,100,000.00 บาท จุดประสงค์ของงบประมาณ คือเอามาจ่ายให้กับคนที่ทำงาน ซึ่งโครงการนี้ต้องการทำให้เสร็จภายใน 30 วัน โดยให้ใช้คนเพียง 3 คนแบ่งกันทำงานทุกวัน ตามตำแหน่ง Management, Functional และ Technical และแต่ล่ะคนทำงานได้เพียงหน้าที่เดียวเท่านั้นตลอดทั้งโครงการ

ในฐานะเราเป็นผู้อำนวยการสร้าง เราก็หวังว่าเราจะใช้คนให้เหมาะสมกับงาน เพื่อให้ได้ประสิทธิผลที่สูงสุด โดยพิจารณาจากคะแนนรวมของตำแหน่ง Management, Functional และ Technical ซึ่งคะแนนของแต่ล่ะตำแหน่ง ก็ได้จากคะแนนทักษะแต่ล่ะแบบของคนทำงานทั้ง 3 คนอีกทอดหนึ่ง

พอดีว่าคนทำงานที่มีให้เลือกมันน้อย ก็เลยมีให้เลือกมาแค่ 3 คนซึ่งมีอายุไล่เลี่ยกัน และแต่ล่ะคนก็มีทักษะ Management, Functional และ Technical แตกต่างกันไปตามภาพข้างล่างนี้ ดังนั้น ลองมาคิดดูกันดีกว่าว่า คนไหนควรจะทำตำแหน่งอะไร เพื่อให้ผลรวมของคะแนนในการคัดเลือกมีมากที่สุด ซึ่งผลรวมมากสุดที่เป็นไปได้ คือ  30 คะแนน

และที่สำคัญ คนไหนที่ได้ทำตำแหน่ง Management เราจะให้เป็นหัวหน้าผู้ควบคุมโครงการในครั้งนี้

คะแนนทักษะ
คะแนนทักษะ

จากภาพจะเห็นว่านาย กอ มีทักษะแยกประเภทและทักษะโดยรวมมากกว่า นาย ขอ และ นาย คอ!!!

จะเห็นว่าปัญหานี้เป็นปัญหาที่ต้องใช้เวลาในการคำนวณซึ่งอยู่ในคลาส Factorial คือถ้าเราจะเลือกคนมาทำ Management ก็จะมีตัวเลือก 3 คน พอต้องมาเลือกคนทำ Functional ก็จะเหลือตัวเลือกแค่ 2 คน เพราะเลือก Management ไปแล้วคนนึง และสุดท้ายก็จะเหลือคนมาทำ Technical แค่คนเดียว เพราะอีก 2 คนถูกเลือกให้ทำ Management กับ Functional ไปแล้ว

ดังนั้น ถ้าเราจะต้องหาว่าผลรวมไหนดีที่สุด เราก็ต้องคำนวณหาในทุกกรณี ซึ่งก็ต้องใช้เวลาในการคำนวณเท่ากับ 3 x 2 x 1 = 3! = 6 รูปแบบนั่นเอง

และเพื่อให้เห็นภาพชัดขึ้น เรามาค่อย ๆ คำนวณกันดีกว่า ค่อย ๆ ทำทีล่ะกรณี เพราะโจทย์นี้มันง่าย ทำแค่ 6 ครั้งก็ได้คำตอบ แต่ถ้าให้ทำมากกว่านี้ก็ไม่ไหวเหมือนกัน ตามภาพด้านล่างนี้

Skill Matrix
Skill Matrix

จากภาพข้างบนจะเห็นว่า การจัดหมู่ที่ดีที่สุดสำหรับโจทย์นี้คือ การให้นาย ขอ เป็นหัวหน้าทำตำแหน่ง Management ให้นาย คอ ทำตำแหน่ง Functional และนาย กอ ทำตำแหน่ง Technical เหตุผลเพราะการจัดหมู่รูปแบบนี้ ให้ผลคะแนนที่ดีที่สุดคือ 20 คะแนน

โดยปรกติแล้วตามราคาตลาด ผลตอบแทนของ Management จะต้องคูณ 2.3 เท่า ส่วนของ Functional จะต้องคูณ 1.2 เท่า และของ Technical ไม่คูณอะไรเลย

ดังนั้น ถ้าให้ค่าตอบแทนวันล่ะ 15,000 บาท ด้วยการจัดหมู่แบบนี้นาย ขอ จะได้ค่าตอบแทนวันล่ะ 15,000 x 2.3 บาท ส่วนนาย คอ จะได้ค่าตอบแทนวันล่ะ 15,000 x  1.2 บาทและส่วนนาย กอ จะได้ค่าตอบแทนวันล่ะ 15,000 บาท

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

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

สำหรับโจทย์นี้ถ้าเราจะแก้ปัญหาทางสังคมศาสตร์ เราอาจจะต้องใส่ประจุเพิ่มให้กับคนที่มีทักษะ Management และ Functional เพื่อให้เวลาคำนวณในทางคอมพิวเตอร์ จะได้มีน้ำหนักเหมาะสมมากขึ้น แต่ในบางครั้งการทำแบบนั้นอาจจะไม่ถูก เพราะมันขึ้นกับงานในแต่ล่ะโครงการ บางโครงการจุดสำคัญก็อาจจะอยู่ตรงตำแหน่ง Technical ดังนั้น การเปลี่ยนเป็นให้ค่าตอบแทนกับตำแหน่ง Technical โดยการคูณค่าตอบแทน 2.3 เท่า แล้วไปลดตัวคูณค่าตอบแทนในตำแหน่งอื่นน่าจะเหมาะสมกว่า

ทักษะสำคัญ 5 ประการในวิชาชีพคอมพิวเตอร์ (หรือวิชาชีพอื่น ๆ)

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

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

ภายหลังผมจึงเข้าใจ

การออกไปผจญโลกภายนอกในวิชาชีพคอมพิวเตอร์ (หรือวิชาชีพอื่น ๆ) มันต้องมีทักษะสำคัญ 5 ประการ คือ

1. ความรู้ทางทฤษฎี เช่น ความรู้ในทฤษฎีคอมพิวเตอร์ ความรู้ในผลิตภัณฑ์หรือบริการทางคอมพิวเตอร์ ความรู้ในกระบวนการทางคอมพิวเตอร์

2. ความเชี่ยวชาญในการปฏิบัติ เช่น ทักษะการเขียนโปรแกรม ทักษะการเขียนเอกสารวิเคราะห์ระบบ ทักษะการสร้างเอกสารเพื่อบรรยาย ทักษะการบรรยายนำเสนอ ทักษะการใช้งานผลิตภัณฑ์หรือบริการทางคอมพิวเตอร์

3. ความมีเสน่ห์ คือ มีบุคลิกภาพดึงดูดผู้คนให้เข้าหา หน้าตาอิ่มเอมไม่เศร้าหมอง พูดจาดีน่าเชื่อถือ น้ำเสียงไม่ขู่กรรโชก วาจาไม่ก้าวร้าว ไม่ยกตนข่มท่าน ไม่ชักสีหน้า รู้จักรักษาน้ำใจคน

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

5. การบริหารการเมือง คือ รู้จักจัดสรรผลประโยชน์ เพื่อแบ่งให้ตัวเองและผู้อื่น รู้จักการเข้าหาผู้คน รู้จักการประนีประนอม รู้จักใช้ทฤษฎีเกม รู้จักวิธีการพึ่งพาผู้อื่นอย่างเหมาะสม รู้จักการอ่านใจคนและอ่านพฤติกรรมคน

ผมมีข้อ 2 แค่ข้อเดียว ส่วนข้ออื่นด้อยหมด

ในขณะที่พี่คนนั้นเขาด้อยในข้อ 2 แต่มีดีในข้อที่เหลือทั้ง 4 ข้อ

มันก็เป็นดังนี้แล …

หลักคิดในการทำวิจัยทางวิทยาการคอมพิวเตอร์

การทำวิจัยทางด้านวิทยาการคอมพิวเตอร์ มีองค์ประกอบสำคัญอยู่ 2 เรื่องใหญ่ ๆ คือ 1) ปัญหา และ 2) เครื่องมือในการแก้ปัญหา

คนส่วนใหญ่ที่เรียนวิทยาการคอมพิวเตอร์มา มักจะได้มีโอกาสเรียนเครื่องมือในการแก้ปัญหาจนชำนาญ และพวกเขาเหล่านั้นก็มักจะมีเครื่องมือแก้ปัญหาประจำตัวอะไรซักอย่างหนึ่ง ที่พวกเขาถนัดที่สุด ใช้บ่อยที่สุด และมีความมั่นใจมากที่สุดเมื่อใช้มัน เช่น พวกเขาอาจจะถนัดใช้ Neural Network มาก รู้ทะลุปรุโปร่งสุด ๆ หรือ อาจจะถนัด Hidden Markov Models อย่างเทพ หรือ อาจจะถนัดในการเขียน OOP บน Java มาก ๆ เป็นต้น

ดังนั้น เมื่อต้องคิดงานวิจัยอะไรขึ้นมา พวกเขาเหล่านั้นจึงไม่ลังเลที่จะเอาเครื่องมือแก้ปัญหาที่พวกเขาถนัด ไปแก้ปัญหาเรื่องนู้นเรื่องนี้ตามแต่โอกาสจะอำนวย เช่น ถ้าถนัด แต่ Hidden Markov Model ก็นำ Hidden Markov Model ไปแก้ปัญหา Speech Recognition, Gesture Recognition, Network Intruder เป็นต้น

นำเครื่องมือไปแก้ปัญหาต่าง ๆ
นำเครื่องมือไปแก้ปัญหาต่าง ๆ

แต่อาจารย์ของผมสอนผมว่าแบบนี้ไม่ดี เพราะมันเท่ากับว่าเราเอาแต่หมกมุ่นกับเครื่องมือแก้ปัญหามากเกินไป ดังนั้น เราจะไม่มีการพัฒนาตัวเอง เพราะเราจะรู้อยู่แต่เครื่องมือที่เราถนัดเท่านั้น ในขณะที่แบบที่อาจารย์ผมมองว่าดีคือ ให้เราสนใจในปัญหาก่อน แล้วค่อยหาเครื่องมือแก้ปัญหาที่เหมาะสมมาแก้ปัญหา เช่น ถ้าเราจะค้นหาผลลัพธ์ใด ๆ ในเวลาอันรวดเร็ว โดยให้มันไม่เผชิญกับปัญหา Non-Deterministic Polynomial Time เราก็ควรจะทดลองหาเครื่องมือต่าง ๆ มาทดลอง เช่น Ant Colony Optimization, Genetic Algorithm, Particle Swarm Optimization, Gravitational Search Algorithm, Tabu Search เป็นต้น ซึ่งมันจะทำให้เรามีความรู้ในเครื่องมือที่หลากหลาย และได้รู้ทางอ้อมว่าเครื่องมือใดเหมาะกับการแก้ปัญหาใดจริง ๆ จากการทดลอง

หาเครื่องมือมาแก้ปัญหา
หาเครื่องมือมาแก้ปัญหา

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

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

Trend คนทำงานคอมพิวเตอร์

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

พอผ่านมาถึง 6 -7 ปีที่ผ่านมา คนจบสายคอมพิวเตอร์ก็ถูกผลิตมากขึ้นเรื่อย ๆ ทั้งแบบสายคอมพิวเตอร์ตรง ๆ หรือสายคอมพิวเตอร์เทียบเคียง ทำให้ช่วงว่างในการเลื่อนขั้นงานเริ่มขยายกว้างขึ้นเรื่อย ๆ เพราะคนที่จบเมื่อ 20 ปีก่อนก็ยังทำงานอยู่ คนที่จบเมื่อ 15 ปีก่อนก็ยังทำงานอยู่ คนที่จบ 10 ก่อนก็ยังทำงานอยู่ บลา ๆ ๆ ๆ

มันทำให้โมเดลที่ว่าต้องทำงานเทคนิคซัก 2 – 3 ปี แล้วค่อยเลื่อนชั้นถูกขยายกว้างออกไป กลายเป็นว่าอาจจะต้องทำงานเทคนิคถึง 10 ปีแทน

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

งานเหล่านี้ล้วนเป็นงานทางด้านเทคนิค ที่แต่เดิมถูกกำหนดโดยจารีตประเพณีว่าต้องให้เด็ก ๆ เป็นคนทำ แต่ยุคนี้กลายเป็นว่าคนแก่ ๆ ก็ต้องทำเหมือนกัน ซึ่งภาพเหล่านี้เราจะไม่ได้เห็นเมื่อ 10 ปีก่อน เพราะภาพของ 10 ปีก่อนนั้น เราจะไม่มีทางเห็นคนที่อายุ 30 กว่าต้องมานั่งทำสาย LAN ไม่มีทางเห็นคนอายุ 40 กว่ายังคงนั่งเขียนโปรแกรมงก ๆ ๆ ๆ อยู่ เพราะอายุแบบนี้สมัยนั้นขึ้นเป็นผู้บริหารไปหมดแล้ว

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

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

ตำแหน่งชำนาญการของนักวิชาการคอมพิวเตอร์

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

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

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

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

ส่วนต้นทางในการพิสูจน์ทราบนั้น ก็มีได้หลายวิธีไม่ว่าจะเป็น การแต่งตำรา, การแต่งหนังสือ, การแปลหนังสือ, การประดิษฐ์คิดค้น, การแสดงนิทรรศการ, การเขียนบทความวิชาการ เป็นต้น ซึ่งทั้งหลายทั้งปวงนั้น จะต้องถูกประเมินแล้วว่าเป็นผลงานระดับ “ดี” ขึ้นไป ไม่ใช่ไก่กา แถมผลงานยังต้องถูกเผยแพร่ต่อสาธารณชน และที่สำคัญจะต้องทำอย่างน้อย 3 เรื่อง/ชิ้นขึ้นไป เพื่อจะเสนอขอตำแหน่งชำนาญการ, เชี่ยวชาญ และ เชี่ยวชาญพิเศษ!!!

มันเหมือนกับการที่นักศึกษาปริญญาตรี ต้องทำปริญญานิพนธ์ 3 เรื่องเพื่อยื่นในคราวเดียว สำหรับขอจบเป็นบัณฑิตเพื่อให้ได้รับปริญญาบัตร 1 ใบ อะไรประมาณนั้นเลยทีเดียวเชียว!!!