[KBTG-GO] แบ่งปันประสบการณ์งาน Go Intensive Workshop (11-12 May 2024)

สำหรับ Blog ตอนนี้ อยากบอกอย่างแรกเลยว่า ถ้าจัดที่เมืองทอง น่าจะเทตั้งแต่แรก 555 ผมน่าจะได้ออกจากบ้าน ตี 5.45-6 โมง ถ้านั่งรถสาธารณะไปนะ แต่โชดีที่จัดที่ตรงสามย่าน เดินทางสะดวกครับ และได้กลับไปแถวจุฬาฯด้วย หลังจากจบ ป โท มาแล้วหลายปีเลย

ถามว่าผมรู้จักกิจกรรมนี้ได้ยังไง อันนี้ผมเองได้ข่าวจากเพื่อนที่เรียน Cloud Camp ครับ เลยลอง ลงตามมาด้วย เพราะเห็นว่าภาษา Go ช่วงนี้เป็นที่แนะนำกันตาม Social ครับ เลยลองมาดู ลงทันด้วย ตอนลงทะเบียนน่าจะช่วง Dec 2023 เริ่มเรียนจริงๆ Feb 2024 ครับ (ถ้าไม่มีเมล์มาเตือน ผมแอบลืมเหมือนกัน)

รูปแบบการเรียน

ช่วงแรก การเรียนผ่าน E-Learning ของทาง  (On KLIX by KMITL) และมี post test ให้ลองทำ โดยมีทีมงานสอนหลักๆ มี คุณเอ๊าะ / คุณหน่อง / คุณวี / คุณต๋อง และคุณตุ๊กตาประสานงาน กิจกรรมต่างๆครับ

หัวข้อที่เรียนจะประมาณนี้ครับ มี Blog ไว้ น่าจะครบแหละ

ในทุกสัปดาห์ น่าจะวันพฤหัสนะ ถ้าไม่หลงวัน จะมี Zoom Meeting โดยทางทีมงานของ KBTG เข้ามา Coaching หรือ ตอบคำถามที่ได้ถามๆกันใน Discord โดยระหว่างนี้จะมี fun-ex (fun-exercise) มาให้ลองทำ น่าจะมี 2 อันนะ อันแรกเกี่ยวกับการใช้ Git อันนี้เทไป และ อันที่สองซ้อมมือทำ API จริงๆ อันนี้ลองทำจริง

เมื่อเรียนครบทุก Week เรียนไม่ครบก็ได้ ทางทีมงาน มีข้อสอบ Post Test มาลองให้ทำกันครับ ว่าเราเข้าใจในเรื่องที่เรียนมาแค่ไหน เขียน Code แหละ แต่มีบางอันที่งงๆ

  • ใช้ go fmt / go vet คำตอบให้ไปใส่ใน pre-commit ใช้ไหม ส่วนตัวเคยเสนอที่ บ ใช้ git pre hook แต่ส่วนใหญ่ไม่เอากันเลยตกไป
  • หลายเรื่องก็หนี 55 อยากแบบ ทำ sql mock ตอนแรก search เจอว่ามันทำท่านี้ได้ แต่ไม่ค่อยเข้าใจ แต่เหมือนจะหนีไม่พ้น

ถ้าใครผ่านเกณฑ์ คัดจาก 200 คน เหลือ 70 คน จะได้เข้ามาทำ Workshop Onsite ครับ ที่ผมเกริ่นๆไว้ตอนต้น Blog ถ้าจัดเมื่องทอง ไม่น่าจะได้ไปแน่ๆ

Go Intensive Workshop (11-12 May 2024)

ผมจองเวลาสะดวกวันนี้แหละ แต่ทว่าคืนวันที่ 10 มีเรื่องที่ต้องให้ไม่ได้นอน Code Merge ไปกัน หาย เลยต้องมาหากันหายไปทำไม แล้วพอหายไป Test พังระนาวด้วย วันที่ 11 เลยมางานแบบมืนๆ เลย

