จากคำนำของฉบับพิมพ์ครั้งแรก

หนังสือเล่มนี้จะช่วยให้คุณกลายเป็น Programmer ที่ดีขึ้น

คุณอาจจะเป็น Developer ที่ทำงานคนเดียว เป็นสมาชิกในทีมโปรเจกต์ขนาดใหญ่ หรือเป็น Consultant ที่ทำงานกับลูกค้าหลายเจ้าพร้อมกันก็ได้ มันไม่สำคัญเลย เพราะหนังสือเล่มนี้จะช่วยให้คุณในฐานะปัจเจกบุคคลทำงานได้ดีขึ้น หนังสือเล่มนี้ไม่ใช่ทฤษฎีจ๋า แต่เราเน้นไปที่หัวข้อในเชิงปฏิบัติ (Practical) โดยใช้ประสบการณ์ของคุณเพื่อช่วยให้คุณตัดสินใจได้อย่างมีข้อมูลมากขึ้น คำว่า Pragmatic มาจากภาษาละตินว่า pragmaticus ซึ่งแปลว่า "เชี่ยวชาญในธุรกิจ" และมีที่มาจากภาษากรีกว่า πραγματικός ที่มีความหมายว่า "เหมาะสำหรับการใช้งาน"

นี่คือหนังสือที่เน้นเรื่องการลงมือทำ

Programming เป็นงานฝีมือ (Craft) หากพูดให้ง่ายที่สุด มันคือการทำให้คอมพิวเตอร์ทำในสิ่งที่คุณต้องการ (หรือสิ่งที่ User ของคุณต้องการ) ในฐานะ Programmer คุณต้องเป็นทั้งผู้ฟัง ที่ปรึกษา ล่ามแปลความหมาย และผู้สั่งการ คุณพยายามทำความเข้าใจความต้องการ (Requirements) ที่จับต้องได้ยากและหาวิธีถ่ายทอดสิ่งเหล่านั้นออกมา เพื่อให้เครื่องจักรเพียงเครื่องเดียวสามารถทำมันออกมาได้ดี คุณพยายามบันทึกข้อมูล (Document) งานของคุณเพื่อให้คนอื่นเข้าใจ และคุณพยายามออกแบบ (Engineer) งานของคุณเพื่อให้คนอื่นสามารถนำไปต่อยอดได้ ยิ่งไปกว่านั้น คุณพยายามทำสิ่งเหล่านี้ภายใต้กรอบเวลาที่บีบคั้นของโปรเจกต์ คุณกำลังสร้างปาฏิหาริย์เล็กๆ ในทุกๆ วัน

มันเป็นงานที่ยาก

มีผู้คนมากมายที่เสนอตัวจะช่วยเหลือคุณ ผู้ผลิต Tool ก็พยายามขายของว่าผลิตภัณฑ์ของเขาสร้างปาฏิหาริย์ได้ขนาดไหน เหล่ากูรูด้านระเบียบวิธี (Methodology) ก็สัญญาว่าเทคนิคของพวกเขาจะการันตีผลลัพธ์ ทุกคนเคลมว่าภาษา Programming ของพวกเขานั้นดีที่สุด และทุกๆ Operating System คือคำตอบของสารพัดปัญหาที่คาดไม่ถึง

แน่นอนว่ามันไม่เป็นความจริงเลย ไม่มีคำตอบง่ายๆ สำหรับทุกเรื่อง ไม่มี Solution ที่ดีที่สุด ไม่ว่าจะเป็น Tool, ภาษา หรือ Operating System ก็ตาม มันจะมีแค่ระบบที่ "เหมาะสมกว่า" ในสถานการณ์หนึ่งๆ เท่านั้น

นี่คือจุดเริ่มต้นของ Pragmatism คุณไม่ควรจะยึดติดกับ Technology ใดเทคโนโลยีหนึ่ง แต่ควรมีพื้นฐานและประสบการณ์ที่กว้างพอที่จะช่วยให้คุณเลือก Solution ที่ดีในสถานการณ์ต่างๆ ได้ พื้นฐานของคุณควรมาจากการทำความเข้าใจหลักการเบื้องต้นของ Computer Science และประสบการณ์ของคุณควรมาจากการทำโปรเจกต์เชิงปฏิบัติ (Practical) ที่หลากหลาย ทฤษฎีและการปฏิบัติ (Theory and Practice) จะรวมพลังกันทำให้คุณเก่งขึ้น

คุณปรับตัวเข้ากับสถานการณ์และสภาพแวดล้อมปัจจุบัน คุณประเมินความสำคัญของปัจจัยต่างๆ ในโปรเจกต์และใช้ประสบการณ์ของคุณสร้าง Solution ที่เหมาะสม และคุณทำสิ่งนี้อย่างต่อเนื่องตามความคืบหน้าของงาน Pragmatic Programmers คือผู้ที่ทำงานสำเร็จ และทำได้ดีด้วย