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