[CUSE] หนึ่งปีผ่านไปสำหรับการเรียนวิศวกรรมซอฟต์แวร์

จากตอนไปสอบเข้าแบบมืนๆ ไปนั่งสอบก็นั่งผิดที จากวันเปิดเทอมวันแรกวันที่ 7 มกราคม 2016 ตอนนี้ก็ผ่านไป 1 ปีแล้ว เร็วเหมือนกันเนอะ แปบๆ ก็ผ่านไป 1 ปีแล้ว สำหรับการเรียนปริญญาโท แบบที่ไม่ได้หวังว่าสอบติดในตอนแรกครับ โดยเทอมนี้ผมลงเรียน 5 ตัวครับ

  • Requirement Engineering
    • เรียนแล้วได้เห็นว่า เออได้ที่บอกมาว่า มันผิดมาตั้งแต่ช่วง requirement เพราะ อะไร
    • วิชานี้เป็นการปั๊นให้น้ำ ออกมาเป็นตัวครับ ทำไมถึงบอกแบบนั้น เพราะ Catch the requirements if you can - จับให้ได้ไล่ให้ทัน โดยตัว Requirements มันมีอายุ สิ่งที่เราต้องทำ สร้างหลักฐานทำ Snapshot ครับ
    • ทำไมสิ่งที่ต้องการจะสื่ตั้งแต่ Node แรก อย่าง User ไล่ๆ มาถึง BA, SA, DEV, QA ต้นทาง และปลายทางมันช่างไปกันคนละทิศทางเลย
    • มีเครื่องมือและที่ช่วยให้ Requirement มันมีคุณลักษณะที่ดี เอา UML มาช่วยตอนวิเคราะห์ ทวนสอบว่าได้ความต้องการที่มีคุณลักษณะที่ดี แล้วหรือยัง
    • โดยภาพรวม ของการทำให้ Requirement มันเกิดขึ้นมาแล้ว เป็น Requirement ที่ดี ก็ตามแผนภาพเลย
    • ตัว RE Process เค้ามาช่วยคุมนะ แต่ต้องแลกกัน Cost ที่ต้องเสียไปในช่วงแรกๆ และสิ่งที่สำคัญเน้น User Involvement เยอะๆ
  • Project Management
    • วิชานี้เป็นศาสตร์ที่ไม่ใช่ 1 + 1 = 2 นะ ผมมองว่ามันเป็น Art + Science มากกว่า
    • โดยที่เรียนเน้นไปในส่วนของ IT Project Management ซะส่วนใหญ่ครับ โดยอิงตาม PMBOK ที่เป็นการรวบความรู้ในด้านต่างๆ(Knowledge Area) ได้ 10 ด้าน ซึ่งเป็น Best practice หรือเป็นแนวทางที่ควรทำสำหรับการบริหารโครงการ ให้มีโอกาศประสบคามสำเร็จเพิ่มขึ้น
    • จากง่ายๆ - Triple Constraint - Scope / Time / Cost
    • ปานกลาง - Gantt Chart มาจากไหน มันมีที่มานะ ที่เห็นๆตอนประชุมในที่ทำงาน PM ไม่ได้มโนมานะ (แม้ภาพที่ได้ อาจจะต่างกับในชีทที่เรียน) แล้วรู้ได้อย่างไรว่าต้องใช้เงินเท่าไหร่ ? (นึกถึงพวกโครงการต่างๆ ที่ทำไมต้องใช้เงินให้หมด-แม้ว่าตอนทำงานจริงใช้งบน้อยกว่าวางแผนไว้ก็ตาม) และสิ่งที่สำคัญที่สุดเลย เรื่อง Buffer

      พอรุ้ว่า PM ทำ Buffer ไว้ เราแค่บวกกลับเข้าไปให้พอดีกับที่ตัวเองกะไว้ จะไม่ต้องมากดดันน้องในทีม เพราะที่บริษัท มักมีปัญหาเรื่องการประเมินเวลาด้วย ส่วนใหญ่เน้นทำ Deadline ลูกค้า จนบางทีมันจะได้น้ำตกที่สูงชัน

    • ไปจนถึงยาก - อย่างการคำนวณ Risk
  • Social Network Analysis
    Reference: http://evelinag.com/blog/2016/01-25-social-network-force-awakens/index.html#.WjVG8kxuKmQ
    Reference: http://evelinag.com/blog/2016/01-25-social-network-force-awakens/index.html#.WjVG8kxuKmQ
    • พอได้เรียนวิชานี้แล้ว เออได้คนที่คิดเรื่อง Graph มาเนี่ย มันสุดยอดมากกกก เอามาแทนอะไรก็ได้ แล้วหาความสัมพันธ์ที่ซ่อนอยู่ เช่น ใครเป็นคนกลางกระจ่ายข่าว (Betweeness Centrality) และอื่นๆ
    • วิชานีทำให้คุณตอบคำถามได้ว่า ทำไม Facebook ถึงรู้ใจคุณ แล้วบอกพฤติกรรมของเราได้ไง เกิดเหตุการณ์นี้ในโลกจริง สิ่งที่เราต้องคิดตาม แม้ผมจะคิดตามไม่ค่อยทันก็ตาม 5555 ตอนสอบยังสอบแบบงงๆ อย่างน้อยผมรู้จัก Power Law แน่ๆ
    • ผมชอบวิชานี้นะ ได้คิดอะไรแปลกๆเยอะ ตั้งแต่ Small Project ที่ตอนแรกแบบหลุดโลก Social ไปทำเรื่องหนี้ครัวเรือน ค่อยๆ คล้ำทางถูกมาจนถึง Term Project ได้เล่นอะไรหลายๆตัว
      • ที่ชอบที่สุด คือ ใช้ Tableau มานำเสนอ Data ในมุมมองต่างๆ มันใช้งานง่ายดี
      • มีเขียน Code Python นิดหน่อย
    • วิชานี้อารมณ์เหมือนทำ Lab ก่อนแล้วค่อยมาเรียน ซึ่งหาได้ยากมาก ในวิชาเรียนของภาคนอกเวลา
    • สำหรับวิชานี้จริงๆ อยากลองอะไรแปลกๆหลายอย่างนะ แต่ส่วนใหญ่ติดเรื่องเวลากันเยอะ
      • แต่วิชานี้ก็น่าจะพลาดที่ไปเกาะอยู่กันกับกลุ่มของ SE เลยไม่ค่อยรู้จักกันคนทางสาย CS เลย และวันสุดท้ายที่นำเสนอ Term Project ก็ติดทำงานเลยไม่สามารถอยู่ฟังได้ T__T
  • Software Testing

    • วิชานี้น่าจะเหมาะกับสาย Dev นะ จะได้รู้ว่าสิ่งที่ทำกันอยู่มันทำร้ายผู้อื่น (Tester) อย่างไร 55555 เริ่มต้นการจากจับผิด โดยใช้สัญชาตญาณจนถึงวิธีการจับผิด(หาข้อบกพร่อง) อย่างมีหลักการ โดยใช้หลักการที่สำคัญ 2 อย่าง
      • Black Box Testing - จับผิดจาก Functional โดยใช้ Bounary Value / Equivalent Class / Decision Table etc.
      • White Box Testing - จับผิดจาก Code โดยใช้วิธี Path Testing / Data Flow Testing
      • เสริมด้วยเทคนิคอื่นๆ อย่าง Special Value Testing, Random Testing จนถึงทดสอบการกลายพันธุ์ของ Code (Mutation Testing) ส่วนตัวชอบเรื่องนี้นะ เออคนทำเค้าคิดได้ไง
      • รู้ถึง Metric บางตัวที่ทำให้รู้สิ่งที่สนใจ เช่น Test มันครอบคลุมไหม (Coverage Metric)
    • รู้จักระบบของการทดสอบ จาก Unit Test ไปจนถึง Acceptance Test
      • มีบางอย่างที่ผมไม่ค่อยได้ยินด้วย เช่น Concept ของ Test Harness ที่ประกอบไปด้วย Driver กับ Stub ปกติจริงๆ แล้วผมได้ยินแต่ Stub (ซึ่งอยู่ในกลุ่มของ Test Double นะ)
    • และสุดท้าย มี Process ที่เกี่ยวกับด้าน Testing ด้วย ถ้าในมุมของผม Software Engineering จริงๆ มันมีส่วนนึง หรือเสี้ยวนึงที่เกี่ยวพันกับกระบวนการ(Process) ด้วยนะ
  • Seminar in Computer Engineering
    • วิชานี้สิ่งที่ทำกัน คือ การอ่านครับ นั่งอ่าน Paper และหาสิ่งที่ผู้เขียนต้องการสื่อภายใน Paper 6-10 หน้า ที่ย่อสรุปมาจาก Thesis/IS เล่มหนาๆครับ และมันมี Idea อะไรที่เราสามารถคิดอะไรได้เพิ่มได้บ้าง
    • จริงๆ วิชานี้ส่วนตัวน่าจะเรียนเทอมแรกมากกว่า เพราะมันให้เห็นภาพของการทำวิจัยมากขึ้น และอยากให้รุ่นพี่มาลองสิ่งที่เคยทำในคาบสั้นๆ น่าจะดีนะ ซึ่งตอนนี้ผมยังไม่ได้หัวข้อเลย T___T

