หลังจาก Blog ที่แล้ว ที่ฮิโตะคาเงะได้ออกเดินทางไปกับผม โดย UX อย่างผมมาเริ่มเขียน Angular ง่อยๆ เลยอยากจะมาแชร์วิธีการทำงานเป็นทีมที่ผมและทีมได้ทำการลองทำ ซึ่งผลลัพธ์ออกมาค่อนข้างดี เผื่อว่าจะมีใครไปทำตามบ้าง ไม่หวงนะครับ เราจะไม่สู้กับโปเกมอนหัวหน้า(ยิม) ไปคนเดียว
ก่อนอื่น ผมตั้งโจทย์กับทีมว่า เราต้องทำยังไงก็ได้ โดยมีข้อกำหนดด้านล่างนี้
- ห้ามแตก Branch โดยเด็ดขาด
- ห้ามให้ git แตกไปเกินกว่า 3 เส้น ต้องอยู่ใน เส้นเดียวให้ได้
- commit แล้ว โค้ดห้ามหาย แม้มีทีมงานเพิ่มก็ตาม
- สามารถย้อนกลับมาที่ Production ล่าสุดได้เสมอ
หลังจากที่ต้องโจทย์แล้วก็ลองคิดหาวิธีว่า เราจะทำยังไงกันได้บ้าง
- เมื่อ Angular เป็น MVC เราจะสามารถแยก MVC ออกจากกันได้ไหม?
- ทีมต้องมีขึ้นต่ำ 3 คน
- แบ่งหน้าที่กันว่า ใครรับผิดชอบ M V หรือ C
- ต้องพูดคุยและทำความเข้าใจกันอยู่เสมอ ว่ากำลังแก้อะไรกันอยู่ ไม่ให้กระทบกัน
- Setup ครั้งแรกต้องแยกทุกอย่างออกจากกันให้หมด
- หมั่น fetch และ pull อยู่เสมอ ก่อนเขียนโปรแกรม และ commit ต้องคอยคุยกัน
สรุป จากการทดลองวิธีนี้หลายๆ โปรเจค
ข้อดี
- UX ได้โฟกัสที่ HTML CSS หน้าตาอย่างที่อยากจะได้ และตอบโจทย์
- C หรือ Logic จากการ Design เข้าใจตรงกัน เพราะ HTML สามารถกดเล่นและอธิบายได้ตั้งแต่แรก
- คนที่รับผิดชอบ M จะเป็นคนเดียวที่ไปคุยกับ API ทำให้การสื่อสารไม่ผิดพลาด
- UX อย่างผมได้โฟกัสเรื่องการตอบโจทย์การใช้งานได้และแสดงผลถูกต้องตรงตามที่ต้องการ
- รู้ข้อจำกัดของ Design ในเชิง Technical มากขึ้น
- ประหยัดเวลาในการทำงานมากขึ้น ทำให้มีเวลาไปทำการ research มากขึ้น
- ทีมทำงานกันสนุกมากสนานมากขึ้น และสามารถเสร็จตามเวลาได้
- Css ไม่ conflict กัน เพราะทำคนเดียว
ข้อเสีย ( ทุกอย่างไม่ได้ดีทั้งหมด เน๊อะ )
- การ Set up Project ครั้งแรกใช้เวลาค่อนข้างนานนิดหน่อย แต่สามารถทำ template starter ไว้ได้
- การเขียนโปรแกรมเราจะเก่งด้านเดียว เช่น ทำ View จะได้เชิง Design, ทำ Controller จะได้ Logic, ทำ Model จะได้ Api และการเชื่อมต่อจัดการต่างๆ
- หากหายไปคนใดคนหนึ่งก็ทำงานกันค่อนข้างลำบากและช้าลง
หมายเหตุ : วิธีนี้เป็นวิธีการใช้งานรูปแบบนึงของ Angular ( ฮิโตะคาเงะของผม ) หวังว่าจะเป็นประโยชน์กับผู้เริ่มต้น หรือ อยากเริ่มต้นเขียนโปรแกรม
แนะนำเพิ่มเติม : front-end ปัจจุบันเหมือนรวมกันแล้วหลายสกิล ไม่ว่าจะเป็น Design, Logic, API ทำให้บางครั้งเราถนัดในแง่มุมต่างๆไม่เหมือนกัน เช่น ทำ Design ได้เร็ว แต่ทำ Logic ได้ช้า เป็นต้น
ขอบคุณที่ติดตามครับ
Trainer a0fzide