ใครไม่ Design… Software Design...
KBTG Go Software Engineering Bootcamp #2
หลักสูตรนี้ ไม่ได้มุ่งเน้นการพัฒนาทักษะและความรู้ในการเป็น GO Software Engineer ภายใน 7 สัปดาห์…เท่านั้น แต่…
เป็นการเรียนรู้ การพัฒนาซอฟพ์แวร์ ในรูปแบบใหม่ (Modern Enterprise application development software technology)
โดยประกอบไปด้วย:
- 6 Coaching Sessions — การให้คำแนะนำและการติดตามความก้าวหน้าอย่างใกล้ชิด…ในทุกสัปดาห์ … วันพฤหัสน…
จะมี Zoom Meeting โดยทีมงานของ KBTG เข้ามา Coaching และคอยตอบคำถามที่ได้ถามๆ กันใน Discord…
โดยระหว่างเรียนจบแต่ละเรื่อง …จะมี fun-ex (fun-exercise) มาให้ลองทำกัน…
…เมื่อเรียนครบทุก Week …(จบการเรียนออนไลน์)
…จะมีข้อสอบ Post Test ให้ทำจริง
…โดยทางทีมงาน จะคัดประมาณ 80 ผลงานไป…Intensive Workshop ต่อไป… - 2 วันเต็มกับ Intensive Workshop — การเรียนรู้และปฏิบัติจริงในเชิงลึก
โดยรอบนี้ จะคัด คนจาก 200 คน เข้าไป Intensive Workshop
เป็นรอบของการอัดเนื้อหา แน่นๆ ของจริง … ไม่ใช่แค่เรียนภาษา GO
แต่เป็นการเรียนรู้ การพัฒนาซอฟพ์แวร์ ในรูปแบบใหม่ (Modern Enterprise application development software technology)
… โดยอาจารย…เน้นย้ำว่า …
… อาจารย์ ไม่คาดหวังให้เราเขียน Code GO เก่ง ภายใน 2 วัน …
… เนื่องจากการเขียน Code เราต้องให้เวลาในการฝึกฝน…
… แต่อาจารย์อยากให้ให้เราเก็บแนวคิด… การพัฒนาซอฟต์แวร์รูปแบบใหม่นี้
… ไปต่อยอด ไปเรียนรู้ต่อได้ …เชื่อมจุด…ต่อจุด…ให้เป็น …
… สงสัย แต่อย่าลงลึก … (เพราะจะลงนรก…อาจารย์ยิงมุก)
… ตั้งแต่เขียน Code … เขียน UnitTest…การ commite …การทำ CI/CD…, Software Quality….
… Technology ในแต่ละจุดสัมพันธ์กันอย่างไร…อย่าลงลึก …
… อาจารย์ให้ทำสมองเบลอๆ…แล้วจำภาพใหญ่ไว้ … แล้วให้เราไปต่อยอด …
… เพราะ Engineering ไม่ใช่ เขียน Code แล้วจบ … แต่…
… แต่ Engineering ต้องรับผิดชอบต่อ Code ของตัวเอง…ตลอดเส้นทางของการพัฒนา ไปจนถึง การส่งมอบ ซอฟต์แวร์ ที่มีคุณภาพให้ผู้ใช้งาน เพื่อตอบสนอง ธุรกิจต่อไป…นั่นคือสิ่งที่ บริษัทจ้างเรามาแก้ปัญหา…
… โดยสามารถ ตรวจสอบ คุณภาพในทุกขั้นตอนการพัฒนา ได้ …
… ฉะนั้น เรื่องยาก จึงไม่ใช่ การเขียน Code … แต่ …
… แต่เป็นการตรวจสอบ คุณภาพของ Code ที่เราเขียน …
… Intensive Workshop … ว้าวจริง …
เนื้อหาต่างๆ ในหลักสูตร:
- Version Control: เรียนรู้แนวคิดสำคัญในการทำงานเป็นทีมและการจัดการโค้ดอย่างมีประสิทธิภาพ…
- Software Quality: การเขียน Unit Test เพื่อรับผิดชอบต่อคุณภาพของโค้ด…
- API Design: การสร้างและออกแบบ API รวมถึงหัวข้อที่สำคัญ เช่น HTTP Foundation, การเชื่อมต่อฐานข้อมูล (SQL, GORM, Mongo), และการใช้ Middleware Pattern ในการเขียนโค้ด…
- DevOps: การสร้าง Container และ CI/CD Pipeline เพื่อให้สามารถ deploy software ออกสู่ตลาดได้อย่างรวดเร็วและมีประสิทธิภาพ…
- Refactoring with GO: การลด Technical Debt และดูแลรักษาโค้ด โดยเรียนรู้ว่าเมื่อไหร่และอย่างไรที่จะทำการ Refactor…
…
ใคร ไม่ Design …
Software Design … (อาจารย์วี กล่าวไว้)
…
Error 400 … เป็นเรื่องของ Client
แต่ Error 500 … เป็นโจร…(อาจารย์หน่อง กล่าวไว้)
อาจารย์สอนสนุกมาก
ยิงมุกตลอดระหว่างเรียน…
Video หลักสูตร ออนไลน์…
ผมดู ด้วยความเร็ว x2 ดูได้หลายรอบ…
2 วันเต็มกับ Intensive Workshop
Intensive Workshop… 18–19/05/2024 (รอบของกลุ่ม2)
ณ อาคาร K+ Building สามย่าน
ทำความความรู้จักกัน
วันแรก…ช่วงเช้า…
ทำความความรู้จักกัน …
โดยเล่าเรื่องของตัวเอง ให้เพื่อนในกลุ่มฟัง…
ใครเล่าเรื่องน่าสนใจที่สุด…
จะถูกเพื่อนเชิญไปเล่าหน้าชั้น…
จากนั้นเข้าสู่ของจริง …
อาจารย์ … อยากให้ทำสมองเบลอๆ …
สงสัยอย่าลงลึก…
ให้จำภาพใหญ่ … จำสิ่งที่จะไปเรียนรู้ต่อ …
… จงเรียนรู้…วิธีการเรียนรู้…ที่ถูกต้อง…
จำวิธีการเรียนรู้ที่ถูกต้อง …เพราะทุกวันนี้เทคโนโลยีมันเปลี่ยนเร็ว ….
Modern tech stacks
Infrastructure as Code:IaC…
เราสามารถ สร้างระบบ Infrastructure ด้วยการเขียน Code ครับทุกคน…
เราทำสมองเบลอๆ แล้ว จำภาพ … Infrastructure as Code …
เมื่อ Sesion IaC ผ่านไป…
จะเป็นช่วงของการสร้างของ (Develop) …
Dev จะสร้างของ…อะไรบางอย่างขึ้นมา …
จะต้องมีความต้องการจากฝ่ายธุรกิจ(business) …
โดยความต้องการทางธุรกิจ…นั้นมีหลากหลายมาก…
จนฝ่ายธุรกิจ และ Dev นั้น คุยกันไม่รู้เรื่อง
หลายๆ บริษัทจึงตั้งคนคนหนึ่งขึ้นมา เป็นคนย่อยความต้องการเหล่านั้น
แล้วทำให้ Dev และ business เห็นภาพ เดียวกัน นั่นคือ PO: Product owner หรือ Domain Expert หรือ Business Team … ในที่นี้เราเรียก PO
…
ช่วงรับ Requirement จาก PO
ช่วงวางแผน…
เราก็เอา Requirement … มาวิเคราะห์ … จัดกลุ่มก้อน …
แตกงาน …แล้วแบ่งกันทำ…
โดยวิธี Pair Programming … 2 คน…ใน 1 เครื่อง …
คนหนึ่งจับคีย์บอร์ด…คนหนึ่งจับเมาส์…
หมดเวลา….
ในโลกความเป็นจริง…
ไม่เคยมี Project ใหน … มีเวลาพอ…
ฉะนั้น เราต้อง Strong พอ
กล้าฟันธง…
พี่… ถ้าพี่จะเอาแบบนี้… ไม่ได้ครับ…
… ถ้าแบบนี้ … พี่จะได้แบบนี้ครับ …
ท้ายสุด…
เป็นการนำเสนอ สิ่งที่ทีม ได้เรียนรู้ และ ไปเรียนรู้จากทีมอื่น…โดยแบ่งหน้าที่กัน…
2 คน คอยนำเสนอ 4–5 คนที่เหลือ ไปฟังทีมอื่นนำเสนอ แล้วแลกเปลี่ยน ความรู้ระหว่างกัน…
…
สิ่งที่ได้เรียนรู้ จาก Bootcamp
- การทำงานร่วมกันในทีมเป็นกุญแจสำคัญ
- การสื่อสารและขอคำติชมจากเพื่อนร่วมทีมมีความสำคัญมาก
- ได้รับความรู้เกี่ยวกับเทคนิควิศวกรรมซอฟต์แวร์, การตั้งค่าโครงสร้างพื้นฐานซอฟต์แวร์, การเขียนโปรแกรมคู่(Pair Programming) , และการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ (TDD),CI/CD, Quality Gate,…
ช่วงแรกๆ ของการ Setup Project … ติดขัดไปหมด …
แต่เมื่อ Commit แรก … push ได้สำเร็จ … deploy ได้ …
ชีวิต Dev ต่อจากนี้ … จะเป็นเรื่องง่าย …
กิจกรรมลงมือปฏิบัติ
- ทำความเข้าใจความต้องการ และการวางแผนทางธุรกิจ: อาจารย์ นำเสนอข้อกำหนดทางธุรกิจ และให้ทีมวางแผนการสร้าง Product ที่มีคุณภาพ มีขั้นตอน ทำอย่างไร
- การ Pair Programming: ทุกกลุ่มทำการ Pair Programming โดยสลับหมุนเวียน กันในกลุ่ม
- มีการซิงค์กันรายวัน: ช่วงเช้าวันที่ 2 มีการรายงานสั้นๆ เมื่อวานเราทำอะไรไป? ติดปัญหาอะไร? และวางแผนสิ่งที่จะทำในวันนี้… โดยเล่าให้เพื่อนฟัง แล้วเปลี่ยนคู่ Pair Programming
- สุดท้าย… ท้ายสุด… มี Code Review : โดยแต่ละทีมมีโอกาสนำเสนอความคืบหน้าของ Project และเรียนรู้จากกลุ่มอื่น โดย 2 คน คอย Present อยู่ที่กลุ่ม ตัวเอง … 4–5 คนที่เหลือ เวียนไปฟังทีอื่นนำเสนอ … แล้วซักถาม สิ่งที่ได้เรียน, ปัญหาที่เจอ แล้วก็ถาม-ตอบแชร์ ความรู้กันและกัน
ขั้นตอนถัดไป
วางแผนใช้ทักษะที่ได้รับจากเวิร์กชอปเพื่อพัฒนาตนเองต่อไป…
จำภาพใหญ่ … เชื่อมต่อจุด …
จบบริบูรณ์
นุชิตะ อะจะโน๊ะ