ทำงานที่ไหนก็ได้กันแบบนี้ จะทำ Product ร่วมกันยังไง?
แต่ละ Role จะรับผิดชอบในแต่ละส่วนงานของ Software Development ยังไง?
เราพัฒนาองค์ความรู้ภายในองค์กรกันยังไง?
บล็อกนี้จะมาเล่าให้ฟังว่าพวกเรามีวิธีการทำงานแบบไหนที่ทำให้ยังสามารถพัฒนา Product อย่างต่อเนื่อง มีเครื่องมืออะไรบ้างที่เราใช้เพื่อให้สามารถทำงานร่วมกันได้ และแก้ปัญหาที่เจอกันแบบไหนบ้าง
Process
Core Process การพัฒนา Software Product ของ THiNKNET นั้นยึดแนวคิดการ Collaborations, Iterative & Incremental, Fast Feedback, Learn and Improve เป็นหัวใจของ Process ทั้งหมด เพราะฉะนั้น ไม่ว่าจะอยู่ในบทบาทตำแหน่งไหน จะได้มีส่วนร่วมกับทุก ๆ ทีมอยู่เสมอ ตามขั้นตอนแต่ละช่วงของ Process นั้น ๆ
วิเคราะห์ข้อมูลและทดสอบไอเดีย
บ่อยครั้งที่เราต้องการทำ Proof of Concept (PoC) วิธีการ เทคโนโลยี หรือการทดลองหาไอเดียใหม่ ๆ ให้กับ Product ทางทีม Product Manager, Business Analyst และทีมพัฒนาจะตกลงและวางแผนร่วมกัน เพื่อใช้เวลาช่วงหนึ่งไปทดสอบด้วยวิธีต่าง ๆ เช่น Design Thinking, PoC Demo, Stats Research, Data Analysis แล้วมารวบรวมหาข้อสรุปแนวทางการพัฒนาต่อไป
จัดทีม
เราจะใช้ทีมที่เหมาะกับการพัฒนา Feature หรือเทคโนโลยีนั้น ๆ ซึ่งคนที่เชี่ยวชาญเรื่องนั้นเป็นพิเศษจะเข้ามามีบทบาท ในการพัฒนาร่วมกับคนอื่น ๆ ด้วย เพื่อกระจายองค์ความรู้ผ่านการทำงานร่วมกัน ให้ทุกคนได้รับการพัฒนาตัวเองไปในขณะที่พัฒนาซอฟต์แวร์ไปในตัวด้วย แต่ละทีมจึงสามารถทำงาน Cross-Function กันได้กว้างขึ้นไปเรื่อย ๆ
วางแผนร่วมกัน
หลังจากที่ได้ข้อมูลจากการ Discovery หรือ PoC ข้างต้นแล้ว ทีมพัฒนาจะมาวางแผนร่วมกัน แตก Big Idea, Concept, Requirement ออกมาเป็น Feature , Flow, Test-Case ย่อย ๆ รวมถึงการออกแบบการเก็บข้อมูล ตาม Scenario นำไปทดสอบและทำความเข้าใจกับ Stakeholder ร่วมกัน เพื่อให้ทั้งทีมรับรู้มุมมองของ Feature ที่จะพัฒนาพร้อม ๆ กัน จากนั้นก็ ลุย!
พัฒนาเป็นรอบสั้น ๆ
เมื่อเราได้ Feature มาเรียบร้อยแล้ว ทีมจะแบ่งรอบ Release เพื่อพัฒนาเป็นรอบสั้น ๆ เพื่อสามารถ Deliver ออกไปเพื่อรับ Feedback จาก Stakeholder (ผู้มีส่วนได้ส่วนเสียของ Feature นั้น ๆ ) เพื่อนำกลับมาปรับปรุงได้อย่างรวดเร็ว
ซึ่งในขั้นตอนการพัฒนานั้นทุกทีมจะทำงานร่วมกันในบทบาทความรับผิดชอบของตนเองดังนี้
-
Developer (Dev): พัฒนา Product เขียนโค้ด, Test Script, API ตาม Business Logic
-
Business Analyst (BA): ประสานงานกับ Stakeholder, User / Validate Idea และรับ Feedback
-
Quality Assurance (QA): ออกแบบขั้นตอนวิธีการทดสอบเพื่อตกลงกับ Stakeholder ในการตรวจรับ และเขียน Test Script ร่วมกับทีม Dev
-
Site Reliability Engineer (SRE): ดูแลและควบคุม Pipeline การ Deploy Code บน Site ต่าง ๆ Provisioning Tools และ Cloud เพื่อให้ทีมพัฒนาสามารถนำ Product ขึ้น Online ได้อย่างราบรื่น
-
UX / UI Designer: ออกแบบวิธีการ, Flow การใช้งาน, และ Asset ให้กับ Feature นั้น ๆ
-
Data Engineer: ออกแบบและจัดการ Data Pipeline, ETL Process, Data Collecting เพื่อนำไปใช้ในการวิเคราะห์และทำ Visualize ต่อไป
Monitoring and Automations
แน่นอนว่าส่วนสำคัญมาก ๆ ที่ทำให้การพัฒนา Product สามารถ Deliver ได้เป็นรอบสั้น ๆ และมีมาตรฐานขั้นตอนเดียวกันได้นั้น เราจะใช้การทำ CI/CD และ Automation Tools ต่าง ๆ เข้ามาช่วยเป็นส่วนมาก โดยยึดแนวคิดว่า “อะไรที่ทำซ้ำ ๆ เกิน 3 ครั้งแล้ว เปลี่ยนมันเป็น Automation ซะ” ไม่ว่าจะเป็นการ Build / Deploy ขึ้น Site ต่าง ๆ, การทดสอบแบบ Unit, Integration, System Testing และอีกมากมาย
รวมไปถึงการทำและใช้งานระบบ Monitoring ต่าง ๆ เพื่อให้สามารถรับรู้ วิเคราะห์ และรับมือได้ทันท่วงที เมื่อระบบเรามีสัญญาณบางอย่างที่ผิดปกติ ทั้งในด้านของ Performance Tuning, การจัดการ Resource หรือการรับมือกับเหตุการฉุกเฉิน ทำให้ทุกคนจะได้รับรู้ข้อมูลและจัดการกับปัญหาได้ทันท่วงทีแม้ว่าจะทำงานอยู่คนละที่
วัดผลและเก็บ Feedback
เราใส่ใจประสบการณ์และความพึงพอใจของ User เป็นอันดับต้น ๆ เราจึงต้องมีการวัดผลและวิเคราะห์ตลอดเวลาว่า User แฮปปี้กับอะไร มีปัญหากับอะไร แล้วจะนำไปให้ทีม Analyst วิเคราะห์หา Solution เพื่อพัฒนาในรอบถัด ๆ ไป
Knowledge Sharing
นอกเหนือจาก Process การพัฒนาซอฟต์แวร์แล้ว เราก็มีกิจกรรมการส่งเสริมการเรียนรู้ของทุกทีมด้วยกิจกรรมต่าง ๆ เช่น
จาก Process หลัก ๆ นี้ ทุกขั้นตอนถูกกำหนดบทบาทและเครื่องมือชัดเจน และทุกคนสื่อสารกันตลอดเวลาในการทำงาน ทำให้ลดช่องว่างในการทำงานแบบ Work from Anywhere ทำให้ยังพัฒนา Product ได้อย่างต่อเนื่อง ตอบโจทย์ผู้ใช้อยู่เสมอ และยังใช้เครื่องมือช่วยเพิ่ม Effectiveness ด้วยการใช้เครื่องมือที่เหมาะสมในแต่ละกิจกรรม
ยกตัวอย่างประเภทของเครื่องมือที่ใช้สำหรับการ
-
Visualization - เครื่องมือในการนำเสนอหรือแสดงข้อมูลต่าง ๆ ให้ทีมหรือ Stakeholder ใช้งาน
-
Collaboration - แก่นหลักของการทำงานร่วมกันคือการร่วมมือกันด้วยเครื่องมือที่เหมาะสม การอยู่ไกลกันจะไม่เป็นปัญหาถ้าเราเลือกเครื่องมือที่ทำให้เราเข้าถึงกันและเข้าใจกันได้ง่าย
-
Documentation - องค์ความรู้เกิดขึ้นทุกวัน เอกสารและข้อมูลก็เช่นกัน เราต้องมีที่เก็บและจัดการเอกสารเหล่านั้น ให้อยู่ในที่ที่สามารถหยิบจับใช้งานได้อย่างรวดเร็ว และทุกคนสามารถใช้งานเพื่อเข้าใจตรงกันได้ง่าย
-
Task Management - เครื่องมือที่ทำให้ทั้งทีมสามารถเห็น Progress, เป้าหมาย, เข้าใจสถานะของงานร่วมกัน ทำให้ทีมสามารถปรับจังหวะการทำงานและปรับแผนร่วมกันกับทีมอื่น ๆ ได้ง่าย
-
Time Management - ในเมื่อเราไม่ได้ทำงานอยู่ด้วยกันตลอดเวลา และทุกคนสามารถจัดการเวลาของตัวเองได้ เราจึงมีเครื่องมือให้ทุกคนใช้งานในการจัดการเวลา เข้า-ออกงาน, ลา, พัก หรือแม้แต่เช็กว่าคนอื่น ๆ ทำงานอยู่หรือเปล่า THiNKNET จึงได้พัฒนา Platform เพื่อตอบโจทย์เรื่องนี้มาให้พนักงานทุกคนใช้งานร่วมกัน ทำให้การจัดการคนของทุกทีมเป็นไปได้อย่างราบรื่น
Process และวิธีการต่าง ๆ ถูกออกแบบ เชื่อมโยง และปรับปรุงอยู่เสมอ โดยยึดตาม THiNKNET Engineer Principles ที่พวกเราทุกคนร่วมกันสร้างขึ้นมาทั้ง 10 ข้อ เพื่อให้เป็นแนวทางการพัฒนา Product และ Culture ของเราให้ชัดเจนและเห็นเป็นภาพเดียวกัน ซึ่ง 10 ข้อที่ว่านั้นจะมีอะไรบ้าง ดูได้ที่นี่เลย มองเห็นเป้าหมายเดียวกันด้วย THiNKNET Engineer Principles
และแน่นอนเราไม่ได้เพียง Work from Anywhere เท่านั้น แต่ยังทำงานแบบ Hybrid Workplace ด้วยการมีออฟฟิศให้คนที่อยากมารวมตัวกันทำกิจกรรม ทำงานร่วมกัน และได้มีที่มาเจอกันอีกด้วยคือ
-
THiNKNET Head Office BKK ตึก United Center Silom ชั้น 6
-
THiNKNET Design Studio บางบัวทอง
-
THiNKNET CNX Chet Yod จังหวัดเชียงใหม่
และนี่คือ Core Process หลัก ๆ ของ THiNKNET ที่ทำให้เราสามารถทำงานร่วมกันได้แบบ Work from Anywhere อบอุ่นแม้ไม่ต้องเจอหน้ากันทุกวัน
หากใครที่สนใจทำงานแบบ Work from Anywhere
มาร่วมงานกับ THiNKNET from Anywhere และดูตำแหน่งงานทั้งหมดได้ ที่นี่
ภาพถ่ายโดย Min An: https://www.pexels.com/th-th/photo/853168/