เท้าความ

สมัยก่อนเราอาจจะเห็นโปรแกรมคอมพิวเตอร์ที่ประสพความสำเร็จมักจะเกิดจาก โปรแกรมเมอร์เพียงคนเดียว เพราะมักจะใช้ง่าย และทำงานได้เร็ว เช่น Norton Utility แต่ระยะหลังๆโปรแกรมแบบนั้นมีน้อยลงทุกที แม้แต่โปรแกรมที่เราจ้างเขียนขึ้นใช้เฉพาะกิจก็ยังนิยมจ้างบริษัทเขียน มากกว่าจ้างโปรแกรมเมอร์อิสระ เพราะบริษัทมักจะตรวจสอบคุณภาพโปรแกรมได้ดีกว่า และมีคนให้บริการถึงแม้โปรแกรมเมอร์จะลาออกแล้วก็ตาม เพราะมีการบันทึกการพัฒนา (Software Documentation) ไว้อย่างเป็นระบบ ทำให้แก้ไขและพัฒนต่อเนื่องได้

สมัยนี้โปรแกรมใหญ่ๆเช่น Microsoft Office ก็จ้างโปรแกรมเมอร์ราคาถูกในอินเดียเขียนโมดูลย่อยๆให้ โดยผู้ออกแบบระบบอยู่ในอเมริกา เหมือนงานเขียนการ์ตูน คนสร้างตัวการ์ตูน สร้าง Plot เรื่อง และ Story board อยู่ที่อเมริกา แต่คนเขียนการ์ตูนจริงๆ อยู่ที่ญี่ปุ่นกับไทย

สมัยที่ยังไม่มี Excel ในยุคแรกๆของคอมพิวเตอร์ส่วนบุคคล มีนักศึกษามหาวิทยาลัยเห็นอาจารย์สอนการคำนวนที่กระดานดำ ก็เลยเขียนโปรแกรมเหมือน Excel (จริงๆแล้วต้องบอกว่า Excel ทำเหมือนของเขาเพราะเขาคิดก่อน) หรือเรียกว่ากระดานคำนวณ ทำเป็นโปรแกรมที่เขียนขึ้นกับเพื่อนอีกหนึ่งคนออกมาขาย เรียกว่า VisiCal ซึ่งก็ขายดีอยู่พักหนึ่ง ทำให้Steve Jobs ต้องกล่าวชมว่าทำให้ Apple ขายดีไปด้วย

ต่อมา Mitchell Kapor ซึ่งทำงานด้านที่ปรึกษาทางจิตวิทยาในโรงพยาบาล เรียนจบมาทางจิตวิทยาและศิลปะ และสนใจเรื่องการทำสมาธิ ระดับเป็นครูสอน มีความรู้เรื่อง Computer Science จากหลักสูตรพิเศษมาบ้าง ได้เคยทำหน้าที่ขาย VisiCal ให้บริษัท VisiCal และช่วยปรับปรุง Visical ให้ทำกราฟได้ ได้เห็นจุดแข็งและจุดอ่อนของโปรแกรม จีงเกิดแนวความคิดในการปรับปรุงโปรแกรมให้ดีขึ้นจึงลาออกมา และจ้างโปรแกรมเมอร์มาเขียนโปรแกรมนำมาขายชื่อ Lotus 123 ซึ่งขาดดีมาก ปีแรกที่ออกขาย (1983)ทำรายได้ $53,000,000 และทำรายได้เป็น 3 เท่าในปีต่อไป คือ $156,000,000 เขายังเป็นประธานของมูลนิธิไม่แสวงหากำไรชื่อ Mozilla ซึ่งทำ Firefox มาให้เราได้ใช้ในทุกวันนี้

ทำไมต้องบริหารโครงการ

อย่างที่เท้าความไว้ว่าโปรแกรมสมัยนี้ต้องทำกันหลายคน แบ่งหน้าที่กันทำงาน จึงต้องมีการจัดการโครงการเพื่อ

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

บุคลากร

ปกติหากคิดถึงการพัฒนาโปรแกรมคอมพิวเตอร์ บุคคลากรคนแรกที่คิดถึงคือ Programmer แต่ความจริงแล้ว Software Designer กลับเป็นหัวใจของโครงการ

หากเปรียบเทียบกับวงดลตรี Software Designer จะเป็นผู้ประพันธุ์เพลงและ Conductor

Software Designer จะมีหน้าที่

  • รวบรวมความต้องการ
  • วิจัยและค้นหาแนวทาง
  • ออกแบบโปรแกรม และ Module ต่างๆ ที่ต้องทำงานร่วมกัน
  • ออกแบบ User Interface หรือการใช้งานโปรแกรม
  • Compile โปรแกรม และ Link เข้าด้วยกัน
  • ทดสอบโปรแกรมว่ามี Bug หรือเปล่า และผู้ใช้จะพอใจแค่ไหน
  • และอาจจะต้องติดตามและประสางานคนอื่นหากโครงการไม่ใหญ่มาก

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

ซึ่งจะทำแบบนั้นได้ Software Designer จะต้องมีความรู้เรื่อง

  • งานที่โปรแกรมจะต้องใช้งาน เช่นหากทำโปรแกรมบัญชี ก็ต้องมีความรู้บัญชี และความต้องการของผู้ใช้เป็นต้น
  • มีความรู้เรื่องคอมพิวเตอร์และการแก้ปัญหาด้วยคอมพิวเตอร์(Algorithm)
  • มีความรู้เรื่อง Software Development process/methodology (Design, Documentation, Testing etc)
  • เข้าใจ Framework ของ OS และระบบที่ใช้พัฒนา เพื่อใช้ประโยชน์สูงสุดของระบบ แทนที่จะต้องนั่งทำเอง
  • อย่างน้อยควรเขียนโปรแกรมเป็นบ้าง เพื่อเข้าใจงานโปรแกรมเมอร์
  • มีความสามารถด้านการจัดการและการบริหารงาน
  • มีความสามารถในการตัดสินใจ อย่างมีเหตุผล

Link

Leave a Reply