สิ่งที่ผมได้เรียนรู้จากการเป็นกรรมการตัดสิน Hackathon
เมื่อเร็วๆ นี้ ผมได้รีวิวโปรเจกต์ Hackathon ด้าน AI และนักพัฒนามามากมาย
การตัดสินนั้นต่างจากการสร้าง เมื่อคุณสร้าง คุณจะโฟกัสที่โค้ดของตัวเอง แต่เมื่อคุณตัดสิน คุณจะเห็นรูปแบบที่เกิดขึ้นซ้ำๆ จากผู้สร้างหลายคน
ผมเห็นโปรเจกต์ที่มีอินเทอร์เฟซสวยงามแต่ขาดความลึกซึ้งทางเทคนิค ผมเห็นงานวิศวกรรมที่แข็งแกร่งแต่มีเอกสารประกอบที่แย่ และผมเห็นไอเดียที่เรียบง่ายแต่สามารถแก้ปัญหาได้จริง
โปรเจกต์ที่ดีที่สุดมักจะมีรูปแบบที่คล้ายกัน โดยพวกเขาแสดงให้เห็นถึง:
- ปัญหาที่พวกเขาแก้ไข
- สิ่งที่มีอยู่ก่อนหน้านี้
- วิธีที่พวกเขาทำให้มันดีขึ้น
- การเลือกใช้เทคโนโลยีทางเทคนิค
- สิ่งที่ผู้ใช้สามารถทำได้ในตอนนี้
ความแตกต่างระหว่างสิ่งที่ "น่าสนใจ" กับสิ่งที่ "แข็งแกร่ง" คือความชัดเจนในการลงมือทำ (execution clarity)
ในการแข่งขันที่เน้นการส่งมอบผลงานที่เสร็จสมบูรณ์ (finish-style) โปรเจกต์ที่ดีที่สุดจะแสดงเรื่องราวแบบ "ก่อนและหลัง" ที่ชัดเจน โปรเจกต์ที่แข็งแกร่งจะประกอบไปด้วย:
- การแก้ไขเวิร์กโฟลว์ที่เคยมีปัญหา
- แอปพลิเคชันที่ถูก deploy สู่สาธารณะแล้ว
- เอกสารประกอบที่ดีขึ้น
- มีการเพิ่มการทดสอบ (tests)
- ลดช่องโหว่ด้านความปลอดภัย
- ปรับปรุงขั้นตอนการเริ่มต้นใช้งาน (onboarding) ให้ดีขึ้น
- มีความพร้อมในการนำไปใช้งานจริง (production readiness) ที่สูงกว่า
การส่งมอบงาน (Shipping) เป็นเรื่องสำคัญ
งานวิศวกรรมที่ดีต้องการเอกสารประกอบที่ดีเพื่อสร้างความเชื่อมั่น README ที่ชัดเจน แผนผังโครงสร้าง (architecture diagrams) และวิดีโอสาธิต (demo videos) จะช่วยให้ผู้คนเข้าใจงานของคุณได้ง่ายขึ้น
นักพัฒนาจำนวนมากใช้เครื่องมือ AI อย่าง GitHub Copilot ทีมที่ดีที่สุดจะซื่อสัตย์ในเรื่องนี้ พวกเขาจะอธิบายว่า AI ช่วยในเรื่องการเขียนโค้ดพื้นฐาน (boilerplate) การแก้บั๊ก (debugging) หรือการทดสอบ (testing) อย่างไร ซึ่งสิ่งนี้แสดงถึงความเป็นมืออาชีพ
โปรเจกต์ระดับท็อปจะให้ความสำคัญกับการตัดสินใจทางวิศวกรรม (engineering judgment):
- ความปลอดภัย (Security)
- การจัดการข้อผิดพลาด (Error handling)
- ความสามารถในการสังเกตการณ์ระบบ (Observability)
- ความเป็นส่วนตัว (Privacy)
- ความน่าเชื่อถือ (Reliability)
- ความสามารถในการบำรุงรักษา (Maintainability)
รายละเอียดเหล่านี้คือสิ่งที่เปลี่ยนจากแค่ "ตัวสาธิต" (demo) ให้กลายเป็น "ผลิตภัณฑ์" (product) โปรเจกต์เล็กๆ ที่มีตัวสาธิตที่ใช้งานได้จริง ดีกว่าไอเดียใหญ่โตที่ไม่มีหลักฐานยืนยัน
ความชัดเจนและความสมบูรณ์คือสิ่งสำคัญ
การสร้างซอฟต์แวร์เป็นมากกว่าแค่การเขียนโค้ด คุณต้องแก้ปัญหา อธิบายวิธีการแก้ปัญหา และทำงานให้เสร็จสมบูรณ์เพื่อให้ผู้อื่นสามารถเชื่อมั่นในงานนั้นได้ นั่นคือความเป็นมืออาชีพทางวิศวกรรมที่แท้จริง
ชุมชนแห่งการเรียนรู้ (ไม่บังคับ): https://t.me/GyaanSetuAi