มีเคล็ดลับและเทคนิคบางอย่างที่ใช้ได้กับ 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 ได้ดีขึ้น เร็วขึ้น และแข็งแกร่งขึ้น คุณอาจจะทำให้มันดูเหมือนเป็นเรื่องง่ายๆ ไปเลยก็ได้ครับ