เช้านี้อ่านบทความเรื่อง How Airbnb use React
สัมภาษณ์กับคุณ Leland Richardson ตั้งแต่ต้นปีที่แล้ว (นานเลยนะ)
ซึ่งเป็น Lead Engineer ที่ Airbnb และเป็น contributor หลักของ Enzyme

มาดูกันว่า
ทำไมถึงเลือก React มาใช้ ?
ใช้งาน React อย่างไรบ้าง ?
มีอุปสรรคและความท้าทายอะไรบ้าง ?

จึงทำการแปลและสรุปสิ่งที่น่าสนใจไว้นิดหน่อย
ถึงจะเก่าหน่อยแต่คิดว่าน่าจะมีประโยชน์

เรื่องแรกที่น่าสนใจคือ การเริ่มนำ React มาใช้ในการพัฒนาอย่างไร ?

จะหาคนมาทำอย่างไร ?
มีการสอนและแบ่งปันกันอย่างไร ?
ซึ่งเป็นเรื่องที่เป็นปัญหาอย่างมากสำหรับหลาย ๆ องค์กร !!

โดยแบ่งเป็น 4 ส่วนคือ

ส่วนที่ 1 สำหรับพนักงานใหม่
จะมีการจัด Bootcamp ระยะเวลา 3 สัปดาห์
เพื่อเตรียมความพร้อมทั้งเครื่องมือและ process ที่จำเป็นต่าง ๆ

ส่วนที่ 2 มีการจัดการสอนภายในอยู่แล้ว
ซึ่งใคร ๆ ก็สามารถเข้าร่วมได้

ส่วนที่ 3 น่าสนใจมาก ๆ คือ ใช้งาน Slack เป็นหลัก
ซึ่งมีสิ่งต่าง ๆ ครบครัน เหมือนกับเป็น Internal Stack overflow นั่นเอง
นั่นคือทุกคนพร้อมช่วยกันถามและตอบปัญหาต่าง ๆ
รวมทั้งประวัติการพูดคุยต่าง ๆ สามารถค้นหาได้ง่ายอีกด้วย
ซึ่งเป็นประโยชน์ต่อทีมมาก ๆ

ส่วนที่ 4 ที่น่าสนใจเข้าไปอีกคือ วัฒนธรรมของการทำ Code Review
ซึ่งบอกไว้ว่า เป็นวิธีการที่ดีมาก ๆ สำหรับการเรียนรู้สิ่งใหม่ ๆ
ทำให้ความสามารถพัฒนาไปได้เร็วมาก

ดังนั้นเรื่องของ internal process/training มันจึงสำคัญมาก ๆ
ถ้าหายากนัก ก็สร้างกันขึ้นมาเองเลย

เรื่องที่สอง ข้อได้เปรียบของ React ที่เห็นได้ชัดสุด ๆ คืออะไร ?

เนื่องจาก React ออกแบบในรูปแบบ component
ดังนั้นเรื่องของ reusability และ portability จึงเด่นมาก
อีกทั้งเอื้อต่อการ reactoring อีกด้วย

เรื่องที่สาม มีข้อดีก็ต้องมีข้อเสียกันบ้างสำหรับการใช้งาน React ?

สำหรับผู้เริ่มต้นนั้นมักจะงงและสับสนเกี่ยวกับการจัดการ state ต่าง ๆ

เพิ่มเติมทั้ง props ทั้ง state
อ่านไปอ่านมาเจอ Flux, Redux และอื่น ๆ อีกมากมาย
รวมทั้ง ecosystem ที่อาจจะทำให้มึนงงไปได้หลายวัน

โดยที่ทีมจัดการ state ต่าง ๆ ของ React app ด้วย alt library

มีคำถามว่า ใช้งาน Relay และ GraphQL หรือไม่ ?
ตอบเลยว่ายัง

เรื่องที่สี่ เขียน JavaScript ตามมตรฐานใด ?

ใช้งาน ES6 ซึ่งมีรูปแบบหรือ coding style ตามนี้

เรื่องที่ห้า ทดสอบ React App กันอย่างไร ?

เป็นสิ่งที่น่าสนใจมาก โดยแบ่งเป็นดังนี้

  • ใช้ Mocha สำหรับ Test Runner
  • ใช้ Chai สำหรับการ assertion หรือตรวจสอบผลการทำงาน
  • ใช้ Enzyme สำหรับการทดสอบ React library

ส่วนเครื่องมือที่ขาดไปไม่ได้เลยก็คือ lint
ซึ่งแนะนำให้ลองเขียน custom rule เองให้เห็นนะ
ช่วยลดความผิดพลาดต่าง ๆ ได้มากมาย

เรื่องที่หก จัดการ style ต่าง ๆ กันอย่างไร ?

สั้น ๆ คือ ใช้ SCSS (Sassy CSS)

เรื่องที่เจ็ด ทำการจัดการเรื่องของ rounting ของ React App กันอย่างไร ?

มีหลาย ๆ ส่วนใช้งาน react-router
แต่ส่วนใหญ่จะไม่จัดการด้วย JavaScript นะ

มาถึงตรงนี้น่าจะพอทำให้เห็นการนำ React มาใช้ในการพัฒนาระบบบ้างนะครับ
ขอให้สนุกกับการ coding ครับ