3 ทักษะ(นอกจาก Coding) ที่ Developer ควรรู้

27-ก.พ.-18

คัมภีร์เทพ IT

ไม่ว่าคุณจะกำลังเรียนรู้เกี่ยวกับการ Coding, หางานใหม่ หรือ ต้องการพัฒนาทักษะในฐานะของ Developer ก็ตาม คุณก็จำเป็นต้องมีเครื่องมือที่จำเป็นสำหรับการทำงานเป็น Teamwork ซึ่งสิ่งนี้สำคัญพอๆ กับการ Coding เพราะ Teamwork อาจเป็นได้ทั้งตัวช่วยสร้าง หรือทำลาย Software Project เรามาดูกันดีกว่าว่า 3 ทักษะจำเป็นที่ Developer ควรรู้ นอกเหนือจากการ Coding ที่คุณ Jean-Paul Delimat แนะนำมีอะไรบ้าง

ถ้าคุณต้องการทำงาน "ตรงเวลา" และมีคุณภาพดี คุณและทีมของคุณจะต้องมีการจัดการที่ดีก่อน ซึ่งหลักการพื้นฐานของการทำงานเป็น Teamwork คือ ทุกคนจำเป็นต้องรู้ว่า พวกเขาต้องทำอะไร และเมื่อใด, งานของแต่ละคนไม่ควรทับซ้อนกัน และ มีกฎ/กติกาทั่วไป ที่ทุกคนต้องปฏิบัติตามให้เหมือนกัน และนี่คือ 3 ทักษะ(นอกจาก Coding) ที่ Developer ควรรู้

1. Git และ Pull Requests

Configuration management ถือเป็นพื้นฐานของความร่วมมือของทีมในการพัฒนา Software ซึ่งเครื่องมือที่ใช้กันอย่างแพร่หลายที่สุด คือ Git ซึ่ง GitHub ดูจะเป็นที่ได้รับความนิยมสูงสุด รวมทั้งยังมี BitBucket หรือ GitLab อีกด้วย ส่วน Graphic Tool ที่เหมาะกับการใช้งานร่วมกับ Git คือ SourceTree และขอแนะนำให้คุณคุ้นเคยและเชี่ยวชาญใน Command Line ก่อนไปใช้พวก UI Tools ต่างๆ และนี่คือตัวอย่างคำถามที่คุณควรตอบให้ได้:

  • จะ Merge หรือ Rebase Branch ได้อย่างไร และมันแตกต่างกันอย่างไร?
  • จะแก้ไขปัญหาการ Conflicts ได้อย่างไร เช่นระหว่างของเราเอง กับ ของคนอื่นๆ หรือกับ Manual Merge
  • Feature Branch คืออะไร
  • Pull Request คืออะไร
  • อะไรคือข้อแตกต่างของ Collaboration workflows ใน Git

2. The Agile board

สิ่งแรกที่ทีมงานต้องทำเมื่อเริ่ม Project ใหญ่ๆ คือ การแบ่งงาน ในช่วง 10 ปีที่ผ่านมา หลักการ "Agile" ได้เข้ามาแทนที่การวางแผนแบบ Waterfall (ใครที่อยากทราบ Agile Manifesto ให้อ่านที่นี่) ในทางปฏิบัติกล่าวว่า "เราจะไม่วางแผนล่วงหน้าให้มากนัก เนื่องจาก Input ต่างๆ และสมมติฐานที่เรามีเกี่ยวกับ Project อาจจะเปลี่ยนไป" ซึ่งมันแทบจะจริงเกือบทุกสถานการณ์ และในปัจจุบันนี้แทบจะไม่มีทีมงานไหนที่ไม่ใช้หลักการ "Agile" และสิ่งที่คุณจำเป็นต้องรู้คือ

  • Framework ภายใต้แนวคิด Agile ที่ได้รับความนิยมมากที่สุดคือ Scrum ซึ่งทั่วไปจะแบ่ง Project ของคุณลงใน "Sprints" ราวๆ 2 สัปดาห์ และใส่ "Tasks" ลงใน Sprint ส่วนที่เหลือก็ไว้สำหรับอนาคต และมันถูกเรียกว่า "Backlog" ซึ่งจะเป็นประโยชน์ในการติดตามความคืบหน้า, ปรับแผนการทำงานต่อไป และปรับปรุงความเร็วของทีมเมื่อเวลาผ่านไป
  • อีกวิธีของ Agile คือ Kanban เป็นแนวคิด ที่มีการจำกัดจำนวน Task ที่อยู่ในระหว่างดำเนินการ(In Progress) ด้วยวิธีนี้คุณจะแน่ใจได้ว่า คุณจะต้องทำรายการหนึ่งให้เสร็จสมบูรณ์ก่อนที่จะย้ายไปทำรายการถัดไป ไม่มี sprints หรือ Time frame เหมือนใน Scrum คุณจะต้องทำให้เสร็จไปทีละงานๆ เรียกได้ว่า Kanban เน้นไปที่ความลื่นไหลของระบบการทำงาน

