คำนำและบทนำ: The Pragmatic Programmer
1 min readคำนำ (Foreword): โดย Saron Yitbarek
หนังสือเล่มนี้ไม่ใช่หนังสือเทคนิคทั่วไปที่เต็มไปด้วยศัพท์ยาก ๆ (แม้ผู้เขียนจะมีประสบการณ์หลายสิบปี แต่พวกเขาเขียนด้วยความตื่นเต้นแบบเดียวกับคนที่เพิ่งเรียนรู้บทเรียนเหล่านี้) พวกเขาไม่พูดดูถูก ไม่คิดว่าคุณเป็นผู้เชี่ยวชาญ และไม่คิดว่าคุณเคยอ่าน edition แรกมาก่อน หนังสือเล่มนี้คือเพื่อนบ้านที่เป็นมิตรที่คอยพาคุณทัวร์ละแวกใหม่ (แสดงให้เห็นว่าการเป็นโปรแกรมเมอร์ที่ดีนั้นต้องใช้ mindset shift ที่ตั้งใจและ deliberate practice)
คำนำฉบับที่ 2 (Preface to the Second Edition)
หนังสือเล่มนี้เริ่มต้นจากโน้ตที่ Dave และ Andy จดไว้ตอนเป็นที่ปรึกษาให้บริษัทที่มีปัญหาด้านซอฟต์แวร์ในยุค 90s (20 ปีต่อมาเทคโนโลยีเปลี่ยนไปมาก เช่น CORBA, CASE tools, indexed loops ล้วนหายไป) แต่สามัญสำนึก (common sense) ไม่เคยเปลี่ยน ฉบับนี้ปรับปรุงเนื้อหาประมาณ 1 ใน 3 ให้เป็นหัวข้อใหม่ทั้งหมด และเขียนส่วนที่เหลือใหม่เกือบทั้งหมดหรือบางส่วน (เพิ่มเนื้อหาเรื่อง concurrency, functional programming, ความปลอดภัย และ privacy)
คำนำฉบับที่ 1 (From the Preface to the First Edition)
หนังสือเล่มนี้เป็นหนังสือเกี่ยวกับ การลงมือทำ (doing): ไม่ใช่ทฤษฎี คำว่า pragmatic มาจากภาษาละติน pragmaticus แปลว่า "ชำนาญในทางปฏิบัติ" ไม่มีคำตอบง่าย ๆ ไม่มี best solution ที่เป็นสากล (มีเพียงระบบที่เหมาะสมกับบริบทเฉพาะเท่านั้น)
คุณสมบัติของ Pragmatic Programmer
| คุณสมบัติ | คำอธิบาย |
|---|---|
| Early adopter / fast adapter | มีสัญชาตญาณต่อเทคโนโลยีใหม่ ๆ ชอบลองของ และปรับตัวเร็ว |
| Inquisitive | ชอบถามคำถาม เก็บสะสมความรู้เล็ก ๆ น้อย ๆ ที่อาจมีประโยชน์ในอนาคต |
| Critical thinker | ไม่เชื่ออะไรง่าย ๆ โดยไม่มีหลักฐาน ชอบท้าทายคำตอบสำเร็จรูป |
| Realistic | เข้าใจธรรมชาติของปัญหา รู้ว่าอะไรยาก อะไรจะใช้เวลานาน |
| Jack of all trades | คุ้นเคยกับเทคโนโลยีหลากหลาย พร้อมย้ายไปทำงานใน domain ใหม่เสมอ |
Tip 1: Care About Your Craft: ใส่ใจในฝีมือของคุณ
Tip 2: Think! About Your Work: คิดเกี่ยวกับสิ่งที่คุณทำอยู่ตลอดเวลา อย่าใช้ autopilot
Individual Pragmatists, Large Teams
แม้ในทีมใหญ่หรือโครงการซับซ้อนก็ยังมีที่ว่างสำหรับงานฝีมือส่วนบุคคล (individual craftsmanship) เช่นเดียวกับช่างแกะสลักหินในยุคกลางที่สร้างมหาวิหาร: "เรา ผู้ซึ่งแกะสลักเพียงก้อนหิน ต้องมองเห็นมหาวิหารเสมอ"
It's a Continuous Process
การเป็น Pragmatic Programmer ไม่ใช่การตรวจสอบครั้งเดียวแล้วจบ มันคือการประเมินวิจารณ์ทุกการตัดสินใจ ทุกวัน ในทุกโครงการ อย่างต่อเนื่อง