Description
ในการออกแบบซอฟต์แวร์ขนาดใหญ่ในองค์กร มักจะมีการทำงานร่วมกันโดยคนจำนวนมาก หากเราต่างคนต่างเขียนซอฟต์แวร์ไปในทางที่ตัวเองเห็นว่าดี ซอฟต์แวร์ที่แต่ละคนทำก็อาจจะทำงานร่วมกันไม่ได้หรือมีปัญหาตอนที่ Integrate เป็น Solution ใหญ่
ดังนั้น การทำซอฟต์แวร์ในระดับนั้นจึงจำเป็นต้องมีการแบ่งสันปันส่วน และมีการออกแบบโครงสร้างเพื่อให้ทำงานร่วมกันได้ดีและมองเห็นภาพรวมไปในทางเดียวกัน ทั้งระหว่างนักพัฒนาในทีมพัฒนากันเอง และระหว่างทีมพัฒนาและทีมธุรกิจ รวมไปถึงทีมอื่นๆที่เกี่ยวข้อง นอกจากนี้หลังพัฒนาเสร็จยังต้องสามารถดูแลต่อได้ทั้งงานซัพพอร์ต แก้ไขปัญหาบั๊ก และการพัฒนาต่อยอดเพิ่มเติมได้ในอนาคต
ในคอร์สนี้เราจะพูดถึง Software Architecture Pattern พื้นฐานที่นิยมใช้ในการออกแบบซอฟต์แวร์ขนาดใหญ่ โดยเน้นไปที่เรื่องของรูปแบบการร่วมมือ (Collaboration Pattern) ต่างๆ ตั้งแต่
- Specialist Collaboration การออกแบบโครงสร้างทำงานร่วมกันของทีม Software Developer หลากหลายส่วน เช่น Frontend, Backend, Database และส่วนอื่นๆ เป็นต้น
- Business Collaboration การออกแบบโครงสร้างล้อไปตาม Business model ขององค์กร
- Organization Collaboration การออกแบบโครงสร้างสำหรับองค์กรขนาดใหญ่ที่มีหลายทีมทำงานร่วมกันโดยไม่ขัดแย้งกัน
โดยพูดถึง ข้อดี-ข้อเสีย ประโยชน์และจุดประสงค์ของแต่ละ Pattern เพื่อให้ผู้เรียนเข้าใจหลักการของแต่ละแบบ และสามารถนำไปเลือกใช้ได้ตรงกับงานและโมเดลขององค์กรได้ ประกอบการสอนด้วยวิดีโอการจำลองสถานการณ์ที่เกิดขึ้นในการทำงานจริง และ Case Study ต่างๆ แทรกประกอบตลอดบทเรียน
คอร์สนี้เหมาะสำหรับ
- นักพัฒนาซอฟต์แวร์ที่ต้องการเข้าใจพื้นฐานการพัฒนาซอฟต์แวร์ขนาดใหญ่ที่ต้องทำงานร่วมกันเป็นทีม
- นักพัฒนาที่กำลังผันตัวไปเป็น Software Architect
- นักพัฒนาซอฟต์แวร์ในองค์กรขนาดใหญ่
- Software architect ที่ต้องการกลับมาเข้าใจพื้นฐานการออกแบบและที่มาที่ไปของ Pattern เหล่านี้อีกครั้งหนึ่ง
รายละเอียดเพิ่มเติม
ในคอร์สนี้จะเน้นเรื่องทฤษฎีและการออกแบบ อาจจะมีโค้ดเพียงเล็กน้อยและถ้ามีจะเขียนในภาษา Java และคอร์สนี้จะเน้นการออกแบบพัฒนาส่วนของ Backend เป็นหลัก
ความรู้ที่ต้องมี
- สามารถเขียนโปรแกรมได้
- เข้าใจหลักการ OOP พื้นฐาน (สามารถเรียนรู้เพิ่มเติมได้ที่นี่)
- หากเคยมีประสบการณ์พัฒนาซอฟต์แวร์เป็นทีมจะเข้าใจได้ง่ายขึ้น แต่ถ้าไม่มีคอร์สนี้จะช่วยผู้เรียนให้เห็นภาพการทำงานเป็นทีมได้ชัดเจนมากยิ่งขึ้น