คำนำ

ผมจำได้ตอนที่ Dave และ Andy ทวีตเรื่องหนังสือเล่มใหม่นี้ครั้งแรก มันเป็นข่าวใหญ่มาก ผมเห็นคนใน coding community ตื่นเต้นกันสุดๆ ฟีดของผมเต็มไปด้วยความคาดหวัง ผ่านมา 20 ปีแล้ว แต่ The Pragmatic Programmer ก็ยังคงมีความสำคัญและทันสมัยเหมือนเดิมไม่เปลี่ยนเลย

การที่หนังสือที่มีประวัติยาวนานขนาดนี้ได้รับเสียงตอบรับที่ดีขนาดนี้มันบอกอะไรได้หลายอย่างเลย ผมมีโอกาสได้อ่านฉบับที่ยังไม่วางขายเพื่อเอามาเขียนคำนำนี้ และผมก็เข้าใจเลยว่าทำไมมันถึงได้รับความสนใจมากขนาดนั้น ถึงแม้ว่ามันจะเป็น technical book แต่การเรียกแค่นั้นอาจจะดูน้อยไปหน่อย เพราะ technical book ส่วนใหญ่มักจะทำให้อึดอัด มักจะเต็มไปด้วยคำโตๆ ศัพท์ที่เข้าใจยาก และตัวอย่างที่ซับซ้อนที่ทำให้คุณรู้สึกว่าตัวเองไม่เก่งไปซะอย่างนั้น ยิ่งผู้เขียนมีประสบการณ์สูงเท่าไหร่ ก็ยิ่งลืมได้ง่ายขึ้นว่าการเรียนรู้ concept ใหม่ๆ หรือการเป็น beginner นั้นเป็นยังไง

แม้จะมีประสบการณ์ในวงการโปรแกรมมาหลายสิบปี แต่ Dave และ Andy ก็เอาชนะความท้าทายที่ยากมาก นั่นคือการเขียนหนังสือด้วยความตื่นเต้นเหมือนคนที่เพิ่งจะเรียนรู้บทเรียนเหล่านี้มาด้วยตัวเอง พวกเขาไม่ได้พูดเหมือนสอนมือใหม่จากที่สูง หรือคิดว่าคุณต้องเป็น expert แล้ว และไม่ได้คาดหวังว่าคุณต้องเคยอ่านฉบับแรกมาก่อนด้วยซ้ำ พวกเขาเข้าหาคุณในแบบที่คุณเป็น คือ Programmer ที่แค่อยากจะเก่งขึ้น และใช้เนื้อหาในเล่มนี้ช่วยให้คุณไปถึงจุดนั้นได้จริงๆ ทีละขั้นตอนที่นำไปปฏิบัติได้

ถ้าพูดกันตามตรง พวกเขาก็เคยทำแบบนี้มาแล้ว ฉบับแรกนั้นเต็มไปด้วยตัวอย่างที่จับต้องได้ idea ใหม่ๆ และเคล็ดลับที่ใช้ได้จริงเพื่อเสริมสร้างทักษะ coding และวิธีคิดแบบ programmer ซึ่งยังคงใช้ได้ดีจนถึงปัจจุบัน แต่ฉบับปรับปรุงใหม่นี้มีการปรับปรุงที่ดียิ่งขึ้นไปอีก 2 เรื่องใหญ่ๆ

