ใครไม่ Design… Software Design...

Nuchit Atjanawat
4 min readMay 19, 2024

--

KBTG Go Software Engineering Bootcamp #2
หลักสูตรนี้ ไม่ได้มุ่งเน้นการพัฒนาทักษะและความรู้ในการเป็น GO Software Engineer ภายใน 7 สัปดาห์…เท่านั้น แต่…

เป็นการเรียนรู้ การพัฒนาซอฟพ์แวร์ ในรูปแบบใหม่ (Modern Enterprise application development software technology)

โดยประกอบไปด้วย:

  1. 6 Coaching Sessions — การให้คำแนะนำและการติดตามความก้าวหน้าอย่างใกล้ชิด…ในทุกสัปดาห์ … วันพฤหัสน…
    จะมี Zoom Meeting โดยทีมงานของ KBTG เข้ามา Coaching และคอยตอบคำถามที่ได้ถามๆ กันใน Discord…
    โดยระหว่างเรียนจบแต่ละเรื่อง …จะมี fun-ex (fun-exercise) มาให้ลองทำกัน…
    …เมื่อเรียนครบทุก Week …(จบการเรียนออนไลน์)
    …จะมีข้อสอบ Post Test ให้ทำจริง
    …โดยทางทีมงาน จะคัดประมาณ 80 ผลงานไป…Intensive Workshop ต่อไป…
  2. 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 คนที่เหลือ เวียนไปฟังทีอื่นนำเสนอ … แล้วซักถาม สิ่งที่ได้เรียน, ปัญหาที่เจอ แล้วก็ถาม-ตอบแชร์ ความรู้กันและกัน

ขั้นตอนถัดไป

วางแผนใช้ทักษะที่ได้รับจากเวิร์กชอปเพื่อพัฒนาตนเองต่อไป…
จำภาพใหญ่ … เชื่อมต่อจุด …

จบบริบูรณ์

นุชิตะ อะจะโน๊ะ

--

--