วิศวกรซอฟต์แวร์ถกเถียงเรื่องอะไรคือ "รสนิยมที่ดี" นอกเหนือจากทักษะเทคนิค

ทีมชุมชน BigGo
วิศวกรซอฟต์แวร์ถกเถียงเรื่องอะไรคือ "รสนิยมที่ดี" นอกเหนือจากทักษะเทคนิค

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

ความแตกต่างระหว่างทักษะและรสนิยม

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

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

ปัจจัยความยืดหยุ่น

ธีมสำคัญที่เกิดขึ้นจากการอภิปรายคือความสำคัญของการปรับตัว วิศวกรที่มีรสนิยมดีจะปรับแนวทางของตนตามความต้องการของโปรเจกต์ ขนาดทีม ข้อจำกัดของเวลา และข้อกำหนดทางธุรกิจ พวกเขาเข้าใจว่าวิธีแก้ปัญหาที่ดีที่สุดในบริบทหนึ่งอาจผิดโดยสิ้นเชิงในอีกบริบทหนึ่ง

วิศวกรที่ยังไม่เป็นผู้ใหญ่มีความยืดหยุ่นน้อยเกินไปเกี่ยวกับรสนิยมของตน พวกเขารู้ว่าตนชอบอะไร แต่เข้าใจผิดว่าความชอบนั้นเป็นจุดยืนทางวิศวกรรมที่มีหลักการ

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

ปัญหาบริบททางธุรกิจ

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

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

สัญญาณของรสนิยมทางวิศวกรรมที่แย่:

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

ความขัดแย้งเรื่องความสามารถในการอ่าน

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

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

ค่านิยมทางวิศวกรรมหลักที่กล่าวถึง:

  • ความยืดหยุ่นต่อความล้มเหลว: ความสามารถของระบบในการจัดการกับความล้มเหลวและฟื้นตัวโดยอัตโนมัติ
  • ความเร็ว: การปรับปรุงประสิทธิภาพและการพิจารณาด้านประสิทธิภาพ
  • ความอ่านง่าย: ความชัดเจนของโค้ดและความง่ายในการปฐมนิเทศสมาชิกทีมใหม่
  • ความถูกต้อง: แนวทางการทดสอบ ความปลอดภัยของประเภทข้อมูล และการตรวจสอบอย่างเป็นทางการ
  • ความยืดหยุ่น: ความง่ายในการขยายและปรับเปลี่ยนระบบ
  • ความสามารถในการพกพา: ความเป็นอิสระจากสภาพแวดล้อมการดำเนินงานเฉพาะ
  • ความสามารถในการขยายตัว: ความสามารถในการจัดการกับการเพิ่มขึ้นของการเข้าชมและโหลด
  • ความเร็วในการพัฒนา: ความรวดเร็วในการนำฟีเจอร์ไปใช้งานและปรับใช้

การระบุและพัฒนารสนิยมที่ดี

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

ส่วนใหญ่เห็นพ้องกันว่ารสนิยมที่ดีพัฒนาขึ้นผ่านการสัมผัสกับโปรเจกต์ที่หลากหลายและการให้ความสนใจอย่างระมัดระวังต่อสิ่งที่ได้ผลและสิ่งที่ไม่ได้ผล วิศวกรต้องประสบการณ์บริบทที่แตกต่างกัน ขนาดทีมที่แตกต่างกัน และข้อกำหนดทางธุรกิจที่แตกต่างกันเพื่อพัฒนาการตัดสินใจที่จำเป็นสำหรับการแลกเปลี่ยนที่เหมาะสม

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

อ้างอิง: What is good taste in software engineering?