ข้อแรกที่เห็นได้ชัดเลยคือ มันมีการตัดสิ่งที่อ้างอิงถึงของเก่าๆ ตัวอย่างที่ out-of-date แล้วออกไป แล้วแทนที่ด้วยเนื้อหาที่ใหม่และทันสมัยขึ้น คุณจะไม่เห็นตัวอย่างเรื่อง loop invariants หรือ build machines อีกแล้ว Dave และ Andy ได้เอาเนื้อหาที่มีประโยชน์มากของพวกเขามาทำให้มั่นใจว่าบทเรียนเหล่านั้นยังคงสื่อสารได้อย่างดี โดยไม่มีตัวอย่างเก่าๆ มาดึงความสนใจไป นอกจากนี้มันยังเอา idea เก่าๆ อย่าง DRY (don't repeat yourself) มาปัดฝุ่นและนำเสนอใหม่ให้มันดูสดใสและน่าสนใจขึ้นจริงๆ

แต่อย่างที่สองนี่แหละคือสิ่งที่ทำให้ฉบับนี้มันน่าตื่นเต้นจริงๆ หลังจากเขียนฉบับแรกไป พวกเขาได้มีโอกาสสะท้อนถึงสิ่งที่พยายามจะสื่อสาร สิ่งที่อยากให้คนอ่านได้รับไป และดูว่าคนรับมันไปใช้ยังไงบ้าง พวกเขาได้รับ feedback จากบทเรียนเหล่านั้น และได้เห็นว่าอะไรที่ยังเวิร์ก อะไรที่ต้องปรับปรุง หรืออะไรที่คนมักจะเข้าใจผิด ในช่วง 20 ปีที่หนังสือเล่มนี้ได้ผ่านมือ programmer ทั่วโลก Dave และ Andy ได้ศึกษาการตอบรับเหล่านี้แล้วนำมาตกผลึกเป็น idea และ concept ใหม่ๆ ขึ้นมา

พวกเขาได้เรียนรู้ถึงความสำคัญของ agency และยอมรับว่า developer อย่างเรามีอิสระในการตัดสินใจมากกว่าอาชีพอื่นส่วนใหญ่ พวกเขาเริ่มต้นหนังสือเล่มนี้ด้วยข้อความที่เรียบง่ายแต่ลึกซึ้งว่า “it’s your life” ซึ่งมันเตือนให้เรานึกถึงอำนาจที่เรามีต่อ code base ต่องาน และต่ออาชีพของเรา มันช่วยกำหนดโทนของหนังสือเล่มนี้ให้เป็นมากกว่าแค่ technical book ที่มีแต่ตัวอย่างโค้ดเฉยๆ

สิ่งที่ทำให้มันโดดเด่นจริงๆ ท่ามกลางบรรดา technical book คือมันเข้าใจว่าการเป็น programmer นั้นหมายความว่าอย่างไร การทำ programming คือการพยายามทำให้สิ่งที่กำลังจะเกิดขึ้นในอนาคตเจ็บปวดน้อยลง มันคือการทำให้เพื่อนร่วมทีมทำงานได้ง่ายขึ้น มันคือการยอมรับความผิดพลาดแล้วสามารถลุกขึ้นใหม่ได้ มันคือการสร้างนิสัยที่ดี และการเข้าใจเครื่องมือที่ตัวเองใช้ เพราะการเขียนโค้ดเป็นเพียงส่วนหนึ่งในโลกของ programmer เท่านั้น และหนังสือเล่มนี้ก็จะพาคุณไปสำรวจโลกที่ว่านั่นเอง

ผมใช้เวลาคิดถึงเส้นทางการเขียนโค้ดของตัวเองอยู่บ่อยครั้ง ผมไม่ได้เริ่มเขียนโค้ดมาตั้งแต่เด็ก ไม่ได้เรียนมาทางด้านนี้โดยตรงตอนมหาลัย และไม่ได้ใช้เวลาช่วงวัยรุ่นไปกับการแกะแงะเทคโนโลยีอะไรเลย ผมเริ่มก้าวเข้าสู่โลกของการเขียนโค้ดตอนอายุยี่สิบกลางๆ และต้องค่อยๆ เรียนรู้ว่าการเป็น programmer นั้นคืออะไร community นี้แตกต่างจากสังคมอื่นๆ ที่ผมเคยเจอมามาก มีความทุ่มเทในการเรียนรู้และความเป็นไปได้ในทางปฏิบัติที่โดดเด่น ซึ่งมันทั้งดูใหม่และน่าเกรงขามไปพร้อมๆ กัน

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

ช่วงสัปดาห์แรกๆ หรือเดือนแรกๆ ในเมืองใหม่อาจจะทำให้เรารู้สึกหวั่นๆ อยู่บ้าง จะดีแค่ไหนถ้ามีเพื่อนบ้านที่ใจดี มีประสบการณ์ และอยู่ที่นั่นมานานแล้ว? คนที่พาคุณทัวร์เมือง แนะนำร้านกาแฟดีๆ ให้? ใครสักคนที่อยู่มานานพอจะเข้าใจวัฒนธรรมและจังหวะชีวิตของเมืองนั้น เพื่อที่คุณจะไม่ใช่แค่รู้สึกเหมือนอยู่บ้าน แต่ยังเป็นคนหนึ่งที่ช่วยขับเคลื่อนเมืองนั้นได้ด้วย? ซึ่ง Dave และ Andy นี่แหละคือเพื่อนบ้านคนนั้น

ในฐานะคนที่ยังใหม่กับวงการนี้ มันง่ายมากที่จะรู้สึกล้นๆ (overwhelmed) แต่มันไม่ใช่เพราะเรื่องของการ programming โดยตรงหรอกนะ แต่มันคือกระบวนการของการ “กลายเป็น” programmer ต่างหาก มันมีเรื่องของการเปลี่ยน mindset ขนานใหญ่ที่ต้องทำ ทั้งเรื่องของนิสัย พฤติกรรม และความคาดหวัง การจะเป็น programmer ที่เก่งขึ้นไม่ได้เกิดขึ้นเพียงเพราะคุณเขียนโค้ดเป็น แต่มันต้องมาพร้อมกับความตั้งใจและการฝึกฝนอย่างจดจ่อ (deliberate practice) หนังสือเล่มนี้จะเป็น guide ที่ช่วยให้คุณเป็น programmer ที่เก่งขึ้นได้อย่างมีประสิทธิภาพ

แต่อย่าเข้าใจผิดไปนะครับ—หนังสือเล่มนี้ไม่ได้มาบอกว่าการ programming ที่ดี “ควร” เป็นอย่างไร มันไม่ได้เป็นเชิงปรัชญาหรือมานั่งตัดสินใคร แต่มันจะบอกคุณแบบตรงไปตรงมาว่า Pragmatic Programmer คืออะไร—พวกเขาทำงานกันยังไง และมีวิธีรับมือกับโค้ดแบบไหน ที่เหลือมันขึ้นอยู่กับคุณแล้วว่าจะตัดสินใจอยากเป็นแบบนั้นไหม ถ้าคุณรู้สึกว่ามันไม่ใช่แนว พวกเขาก็ไม่ว่าอะไร แต่ถ้าคุณคิดว่านี่แหละคือทางของคุณ พวกเขาก็พร้อมจะเป็นเพื่อนบ้านที่แสนดีที่คอยช่วยแนะนำทางให้คุณ

 

Saron Yitbarek
Founder & CEO ของ CodeNewbie และ Host ของ Command Line Heroes

Copyright © 2020 Pearson Education, Inc.