หมายเหตุ: หากใครไปดูหลักสูตร มันเป็นวิชาของเทอม 1 นะครับ (พอดีผมเข้าเรียนตอนเทอม 2)
มาที่ข้อสอบบ้างดีกว่า ตอนนี้กลับมาสอบครบ 1 ปีและ เห็นอะไรหลายๆอย่างนะ สิ่งที่สำคัญ

  • แม้ว่าจะเตรียมตัวมาดีแค่ไหน แต่ที่สำคัญ คือ เวลา มันจำกัดแล้ว มันทำให้ทัศนวิสัย(มุมมอง) มันแคบลง อย่างมีนัยยะสำคัญ [ต้องมีสติ] สอบมาก็ตั้งแต่เด็ก แต่ทำไมเพิ่งมาสังเกตุตอน ป โท ได้นะ ตัวอย่าง เช่น
    • Testing - เวลาเหลือ ทวนไปทวนมา เอ้าลบคำตอบที่ถูกออก 5555
    • PM - ใช้เวลาแบบพอดี แต่ตอนสอบ Final หลังจากโดนหลอกด้วยตัวเองใน Testing คราวนี้เลยนั่งอ่านโจทย์อีกรอบ แล้วก็พอว่า คำถามที่ถูกผิด เราแก้เกินไปจากโจทย์ เข้าใจสาเหตุที่ได้ Mid-Term น้อยแล้ว
    • RE - คิดนานไม่ได้ ต้องตัดสินใจในคำตอบแรกครั้งเดียว
  • การติวสำคัญมาก แต่การติวจะมีประสิทธิภาพก็ต่อเมื่อ ทุกคนเตรียมตัวมาก่อนในระดับนึง (อัจฉริยะข้ามคืนก็สามารถสอบได้นะ แต่ส่วนใหญ่ที่เห็นหลังสอบจะลืมหมด) และก็การอ่านเองคนเดียว บางครั้งเรามักละเลยสิ่งที่สำคัญไป - ใครที่อยู่ใน SW Process อย่าง CMMI พบว่าการ Review ทำกันบ่อยมาก Review เหมือนการติวแหละ ติวว่า Product ที่ส่งให้ลูกค้า มันจะโอเคไหม มีอะไรที่ยังขาดไป หรือป่าว ?

