แชร์ประสบการณ์ เลือก Frontend Tech สำหรับ Software House เล็กๆ

Nantaphop Phuengphae
Cupcode
Published in
2 min readMar 29, 2017

ก่อนอื่นขอเกริ่นก่อนเลยนะครับ ว่าเราเป็น Software House ขนาดเล็กที่มี Developer อยู่ไม่มากนัก ถึงแม้ว่าทีมของเราจะมีความสามารถในการทำงาน Cross กันได้บ้าง แต่ก็ยังไม่ได้ช่วยงานกันได้เต็มที่นัก เริ่มแรกทีมเราจะยึดหลักเป็น Java โดยใช้ Spring + Thymeleaf ในการพัฒนา Website ส่วน Mobile นั้น เราเชื่อมั่นในคุณภาพของ Native App เราจึงทำ Native ทั้ง iOS และ Android

ปัญหาที่พวกเราพบคือ…

ทีมค่อนข้างขาดความคล่องตัว เนื่องจากการใช้เทคโนโลยีที่หลากหลาย Web Service ทำด้วย Java หน้าเวปทำด้วย Thymeleaf + Javascript (Angular 1) Mobile แยก Native อีก ทำให้เวลาที่งานเข้ามาพร้อมๆ กัน ทีมพัฒนาเราจะประสบปัญหาคอขวด คือต้องรอคนนั้นคนนี้มีเวลามาทำงานให้ ต้องการทำ Web Service คนทำ Web Service ก็ติดงานนู้น มาเริ่มงานใหม่ไม่ได้ ส่วน iOS Dev ก็ติดงานาแก้ Bug โปรเจคเก่า ทำให้งานใหม่เริ่มไม่ได้ รึอาจลุกลามไปถึง คนทำ iOS ดันเป็นคนขึ้นโครง Web Admin ด้วย Angular ไว้เป็นคนรู้เรื่อง Angular ดีที่สุดอีก

จากประสบการณ์แบบนั้น ซักพักเราก็รู้สึกเหนื่อย ลำบาก เหมือนเดินกอดคอเพื่อนกัน สี่ห้าคน แต่ขามันพันกันเหลือเกิน น่ากลัวจะพากันล้ม…

ช่วงการเปลี่ยนเทคโนโลยี

จนมาถึงช่วงนึงที่ตัวผมเอง รู้สึกอยากลองอะไรใหม่ๆ มั่ง เบื่อ Angular 1 แล้ว อยากลอง React เหลือเกิน และจังหวะเหมาะทำให้ผมได้มีโอกาสลองเขียน Web Admin จาก React พร้อมกับทำ Web Service เอง ด้วย Spring Data Rest ซึ่งก็รู้สึกได้ถึงความง่ายในการใช้ React เลยทำให้ลองๆ พยายามเอา React มาใช้ในทีมดู

ยุคปฏิวัติวิทยาการ

หลังจากโปรเจคนั้นผ่านไป ผมได้ลอง React จนมั่นใจแล้วว่า นี่แหละ Holy Grail ที่จะช่วยพาทีมเราให้หลุดพ้น ปัญหา คอขวดเทคโนโลยีเดิมๆ โปรเจคต่อๆ มาเลยเริ่มแนะนำให้เพื่อนร่วมทีมมาใช้ React ด้วยกัน เพราะเป็นโปรเจคใหญ่พอดี ต้องทำหลายคน ซึ่งทุกคน ก็ดูชอบกันดีกับ React (มั้ง 555) หลังจากชิมลางใช้ React กับการทำ Web ทำให้ผมเริ่มอยากแก้ปัญหาทางฝั่ง Mobile บ้าง จากที่เราเขียน Native ไปเลย หรือไม่ก็ Cross Platform ด้วย Apache Cordova ซึ่งไม่ประทับใจเอาซะเลย

ปฏิวัติการทำ Mobile ด้วย React Native

ด้วยความที่ส่วนตัวเป็นพวกอยู่ไม่สุข ชอบลองทำอะไรเรื่อยๆ อยู่แล้ว ก็ได้ ไปลองหัด React Native มาซักพัก (ลองทำ App อ่านพันทิป อ่าน Reddict เล่น) ก็รู้สึกได้ว่า นี่แหละ Holy Grail ที่แท้จริงอีกอัน ประสบการณ์ของ Developer เวลาทำงานก็เร็ว เช่นกด Save ปุ๊บ เห็นผลปั๊บ จากเดิมเขียน Native App นี่ช้ามากต้องรอเป็นนาที กว่าจะเห็นผล

ส่วนตัว App ผลลัพธ์​ของ React ​Native มันคือ Native App เลย ที่ความลื่นไหลนี่ พูดได้ว่า ถ้าไม่บอก ว่านี่ Cross Platform ก็อาจเชื่อได้ว่าเป็น Native แต่มนก็มีข้อน่าเป็นห่วงของมันเหมือนกัน ในการทำ App ที่มีเทคนิคพิเศษ บางอย่าง ซึ่งความจริงก็ทำได้ เพราะมันสามารถเขียน Native Code เพิ่มได้ แต่ถ้างานมันซับซ้อน และยากต้องเขียน Native Code เพิ่มเยอะ ก็อาจต้องลองพิจารณาเขียน Native ปกติแทน แต่งานพวกดึงข้อมูลจาก Web Service มาแสดง แล้วส่งข้อมูลกลับไปอันนี้ทำได้สบาย (ไว้มีโอกาสจะมาเล่าต่อเรื่อง React Native)

ทีมของเราจึงได้เริ่มโปรเจคใหม่ ที่ Mobile ใช้ React Native​ ทำ

ประโยชน์​ในอนาคต

ในตอนนี้ จากอดีตเรามี Web Dev, Mobile Dev แยกกัน ตอนนี้เราได้ทีมพัฒนาฝั่ง Frontend​ ที่ทำงานข้ามกันได้ ช่วยเหลือกันได้

จาก 1 คนทำเวป 1 คนทำ iOS 1 คนทำ Android
วันนี้ เรามี 3 คนทำเวป 3 คนทำ iOS 3 คนทำ Android

ก็คงจบประมาณ​นี้ก่อนนะครับ สำหรับการแชร์ประสบการณ์​ขอบคุณที่อ่านมาถึงจุดนี้ครับ

ปล. จำนวนคนสมมติ

--

--