หน้าเว็บ

23 พฤศจิกายน 2551

037 | Python กับการพัฒนาระบบสารสนเทศ

เทอมนี้ได้สอนวิชาแปลกอีกแล้วครับ ก็คือรายวิชาที่มีชื่อว่า " การพัฒนาระบบสารสนเทศ (Information System Development) " กลุ่มที่เรียนก็คือ นักศึกษาสาขาวิชาเทคโนโลยีสารสนเทศและการสื่อสาร (ICT) ปี 2 ซึ่งกลุ่มนี้เคยสอนไปแล้วในรายวิชา Distributed System ตอนปี 1 (และแจก E เป็นครั้งแรกในชีวิตไป 5 คน)

ดูจากคำอธิบายรายวิชา วิชานี้เหมือนจะเน้นสอนในเรื่องของ SDLC และการเขียนแผนภาพกระแสข้อมูล (DFD : Data Flow Diagram) ซึ่งผมก็ค่อนข้างมั่นใจอยู่พอสมควร แต่เนื่องจากผิดสังเกตอยู่เล็กน้อยว่า ในข้อมูลรายวชิาทั้งหมดของสาขา ICT นี้ มีรายวิชาที่มีเนื้อหาคล้ายๆ กันอยู่หลายตัว เช่น การวิเคราะห์และออกแบบระบบ (System Analysis and Design), การจัดการเทคโนโลยีสารสนเทศ (Information System Management) ประมาณนี้ และผมก็เริ่มรู้สึกว่า เนื้อหาที่ผมจะสอนอาจจะไปซ้ำกับรายวิชาที่ นศ.เคยเรียนไปแล้วก็เป็นได้ ผมก็เลยยังไม่เตรียม Course Syllabus ไปในการสอนครั้งแรก และตั้งใจว่าจะขอเก็บข้อมูลจาก นศ.ดูก่อน

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

ที แรกผมก็คิดว่ามันอาจจะเป็นแบบนี้ ก็เลยเตรียมไว้ว่า ถ้ามันซ้ำขึ้นมา ผมจะเอาเนื้อหาที่เกี่ยวกับ Software Engineering มาสอน แต่แล้วก็ต้องสะดุดกึกเพราะในเทอมเดียวกันนี้ นศ.ยังได้เรียนวิชา วิศวรรมซอฟต์แวร์ (Software engineering) อีกตัวหนึ่ง !!

เซงได้แต่เซงครับอย่างนี้

ทันใดนั้นผมก็ฉุกคิดขึ้นมาได้ว่า ในรายวิชาที่ผมเรียน (ปริญญาโท) ในเทอมนี้ มีวิชา การวิเคราะห์และการออกแบบเชิงวัตถุ (Object Oriented Analysis and Design) สอนโดย อ.วัชระ ฉัตรวิริยะ ซึ่งในคาบเรียนที่สอน อ.วัชระ จะให้แบ่งกลุ่มทำงานเป็นลักษณะการจำลองทีมพัฒนาซอฟต์แวร์ ซึ่งประกอบไปด้วย

- Project Manager (PM)
- System Analyst (SA)
- Programmer (PG)
- Configuration Manager (CM)
- Measurement Analyst (MA)
- Quality Assurance (QA)

กลุ่ม หนึ่งจะมี 6 คน แบ่งงานกันทำตาม Requirement ที่ได้รับมอบหมาย (อ.วัชระจะรับบทเป็นทั้งลูกค้า และ Consultant) โดยแต่ละคนต้องทำหน้าที่ของตัวเองในกลุ่ม และจับเวลาการทำงานโดยสมมติว่า 1 ชั่วโมงเท่ากับ 1 วันเป็นต้น ผลลัพธ์ของงานกลุ่มก็คือ โปรแกรมที่พัฒนาตาม Requirement และเขียนด้วยภาษา Java และเอกสารต่างๆ ในการทำงาน เช่น Use Case และ Diagram ต่างๆ ที่วิเคราะห์และออกแบบโดย SA (การออกแบบต้องมองในมุมมองที่เป็น OO), เอกสารบันทึกการทำงานของ MA, เอกสารเวอร์ชันต่างๆ ที่รวบรวมโดย CM เป็นต้น ซึ่งข้อตกลงก็คือ งานต้องเสร็จทันเวลาและตรงตามความต้องการของลูกค้า ถ้างานเสร็จไม่ตรงเวลาก็ถือว่าโครงการนั้น Fail ไปเลย ประมาณนี้

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