ถัดมาเป็นเรื่องอาหารครับ

  • มีเมนูใหม่ๆมากขึ้น จากเทอมที่แล้วที่บ่นไปว่า มีแต่แกงเขียวหวาน-ลูกชิ้น...
  • เทอมนี้ของที่อร่อย มั่สมั่นไก่, เมนูกลุ่มยำ

    This slideshow requires JavaScript.

เทอมนี้สำหรับผมเป็นเทอมที่หนักหน่วงมากครับ เพราะ

  • เมื่อเติบโตขึ้น หน้าที่การทำงานรัดตัวมากขึ้น ทำให้เวลาที่มีในการเรียนน้อยลงด้วย
  • ต้องกลับมาสนใจสุขภาพมากขึ้น เพราะรู้แล้วว่าตัวเองมีไขมันพอกตับครับ บางครั้งถึงจุดที่ว่าอยากให้งานดีที่สุด หรืออยากจะแก้งานช่วงสุดท้าย แต่ผมขอเลือกร่างกายก่อน ซึ่งมันอาจจะส่งผลกับเกรดได้
  • อาจจะคิดผิดที่ลงเรียน 5 ตัวครับ เหนื่อยมากๆ เหมือนจะทำอะไร แล้วมันทำได้ไม่สุด
  • ถ้าเทียบเวลากับเทอมที่แล้ว เทอมนี้เวลาน้อยมากๆครับ กระชั้นด้วย
    • เทอมแรก - เปิดเทอมวันที่ 7 มกราคม พ.ศ. 2560 ปิดเทอม 22 พฤษภาคม พ.ศ. 2560 - 136 วัน
    • เทอมสอง - เปิดเทอมวันที่ 19 สิงหาคม พ.ศ. 2560 ปิดเทอม 16 ธันวาคม พ.ศ. 2560 - 120 วัน (ไม่ค่อยมีพวกวันหยุดเทศกาลด้วย)

ภาพรวมบ้าง

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

อื่นๆบ้าง

  • เปลี่ยนสายรถเมล์หลักจากสาย149 / 177 ที่หลังๆคนเยอะขึ้น ขึ้นทีไรคนเต็มรถไปหมด มาเป็นสาย 57 แทนในช่วงหลังสอบ Mid-Term เพราะมันสงบดี คนน้อย ได้ที่นั่งตลอด ได้เวลาในการอ่านหนังสือเพิ่ม
  • เวลามีเท่าเดิม แต่ต้องเลือกเน้นบาง สิ่งที่พลาดในเทอมนี้ คือ พยายามทำงานประจำ และงานกลุ่มในชั้นเรียนใช้ดีที่สุดจนละเลยเรื่องการหาอาจารย์ที่ปรึกษาของ Master Project
  • รู้สึกเวลาหายไปเยอะมาก จนถึงลืมจ่ายตังค์โน้นนี่ หรือเคสล่าสุดลืม Unsubscription ตัว pluralsight เลยตังค์ยาวๆไป 5 เดือน ถ้าไม่มาไล่ดูรายจ่ายนี่อาจจะไม่รู้ไปอีกหลายเดือน

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