- วันแรก

ช่วงเช้ามีกิจกรรม ice breaking ละลายพฤติกรรมนิดหน่อย ทำความรู้จักกันแหละ ก็ได้เจอหลายคน บางคนย้ายสายมามีตั้งแต่จบใหม่ ทำงานมาแล้ว ทำงานมา 10 ปีแบบผม หรือมากกว่านั้นก็มีนะ

และมีอธิบาย ว่าใช้อะไรบ้าง

  • อธิบาย Tools ส่วนที่เราเกี่ยวนิดหน่อย เตรียมมาให้แล้ว อาทิ เช่น
    - Git
    - SonarQube ตัว Quality ของ Code + Security
    - GitHub Action มีอธิบาย
    Flow Dev Auto มี Quality Gate ดักไว้ Test > Sonar > Pack Container > Deploy Dev
    ส่วน Prod เอาขึ้นมาต้องมี Approve / บอก Hash Commit น่าจะของ Container เพื่อมา retag > deploy ต่อ
    - Container / K8S ระบบเราที่มาทำเกิด แก่ เจ็บตายวนในนี้แหละ
    - Terraform (Infra) สร้าง Infra ของระบบ เช่น Resource บน Cloud
    - Cloud AWS EKS / RDS
    แล้วที่นี้จะเอา IaC Terraform มาสร้าง Enviroment ของ Develop และ Prod ขึ้นมา
ภาพรวม Pipeline CI / CD
ก่อนจะ Deploy Prod จะมี Check List นิดหน่อยครับ
  • ส่วน Business Requirement ที่ต้องลุย เขียน API ขึ้นมา + Test + Postgres นิดหน่อย เป็นระบบที่มีชื่อขึ้นอยู่ในช่วงนี้ เหมียวๆ และที่สำคัญ Git ใช้แบบ Trunk Base มี Branch เดียว แต่ก็ต้องมี Test //ย้ำไว้ก่อน
พอ Enviroment เรียบร้อย เราพร้อมทำงานครับ เวลา Commit Push มีแต่ละ Quality Gate ช่วยตรวจความเรียบร้อย ก่อน Deploy
API ที่ทำครับตัว HongJot ส่วนที่วงเลย
- วันสอง

มาลองโจทย์ต่อและ และเขียน Code จริง เป็นช่วงแห่งประชุมเพลิง เพราะเราวางแผนไม่ดี เลยทำให้ Code แต่ละ End Points มันชนกัน ใช้ Struct ซ้ำ หรือมี Logic ยังร่วมได้อีก ทำ command พวกนี้วนๆไป

git pull -r origin main
#Fixed + Rerun Test
git add <file>
git commit ...

git rebase --continue 

หลังจากนั้นใครเอาอะไรขึ้นก็ประกาศกันทั้งโต๊ะ และอีกเรื่องที่ผมรู้สึกบาป ในงานนั้นมันใช้ตัว goose DB Migrate Tools ของ Go น่าจะเทียบเท่า flyway / dotnet ef migrate แต่ด้วยความมืนของผม ไปแก้ SQL เดิม จะเจอปัญหา Classic เครื่องตัวเองผ่าน แต่ Env Dev พัง ต้องขอโทษน้องด้วย วางยาไว้

อีกอันแบบที่ผมเคยเกริ่นไปในตอนทำ Post Test มันมี sql mock แต่ไม่ใช้ ตัวอย่างใช้ หนีไม่พ้น แต่พอจะมันจะเกินปัญหาต่อะ เพราะถ้าไปดู Code Handler แต่ละคู่ที่ Pair กัน ไปคนละทางเลย เออใช่ลืมอันนี้ด้วย เค้ามีให้ Pair Programming ผมมันดีมากนะ อย่างวันแรก ผมเบลอๆ ได้น้องเค้าด้วย ไม่งั้นงงกว่าเดิม มีคนช่วยตรวจ

แต่สุดท้ายหนีไปก็ไม่พ้น เราโดน Sonar ขวางไว้ เลยต้องทำอยู่ดี SQL Mock หนียังไงไม่พ้น อาจจะมีทางถ้าไปท่า Integration และให้มีนสร้าง coverage ไป sonar

ระหว่างวันนี้มี Senior ของทาง KBTG เข้าแนะนำว่าที่นี้ Adapt Go ยังไง รวมพวกสายงานต่างๆในนี้ ว่าจะมีแบบไหน ขยับเติบโตไปยังไง เป็นต้น

ช่วงท้ายมี present เป็นการ rotate ไปในแต่ละกลุ่ม มันทำเห็นว่าคนอื่นคิดยังไง เจออะไรบ้าง แก้ปัญหายังไง มีกลุ่มที่ไม่เจอ Conflict ด้วยนะ ลองถามๆ Idea กัน ส่วนเราขาย Rest Client แถมไป

ปิดท้ายทีมงาน มีสรุปโดยคุณหน่อง (คิดว่าอายุน่าจะใกล้กันนะ) ว่า Go มันสุดยอดยังไง ที่ผมชอบนะ แนวมันเรียบง่ายดีนะ ดูไม่ต้องเยอะ และอื่นๆ

  • Git อย่างมองเป็น Tools มันเป็นวิธีการสื่อสาร ถ้ามัน Align ไปด้วยกัน ไม่ว่าจะท่าไหน มันจะมีประสิทธิภาพดีที่สุด
  • pre-commit ช่วยทำทุกออย่างเป็นระบบ มีด่าน
    - commit test local / format code new line
    - push integration test
  • API Design by Usage ตอนแรก ผมมาเลย ไป Model ก่อน แล้วค่อยมา Req / Response มันอาจจะทำให้เรายึดติด Design ได้
  • Testing มันทำได้ทุก Level Unit > Integration > E2E รวมพวก Lib SQL Mock แม้ว่าผมเหมือนจะโดนมันวางยา 5555 แต่เห็นภาพ มันจับจาก Query ถ้า pattern ตามนี้ยัดที่ mock ออกไป เป็นท่าที่ผมไม่เคยทำเลยของใหม่

อีกอันนึงเกี่ยวกับ Test ตัวอย่างที่เข้าใจง่าย Dev 5 คน Sprint คนละ Feature แต่ละรอบได้ทีละ 5 Feature
แล้ว QA รอบแรก 5 / รอบ 2 - 10 / รอบ 5 - 25 แล้ว และจะ Regression Test ยังไงไหว มันเลยเป็นที่มาของ Shift Left ให้ Dev ลองแบ่งกันทำ Unit Test จะช่วยเสริมตรงนี้

จาก Quote ข้างบน บ ผมดูเหมือนจะเป็นปัญหามาก เพราะ ผมดัน Unit Test ใน บ แล้วบางส่วนจะมองว่า เราไปแย่งงาน QA เผื่อเค้ามาเห็นเรื่องนี้จะเปลี่ยนความคิดบ้างนะ
  • ลอง Reflect ตัวเองด้วย
  • ตอนนี้เรา programming (ทำตามที่สั่งมา) หรือ software engineering (ทำแล้ว เอ๊ะ รู้รอบระดับนึง Tech / Biz / Communication เป็นต้น) ?
  • อย่ารักษาภาษาใดภาษาหนึ่งมากเกินไป ให้ core แนวคิดของ ภาษา จะได้เอามา adapt ได้

อ๋อสำหรับรุ่น 2 อย่าลืม Setup Tools มาก่อนนะ ตัว make จะ download นานอยู่ 

Blog ท่านอื่นๆ

ปิดท้ายด้วยของกินและกัน อร่อยดี โดยเฉพาะข้าวมันไก่ / ขนมปังสังขยา แอร์หนาวมาก น่าจะฝนตกด้วยแหละ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.