นศ.กลุ่มที่ผมจะสอนมีทั้งหมด 12 คน แบ่งกลุ่มละ 6 คนก็ได้ 2 กลุ่มพอดี ตรวจงานได้ง่าย และเข้าถึงการทำงานของ นศ.ได้ดีมากๆ

เนื้อหา ที่สอน ผมตั้งใจว่าจะไม่บังคับทฤษฏีอะไรมาก ผมอนุญาตให้ นศ.ออกแบบระบบโดยการเขียน Flow Chart ได้ (เนื่องจาก นศ.ยังไม่ได้เรียนรายวิชา การวิเคราะห์และออกแบบเชิงวัตถุ - วิชาที่ผมได้เรียนตอน ป.โท แต่ นศ.กลุ่มนี้จะได้เรียนตอน ป.ตรี ปี 3 เหอๆๆ) แต่อยากให้ นศ.ได้สัมผัสบรรยากาศในการทำงานเป็นทีมพัฒนาซอฟต์๋แวร์แบบที่ผมเคยได้สัมผัส มาแล้วบ้าง ส่วนเนื้อหาอื่นๆ อาจจะต้องสอดแทรกไปด้วยระหว่างที่เรียน อันนี้ก็คงต้องปรับเปลี่ยนตามสถานการณ์

ปัญหาใหญ่หลวงก็คือ โปรแกรมที่ นศ.จะต้องเขียนขึ้นมาเพื่อส่งในคาบแต่ละครั้ง ที่ผมเรียนนั้น อ.วัชระให้ใช้ภาษา Java เนื่องจากการวิเคราะห์ก็เป็น OO อยู่แล้ว เวลาเขียนโปรแกรมก็๋ให้เป็น OO ด้วยซะเลย ซึ่งแม้ว่า Programmer ของแต่ละกลุ่มจะมีประสบการณ์การเขียนโปรแกรมเชิงวัตถุอยู่บ้างแล้ว แต่ในเวลาที่เรียนจริงๆ การเขียนโปรแกรมด้วยภาษา Java ก็ยังทำได้ช้าอยู่ดี และถ้าเอามาสอนกับ นศ. ป.ตรีของผมล่ะ ? ดูท่าทางจะวุ่นวายน่าดู และเวลาที่ใช้สอนก็น้อยกว่ากันเกือบครึ่งด้วย (ที่ผมเรียนกับ อ.วัชระในแต่ละครั้งจะอยู่ที่ 8 ชม. แต่รายวิชาที่ผมสอนมีเวลาให้ประมาณ 4 ชม.) คราวนี้จะให้ นศ.ใช้ภาษาอะไรเขียนโปรแกรมส่งดีละครับ

ผมนึกถึงภาษา Python อีกแล้ว...

ข้อ ดีหลายอย่างของ Python ดูเหมือนจะเข้าทางกับสิ่งที่ผมกังวลอยู่พอดี ผมตัดสินใจแจ้ง นศ.ในการเข้าสอนครั้งต่อมาว่า นศ.ต้องเขียนโปรแกรมด้วยภาษา Python ส่งภายในคาบในการทำงานกลุ่มแต่ละครั้ง นศ.ร้องฮือๆๆ บ่นว่า ไม่เคยเรียน ไม่เคยได้ยินมาก่อน ภาษาอะไรๆๆ Blah Blah ~~

พอผมบอกว่า Python เรียนรู้ง่าย เขียนง่าย เขียนเร็ว นศ.ก็ยิ้มออกเล็กน้อย ก่อนที่ผมจะบอกให้พวกเขาไปศึกษา Syntax และวิธีการเขียนเอาเอง โดยศึกษาจาก Slide ที่ผมลองสรุปไว้สอนในรายวิชาการเขียนโปรแกรมเบื้องต้น (เมื่อเทอมที่แล้ว) และศึกษาจากหนังสือต่างๆ ที่มีอยู่ ก่อนที่จะเริ่มเรียนจริงๆ ในครั้งหน้า

ศุกร์หน้านี้จะเป็นการสอนแบบจริงๆ ครั้งแรก ผลลัพธ์จากการลองของนี้จะเป็นอย่างไร ผมเองก็อยากรู้เหมือนกันครับ.


(เขียนครั้งแรกใน http://gotoknow.org/blog/chayan วันที่ 23 พฤศจิกายน 2551)

ไม่มีความคิดเห็น: