อ่านเจอบทความเรื่อง Engineering Rotation ของ Etsy.com แล้วมันสนุกมากๆ
ว่าด้วยเรื่อง
การเขียน code และการ deploy ระบบงานที่ Etsy.com นั้น
ไม่ใช่ทำได้เพียงฝั่ง engineer เท่านั้น
แต่ทาง designer และ product manager จะต้องสามารถทำได้ด้วย
อ่านมาถึงตรงนี้ก็สนุกแล้ว
เลยเอามาแปล และ สรุปดีกว่า
ที่ Etsy.com นั้นจะมีโปรแกรมที่ชื่อว่า Engineer Rotation
เปิดให้ทางพนักงานในบริษัทลงทะเบียนเพื่อเข้ามาร่วม
โดยสิ่งที่จะได้ทำประกอบไปด้วย
- การเขียน code จริงๆ ของระบบจริง กับ engineer
- การ deploy code ขึ้น production จริงๆ ผ่านระบบที่สร้างไว้
ในปีที่ผ่านมามีพนักงานกว่า 70 คน เข้าร่วม และผ่านโปรแกรมนี้ไปแล้ว
ดังนั้น มาดูกันว่าทำไมทาง Etsy.com ถึงสร้างโปรแกรม Engineer Rotation ขึ้นมา ?
Engineer Rotation คืออะไร และ สำคัญอย่างไร ?
ในปี 2010 นั้น
ในทุกๆ quater พนักงานทุกๆ คน ไม่เว้นแม้แต่ CEO ต้องมาทำ Support Rotation
โดยในแต่ละวันต้องมาทำส่วนนี้ประมาณ 2 ชั่วโมง
เพื่อตอบคำถาม แก้ไขปัญหา จากทางผู้ใช้งาน
เพื่อช่วยเหลือผู้ใช้งาน และ Operation team ด้วย
โดยวิธีการนี้ ทำให้พนักงานแต่ละทีม แต่ละฝ่าย
ได้พูดคุย ทำความรู้จัก และเข้าใจว่าฝั่ง Operation team ต้องรับมือกับอะไรบ้าง
และมันทำให้พนักงานรู้และเข้าใจว่า ผุ้ใช้งานจริงๆ ต้องการอะไร
และระบบที่พัฒนากันนั้นมันยังขาดอะไรบ้าง
จากการทำงานแบบนี้ ทาง Etsy.com จึงคิดว่า
ทำไมเราไม่เอาแนวคิดนี้มาทำกับฝ่าย engineer บ้างล่ะ น่าจะดีไม่น้อยนะ ?
ลองคิดดูว่า
ถ้าคนที่ไม่ได้อยู่ในฝ่าย engineer
เจียดเวลามาเรียนรู้ว่าทีมพัฒนาระบบอย่างไร
ว่าทีม deploy ระบบอย่างไร
ว่าทีมต้องทำงานอะไรบ้าง
และให้คนที่ไม่มีความรู้ทาง technical เลย
มาลองเขียน code และ deploy ภายในไม่กี่ชั่วโมง
มันน่าจะทำให้เห็นสิ่งที่ทีมกำลังทำได้ดีขึ้นเยอะนะ !!
Engineer Rotation มีรูปแบบอย่างไร ?
แบ่งออกเป็น 3 ส่วน คือ
- การบ้าน
- เรียน
- ลงมือ deploy
โดย code ที่ทางพนักงานที่เข้าร่วม
เมื่อทำการแก้ไขแล้ว จะถูก deploy
ซึ่งจะทำการเพิ่มรูปของพนักงานคนนั้นไปยังระบบจริงๆด้วย
ก่อนที่จะเริ่มเรียนนั้น จะให้การบ้านเพื่อเตรียมตัวก่อน
ซึ่งจะต้องเรียนเรื่องต่างๆ ผ่าน course online เช่น
- HTML level 1 และ 2 จาก Code Academy
- Unix command 101
- แนะนำให้อ่านบทความเรื่อง How the Web Work – In one easy lesson
- ให้อ่าน และ ติดตามสิ่งที่ Etsy Blog เพื่อดูว่าสิ่งที่ engineer ทำคืออะไร เป็นอย่างไร
- รวมทั้งการแก้ไขปัญหาต่างๆ ด้วย เช่น Blameless post-mortems
เมื่อเข้ามาเรียนจริงๆ จะมีการเรียนการสอนอีก 5 section ประกอบไปด้วย
- อธิบายเกี่ยวกับ How the web work เพื่ออธิบายว่าที่ Etsy ทำงานอย่างไร
- แนะนำ และ อธิบายเรื่อง 3-tiers architecture โดยยกตัวอย่างการทำงานของระบบจริง
- อธิบายรายละเอียดเชิงลึกในเรื่อง Database Sharding ว่าทำไมต้องใช้ มีประโยชน์อย่างไร และ จัดการมันอย่างไร เช่นการ rebalance shard เป็นต้น
- อธิบายเรื่อง Content Delevery Network (CDN) ว่าคืออะไร และ ทำไมต้องใช้ด้วยล่ะ
- อธิบายเกี่ยวกับ Continuous Deployment ว่าแนวคิดด้านหลังมันเป็นอย่างไร จะมั่นใจต่อการเปลี่ยนแปลง และ deploy อย่างไร รองรับการ deploy ประมาณ 50 ครั้งต่อวันได้อย่างไร รวมทั้งสรุปการทำงานของทีม และ หน้าที่ความรับผิดชอบให้เห็น
ในการเรียนการสอน เมื่อลงมือทำงานจริง
จะทำการ pairing กับ engineer เสมอ
- เพื่อแนะนำวิธีการแก้ไข code
- เพื่อแนะนำวิธีการทดสอบ
- เพื่อแนะนำวิธีการ deploy
- เพื่อแนะนำการกดปุ่ม deploy ไปยัง production
จะใช้เวลาการทำงานแบบ pairingไปประมาณ 2 ชั่วโมง
เพื่อให้เข้าใจแนวคิด กระบวนการทำงาน และ เครื่องมือต่างๆ ที่ใช้งาน
ที่มันสนุกก็คือ เมื่อมีใครก็ตามแก้ไข code และ
จะทำการ deploy code ไปยัง production
ที่บริษัทจะมี Dashboard ใหญ่ๆ เพื่อแสดงชื่อคน deploy ในตอนนั้นด้วย
มันน่าสนุกมากๆ
สิ่งที่คนเข้ามาเรียนให้ feedback คือ
ถ้ามองจากคนภายนอก จะรู้สึกว่าสิ่งที่ทางทีม engineer ทำอยู่นั้น
มันเข้าถึงยาก มายากมากๆ มันลึกลับซับซ้อน
แต่เมื่อมาทำงานร่วมกับ engineer แล้ว
ทำให้เห็นภาพชัดมากขึ้น เข้าใจมากขึ้น ว่า
สิ่งที่ engineer ทำนั้นเป็นอย่างไร ทำไมต้องทำด้วยล่ะ
สิ่งที่สำคัญก็คือ ทำให้เห็นว่าสิ่งที่ engineer ทำนั้น
มันส่งผลต่อผู้ใช้งาน และ ระบบมากเพียงใด
ดังนั้นทั้ง Support rotation และ Engineer rotation
มันช่วยทำให้แต่ละคนในบริษัทเข้าใจกันมากขึ้น
สามารถทำงานร่วมกันดีขึ้น พูดคุยกันมากขึ้น
รู้จักกันมากขึ้น
เรียนรู้กันมากขึ้น
เรียนรู้สิ่งใหม่ๆ ที่ไม่เคยได้ทำ
เรียนรู้เครื่องมือใหม่
มาทำกันเถอะนะ อย่ามัวพูดคำว่า มันดีนะแต่ …