ใน Software Project อาจถูกแบ่งออกเป็นหลายสิบหรือเป็นร้อยๆ Tasks ซึ่งคุณอาจต้องใช้เครื่องมือในการจัดการ Taks จำนวนมากเหล่านี้ ซึ่งขอแนะนำ JIRA แม้จะมี Tool อื่นๆ ให้ใช้มากมาย แต่เมื่อถึงจุดหนึ่งคุณอาจต้องใช้ JIRA ในสักวัน

3. Testing และ Continuous Integration

Git และ Agile Tools ช่วยให้ทีม ทำงานได้อย่างรวดเร็ว แต่ขณะเดียวกันอาจเกิด Error และ Bug ได้ ลองคิดดูหากมีทีม Software Developer 5 คนที่ทำงานใน Code ที่อิสระต่อกัน แล้วแต่ละคนก็ Pull Request ไปยัง Repository ซึ่งอาจเกิดปัญหา 2 เรื่องคือ

  • เมื่อ Code ของ "Developer คนแรก" เข้ามายัง Git Repository แล้ว Code ของคนอื่นๆ อาจทำงานได้ไม่ถูกต้อง เนื่องจากอาจมีบางอย่างที่เปลี่ยนแปลงไป ซึ่งอาจไม่ใช่ความผิดพลาดของ "Developer คนแรก" มันเป็นแค่เรื่องที่เกิดขึ้น
  • เมื่อ Developer ทุกคน push Code ของพวกเขาไปใส่ที่ Git Repository แล้ว โอกาสที่ทุกสิ่งจะทำงานได้ทันทีตามที่คาดไว้นั้นค่อนข้างต่ำ นี่ไม่ใช่ภาพสะท้อนว่าเป็นการทำงานเป็นทีมที่ไม่ดี แต่มันก็แค่เป็นสิ่งเกิดขึ้น

เมื่อ Developer คนอื่นๆ push Code ของพวกเขาแล้ว เราเองอาจต้องทำมันซ้ำอีกครั้ง คำถามคือ คุณควร Test เมื่อแต่ละคน push Code เรียบร้อยหมดแล้วใช่หรือไม่? ที่จริงมันก็ดีนะ แต่คุณอาจพบ Bug ซึ่งทำให้ Project ของคุณเสร็จล่าช้าไปอีก แล้วคุณยังจะใช้วิธีนี้แก้ปัญหาอีกหรือไม่? แต่ Automated Tests และ Continuous Integration (การทำให้รวมกันบ่อยๆ อย่างต่อเนื่อง) อาจช่วยชีวิตคุณได้

จะว่าไปแล้ว Automated tests เป็นหนึ่งในหัวข้อที่สามารถนำมาเขียนหนังสือได้หลายเล่ม แต่ละภาษาและ Framework ต่างล้วนมีชุดเครื่องมือของตัวเอง คุณไม่จำเป็นต้องรู้มันทั้งหมด เพียงแค่คุณทราบว่าการ Test มันต้องใช้เวลาและมักจะไม่ได้มีการวางแผนไว้ก่อน อย่างน้อยคุณควรจะรู้วิธีการเขียน Unit Test สำหรับ Code ของคุณ และควรตั้งใจที่จะเขียนมันด้วย ถ้าคุณไม่มีเวลาทำจริงๆ ก็ควรระวังเรื่องข้อผิดพลาดก็แล้วกัน

Continuous Integration เป็น Process ที่นำไปสู่การเปลี่ยนแปลงต่างๆ ของ Source Code ซึ่งไปรวมกันไว้ที่ Version Control System บ่อยครั้งอย่างต่อเนื่อง จนเกิดการ Build และ Run การ Test ของคุณโดยอัตโนมัติ จะเกิดธงสีแดงขึ้นทันทีที่มีข้อผิดพลาด การ Pull Requests ก็ควรได้รับการ Test โดยอัตโนมัติก่อนที่จะ Merge เพื่อหลีกเลี่ยง Bug ซึ่งอาจส่งผลต่อทั้งทีมได้

ส่วน Continuous Delivery คือ Extension ของ Continuous Integration นั่นเอง ถ้าผ่านการ Test อย่างถูกต้องแล้ว Tested Version จะถูกส่งต่อไปยัง Production Environment โดยอัตโนมัติ

สำหรับ Continuous Integration Servers ที่เป็นที่นิยมหลักๆ คือ Jenkins, Travis และ CircleCI (และมีอื่นๆ ด้วย) คุณไม่จำเป็นต้องรู้วิธีการ Setup Server และทุกๆ อย่างหรอก แค่รู้จักและจำเครื่องมือที่มีอยู่ และ Alert สีแดง ให้ขึ้นใจก็พอใช้ได้

สรุป

งานหลักๆ ของ Developer คือการ Coding วันหนึ่งเมื่อคุณต้องทำงานเป็นทีม การใช้ Tools ที่สามารถทำงานร่วมกันได้อย่างเหมาะสม ก็มีความสำคัญเทียบเท่ากับการเขียน Clean Code และหวังว่าบทความนี้จะทำให้คุณทราบภาพรวมของ Tools เหล่านี้ เพื่อให้งานออกมาได้ผลลัพธ์ที่ดีที่สุด

ที่มา: https://medium.freecodecamp.org/

 

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

 

เพิ่มเพื่อน

 

 

บทความที่เกี่ยวข้อง