มีเคล็ดลับและเทคนิคบางอย่างที่ใช้ได้กับ Software development ทุกระดับ ซึ่งเป็นกระบวนการที่แทบจะเป็นสากล และเป็นแนวคิดที่เกือบจะเป็นสัจพจน์ (Axiomatic) อย่างไรก็ตาม แนวทางเหล่านี้มักจะไม่ค่อยถูกจดบันทึกไว้เป็นหลักฐานเท่าไหร่ ส่วนใหญ่คุณจะพบมันเป็นประโยคสั้นๆ ที่แทรกอยู่ในการคุยเรื่อง Design, Project management หรือการ Coding แต่เพื่อความสะดวก เราได้รวบรวมแนวคิดและกระบวนการเหล่านี้มาไว้ให้ที่นี่แล้ว

เรื่องแรก และอาจเป็นเรื่องที่สำคัญที่สุดซึ่งเป็นหัวใจของ Software development คือหัวข้อที่ 8 ​_The Essence of Good Design_​ เพราะทุกอย่างจะเริ่มต้นจากจุดนี้เอง

สองหัวข้อถัดไป ได้แก่ หัวข้อที่ 9 ​_DRY—The Evils of Duplication_​ และหัวข้อที่ 10 ​_Orthogonality_​ ซึ่งทั้งสองเรื่องนี้เกี่ยวข้องกันอย่างใกล้ชิด โดยเรื่องแรกจะเตือนไม่ให้คุณเขียนความรู้ซ้ำๆ ลงไปใน System (Duplication) ส่วนเรื่องที่สองจะบอกไม่ให้คุณแยกความรู้ชิ้นเดียวกันไปอยู่ตาม Component ต่างๆ ของ System

เมื่อจังหวะของการเปลี่ยนแปลงเริ่มรวดเร็วขึ้น การรักษาความเกี่ยวข้องของ Application ให้ทันโลกก็ทำได้ยากขึ้นเรื่อยๆ ในหัวข้อที่ 11 ​_Reversibility_​ เราจะมาดูเทคนิคบางอย่างที่ช่วยปกป้อง Project ของคุณจากการเปลี่ยนแปลงของสภาพแวดล้อมที่เกิดขึ้นอยู่ตลอดเวลาได้เอง

สองหัวข้อถัดไปก็มีความเกี่ยวข้องกันเช่นกัน ในหัวข้อที่ 12 ​_Tracer Bullets_​ เราจะพูดถึงรูปแบบการพัฒนาที่จะช่วยให้คุณเก็บ Requirement, ทดสอบ Design และ Implement code ไปพร้อมกันได้ ซึ่งนี่คือวิธีเดียวที่คุณจะก้าวทันจังหวะชีวิตในปัจจุบันได้ทัน

หัวข้อที่ 13 ​_Prototypes and Post-it Notes_​ จะแสดงวิธีการใช้ Prototyping เพื่อทดสอบ Architecture, Algorithm, Interface และไอเดียต่างๆ ในโลกปัจจุบัน การทดสอบไอเดียเพื่อรับ Feedback ก่อนจะทุ่มเทลงไปเต็มตัวเป็นสิ่งที่สำคัญมากจริงๆ

เมื่อ Computer science เริ่มเติบโตขึ้นเรื่อยๆ เหล่า Designer ก็สร้างภาษาที่อยู่ในระดับที่สูงขึ้น (Higher-level language) แม้ว่า Compiler ที่รองรับคำสั่งประเภท “จัดไป” (Make it so) จะยังไม่เกิดขึ้น แต่ในหัวข้อที่ 14 ​_Domain Languages_​ เราได้นำเสนอข้อเสนอที่ดูเป็นจริงได้มากกว่าที่คุณสามารถนำไป Implement ได้ด้วยตัวเอง

สุดท้ายนี้ เราทุกคนต่างทำงานในโลกที่มีข้อจำกัดเรื่องเวลาและทรัพยากร คุณจะอยู่รอดจากความขาดแคลนเหล่านี้ได้ดีขึ้น (และทำให้เจ้านายหรือลูกค้ามีความสุขขึ้น) หากคุณสามารถคาดคะเนได้เก่งขึ้นว่างานแต่ละอย่างจะใช้เวลานานเท่าไหร่ ซึ่งเราได้รวบรวมไว้ให้ในหัวข้อที่ 15 ​_Estimating_​ แล้วครับ

ให้ยึดหลักพื้นฐานเหล่านี้ไว้ในใจระหว่างการพัฒนา Software แล้วคุณจะเขียน Code ได้ดีขึ้น เร็วขึ้น และแข็งแกร่งขึ้น คุณอาจจะทำให้มันดูเหมือนเป็นเรื่องง่ายๆ ไปเลยก็ได้ครับ