ท่ามกลางกระแสความเปลี่ยนแปลงที่เชี่ยวกรากของเทคโนโลยี คำถามหนึ่งที่มักจะเวียนว่ายอยู่ในหัวของคนทำงานสายนี้อยู่เสมอคือ "เราจะยอมจำนนให้กับการวิ่งไล่ตามเครื่องมือใหม่ ๆ ไปตลอดชีวิต หรือเราจะเลือกทำความเข้าใจแก่นแท้เพื่ออยู่เหนือมัน" สัปดาห์ที่ผ่านมา ผมตัดสินใจเปิดหนังสือเล่มหนึ่งที่ชื่อว่า Modern Software Engineering ด้วยความคาดหวังง่าย ๆ เพียงข้อเดียว คือการตามหาคำตอบว่า อะไรคือคุณสมบัติที่แท้จริงของวิศวกรซอฟต์แวร์ที่ดี แต่เมื่ออ่านจบลง ผมกลับพบว่าคำตอบที่ซ่อนอยู่ภายในนั้น ไม่ได้เป็นเพียงแค่คู่มือการเขียนโค้ด แต่เป็นปรัชญาการดำเนินชีวิตและการทำงานที่ลึกซึ้ง
หนังสือเล่มนี้แม้ภายนอกจะดูเหมือนตำราเทคนิคที่เต็มไปด้วยทฤษฎี แต่เนื้อหาภายในกลับมีความเป็นปรัชญาที่สามารถนำไปปรับใช้ได้กับทุกบริบท ไม่ว่าจะเป็นการทำธุรกิจคนเดียว (Solopreneur) การบริหารจัดการความรู้ หรือการพัฒนาตัวเอง ผู้เขียนได้ถอดรหัสหัวใจสำคัญของวิศวกรซอฟต์แวร์เอาไว้สั้น ๆ แต่ทรงพลังว่า “We must become experts at learning and experts at managing complexity” หรือการเป็นผู้เชี่ยวชาญในสองสิ่ง คือ 'การเรียนรู้' และ 'การบริหารจัดการความซับซ้อน'
หากเราลองแกะรอยสองสิ่งนี้ในความหมายที่เรียบง่ายที่สุด การเป็นผู้เชี่ยวชาญด้านการเรียนรู้ (Expert at learning) ประกอบด้วย 5 แกนสำคัญ คือ การลงมือทำซ้ำ ๆ บนสมมติฐานที่เปลี่ยนไป (Iteration) การออกค้นหาคำติชม (Feedback) การก้าวไปข้างหน้าอย่างค่อยเป็นค่อยไป (Incrementalism) การทดลองเพื่อพิสูจน์ (Experimentation) และการเชื่อในสิ่งที่ผ่านการพิสูจน์แล้วจริง ๆ (Empiricism)
ในขณะเดียวกัน การจัดการกับความซับซ้อน (Expert at managing complexity) ก็ต้องการวิธีคิดที่คมชัด ทั้งการย่อยปัญหาใหญ่ให้เล็กลง (Modularity) การจัดกลุ่มสิ่งที่เกี่ยวข้องกันไว้ด้วยกัน (Cohesion) การแยกแยะหน้าที่ออกจากกันอย่างชัดเจน (Separation of Concerns) การสื่อสารเฉพาะสิ่งที่จำเป็น (Abstraction) และการเชื่อมโยงสิ่งต่าง ๆ ไว้แบบหลวม ๆ พอประมาณ (Loose Coupling)
เมื่อมองผ่านเลนส์นี้ เราจะพบว่าสิ่งเหล่านี้ไม่ใช่เรื่องของการเขียนโปรแกรมเพียงอย่างเดียว แต่มันคือวิธีคิดที่เราใช้รับมือกับชีวิตและธุรกิจที่ไร้ระเบียบในปัจจุบัน
แต่จุดที่ทำให้ผมตระหนักรู้มากที่สุด กลับเป็นนิยามของผู้เขียนที่ระบุว่า วิศวกรรมซอฟต์แวร์คือการนำแนวทางทางวิทยาศาสตร์มาใช้เพื่อค้นหา “วิธีการแก้ปัญหาที่ประหยัดและคุ้มค่าที่สุดในเชิงเศรษฐศาสตร์ (Economic solutions)” คำว่า 'ปัจจัยทางเศรษฐศาสตร์' หรือบริบททางธุรกิจ เงินทุน และเงื่อนไขของเวลา เป็นสิ่งที่คนทำงานหลายคน—รวมถึงตัวผมในบางช่วงเวลา—มักจะมองข้ามไป เรามักจะติดกับดักความสมบูรณ์แบบจนเกิดสิ่งที่เรียกว่า "Over Engineering" หรือการขี่ช้างจับตั๊กแตน
ลองจินตนาการว่าหากโจทย์คือการหาผลลัพธ์ให้เท่ากับ 2 วิธีที่ง่ายและคุ้มค่าที่สุดคือการเอา 1 + 1 แต่บ่อยครั้งเรากลับเลือกใช้สมการที่ซับซ้อนอย่าง 2^2 - 2 x 1 + 0 เพียงเพราะมันดูฉลาดและเหนือชั้นกว่า คำตอบที่ได้อาจจะไม่ผิดในเชิงคณิตศาสตร์ แต่มัน "ไม่สมเหตุสมผล" ในเชิงความเป็นจริง เพราะเราได้สูญเสียทรัพยากรและเวลาไปกับสิ่งที่ไม่จำเป็น วินาทีนั้นผมจึงเข้าใจว่า ความเก่งกาจที่แท้จริงไม่ใช่การสร้างสิ่งที่ซับซ้อนที่สุด แต่คือการเลือกวิธีที่เรียบง่ายและสร้างประโยชน์สูงสุดภายใต้ข้อจำกัดที่มีต่างหาก
ในยุคที่ทุกอย่างขับเคลื่อนด้วยความเร็ว สิ่งที่หนังสือ Modern Software Engineering มอบให้ จึงไม่ใช่สูตรสำเร็จในการเขียนโค้ดให้เร็วขึ้น แต่เป็นเข็มทิศที่ช่วยให้เราหยุดคิด ทบทวน และมองย้อนกลับมาที่แก่นของปัญหา ไม่ว่าวันนี้คุณจะกำลังสร้างระบบซอฟต์แวร์ขนาดใหญ่ กำลังปลุกปั้นธุรกิจด้วยตัวคนเดียว หรือกำลังจัดระเบียบชีวิตของตัวเอง การฝึกฝนเป็นผู้เชี่ยวชาญในการเรียนรู้และโอบรับความเรียบง่าย คือหนทางเดียวที่จะทำให้เราเติบโตได้อย่างมั่นคงและมีความหมายในโลกที่เต็มไปด้วยความซับซ้อนใบนี้
Tanarat
A self-taught developer with a love for coffee, a passion for coding, and a commitment to living with knowledge. He shares his space with a cat, surrounded by shelves of endless books.



