คำแนะนำสำหรับการเริ่มต้นโปรเจค

ช่วงนี้น้อง ๆ หลายคนก็เริ่มฝึกงานกัน บางที่ก็อาจจะให้ทำงานจิปาถะ บางที่ก็ให้ทำโปรเจคเล็ก ๆ ซึ่งพอหลังจากนี้น้อง ๆ อีกหลายคนก็คงต้องไปเริ่มทำโปรเจคจบกันต่อ ก็อยากเขียนแชร์คำแนะนำสักหน่อย

Version Control

คือในปี พศ. นี้เราคงไม่ต้องมาต้องคำถามกันแล้วว่า VCS มีความสำคัญอย่างไร ใช้ไปเลยครับ ไม่ต้องถาม (ฮา) Setup Repository ขึ้นมาก่อนแล้วอย่างอื่นค่อยว่ากันทีหลังนะ

Build Automation

เวลาเราเขียนโปรแกรม ในอดีตเราจะจะเลี่ยงการใช้ dependency และพยายามสร้างทุกอย่างในโปรแกรมด้วยตัวเอง แต่ปัจจุบันเราก็จะพบว่าเราจะมีการนำ 3rd party library มาใช้มากขึ้นเรื่อย ๆ เป็นการประหยัดเวลาที่เราจะต้องใช้กับส่วนประกอบยิบย่อยที่จำเป็นแต่เราไม่ได้อยากให้ความสำคัญกับมัน (ก็เลยเอาโค๊ดคนอื่นมาใช้ไงครับ) ปัญหาก็คือมันทำให้การ setup โปรเจคมีขั้นตอนที่ซับซ้อนขึ้น ถ้าเราจำเป็นจะต้องทำซ้ำ ๆ หลาย ๆ ครั้งมันก็เสียเวลาใช่ไหมครับ

เราก็เลยเอา Build Automation มาช่วย ณ. จุดนี้ ทำยังไงให้ขั้นตอนนี้เป็นไปได้อย่างอัตโนมัติให้มากที่สุด เพื่อที่เราจะประหยัดเวลาการ setup project ลงไป ให้เราสามารถจดจ่ออยู่กับตัวโปรแกรมของเราได้นั่นเอง เวลาที่เราจะแชร์ให้เพื่อนเราทำงานด้วย เราก็แค่ให้เขา check out code ออกมาแล้วสั่ง build จากนั้นก็นั่งทำงานต่อได้

ยิ่งเรามีพีซีหลาย ๆ เครื่อง การที่มี build automation นี่ช่วยเราได้มากครับ

นอกจากนี้แล้วระบบ BA หลาย ๆ เจ้าสามารถ Automate ได้มากกว่าขั้นตอนการ Build อย่าง Gradle สามารถทำได้ตั้งแต่ Dependency Management, Build Automation, Test Automation, ยัน Deployment Automation เลยครับ ถือว่าเป็นตัวที่พลังสูงมากครับ ใครที่เคยลองเล่นแค่ build ใน Android Studio ก็ควรลองฟีเจอร์อื่น ๆ ด้วยนะครับ

Dependency Management

อีกจุดหนึ่งก็คือ ถ้าเราเอา dependency มาปนอยู่ใน code base ของเรามาก ๆ ก็จะเริ่มจัดการได้ยาก ไม่ว่าจะเป็น binary หรือเป็น source ก็ตาม มันจะปนอยู่กับโปรเจคเรา และเราก็มักจะเผลอเช็คอินโค๊ดส่วนที่เป็น library เข้าไปใน repo ด้วย (ซึ่งบางครั้งมันก็ไปแย้งกันเอง เช่น ดันเช็คอิน lib สำหรับ win32 ไปลง repo ที่เป็น win64 หรือเอา Linux ไปทับ Windows ผลคือเจ๊งกันทั้งเมือง)

นอกจากนี้อาจจะเกิด Conflict ระหว่าง dependency ได้ (เช่น lib A นี้ต้องการ lib T 1.0 แต่ lib B ดันใช้ 1.6) ซึ่งกว่าจะรู้ก็ตอนทดลองรันดู ต้องดีบั๊กกันยาวกว่าจะรู้ว่าเกิดจากตรงไหน

การใช้ Dependency Management เข้ามาช่วย จะทำให้ปัญหา Dependency Management หายไป หรือทำให้เห็นว่าปัญหาอยู่ที่ไหน ด้วย DM เราจะระบุชื่อ dependency พร้อมเวอร์ชัน แล้วตัวระบบจะไปหา dependency ตัวที่ว่านั้นมาให้เราใช้อัตโนมัติ โดยไม่ปนอยู่กับตัวโค๊ดของโปรเจค (มีแค่ระบุว่าใช้ lib อะไร เวอร์ชันไหนเท่านั้น) ทำให้การจัดการ dependency ทำได้ง่ายขึ้น นอกจากนี้ถ้าเกิด conflict ก็สามารถเตือนให้เรารู้ก่อนได้ก่อนที่จะเกิดปัญหาครับ

ทั้งสามอย่างนี้เป็น infrastructure ที่จำเป็นสำหรับการพัฒนาโปรเจคใด ๆ ก็ตาม และที่ผมแนะนำให้ทำตั้งแต่ตอนเริ่มต้น ก็เพราะว่ามันจะมีประโยชน์ต่อการพัฒนาทั้ง life cycle นอกจากนี้แล้วถ้าโปรเจคไปไกลมากแล้วค่อยมาเพิ่มทีหลังก็จะสร้างความลำบากเข้ามาอีกครับ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.