#1 tech recruiter in thailand

หลีกเลี่ยงการใช้ Ego ในการ Coding

ในชีวิตการทำงานเราทุกคนล้วนเจอกับคนที่มี Ego แม้กระทั่งในบางสถานการณ์ตัวเราเองก็มี Ego เช่นกัน โดยเฉพาะอย่างยิ่งคนที่อยู่ในทีม Developer คุณอาจต้องมีส่วนร่วมในการตัดสินใจในการสร้าง/เลือก อะไรบางอย่าง และอาจต้องเกี่ยวข้องกับผู้คนที่หลากหลาย ซึ่งคุณ Davide de Paolis ผู้เขียนบทความนี้ มีข้อแนะนำให้พวกเราหลีกเลี่ยงการใช้ Ego ในการ Coding มาติดตามเรื่องนี้กันเลย

คงมี Developer หลายคนคงเจอสถานการณ์เช่น ถกเถียงกันในที่ประชุมในเรื่องที่ไม่ใช่ประเด็นสำคัญหรือเกี่ยวกับทางด้าน Technical เลย หรือ มีการโต้เถียงกันอย่างไม่หยุดหย่อนในเรื่องที่ว่า อะไรดีกว่าอะไร เช่น React กับ Vue, Visual Studio กับ Intellij IDEA (หรือ VIM) เป็นต้น ทั้งที่ในหลาย ๆ ครั้ง สิ่งเหล่านี้ก็ไม่ได้แตกต่างกันมากขนาดนั้น

ในบาง Solutions ต้องได้รับการ Evaluate อย่างชัดเจนแน่นอน ก่อนที่จะเริ่ม Project ใหม่ แต่การ Evaluate นี้ก็ต้องขึ้นอยู่กับ Data ที่มี, จาก Requirements ของลูกค้า และข้อจำกัดที่เป็นไปได้จาก Tool ที่ต้องนำมาใช้ ไม่ใช่ตัดสินจากความชอบส่วนตัว

แต่ในที่สุดแล้วลูกค้า หรือ User กลับไม่ได้สนใจว่า Web App ของเรา จะถูกสร้างขึ้นด้วย Technology ที่ยอดเยี่ยมหรือดีที่สุดหรือไม่ พวกเขาสนใจแค่ว่า มันใช้งานได้รวดเร็วและใช้งานได้ดีหรือไม่

ปัญหาที่คุณต้องแก้ สำคัญกว่า Code ที่คุณเขียน

ในช่วงหลายปีที่ผ่านมาคุณ Davide เองก็พยายามที่จะไม่ยึดติดกับการตัดสินใจในสิ่งที่เกี่ยวกับ Technology โดยเฉพาะเรื่องที่สำคัญรอง ๆ ลงมา เช่น Linter, Test Framework หรือ Bundler ซึ่งโดยส่วนใหญ่เวลาต้องเปรียบเทียบหรือต้องตัดสินใจเลือกอะไร ก็มักจะขึ้นอยู่กับความคิดเห็นซะเป็นส่วนใหญ่ แต่หากต้องเลือกระหว่าง อะไรที่ค่อนข้างเก่าแก่ กับ สิ่งใหม่ ๆ หากตราบมันทำงานได้ เขาก็มีแนวโน้มที่จะเลือกสิ่งใหม่ ๆ มากกว่า เขาชอบที่จะลองสิ่งใหม่ ๆ และชอบที่จะเรียนรู้อยู่เสมอ เขาคิดว่าสิ่งที่สำคัญก็คือการส่งมอบงานและเราไม่สามารถเปลี่ยน Framework, ภาษา ในทุก Project ได้ เพราะมันอาจเสียทั้งเวลา, ความทุ่มเท และเงิน

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

อันที่จริง Davide ชอบที่จะพิสูจน์ว่ามันผิดไว้ก่อน เพราะ นั่นหมายถึงว่า เขากำลังผิดพลาดอยู่ หรือหมายถึง เขาสามารถทำสิ่งที่ดีกว่าและเรียนรู้บางสิ่งได้

ในท้ายที่สุดแล้ว มันไม่สำคัญว่าใครจะเป็นฝ่ายถูก อะไรที่เป็น Solution นั่นถือว่าถูกต้องโดยไม่ว่ามันเป็นของใครก็ตาม และมันก็ไม่จำเป็นต้องเป็นสิ่งที่ “ดีที่สุด” เสมอไปด้วย

ประเด็นสำคัญก็คือ:

  • การมีตัวเลือกไม่ได้สำคัญ เว้นแต่ว่าจะมีข้อเท็จจริงและข้อมูลสนับสนุน
  • คำว่า “ดีที่สุด” ถือเป็นอุปสรรคของสิ่งที่ “ดี” และบ่อยครั้งที่สิ่งที่คุณ (หรือลูกค้า) ต้องการอาจไม่ใช่ทางออกที่ดีที่สุด แต่เป็น Solution ที่เหมาะสมกับ Requirements, เวลา และเงิน

เมื่อมีการอภิปรายทาง Technology เกิดขึ้น ไม่ว่าจะเป็นการเลือก Technology สำหรับ Project ต่อไป หรือ Code Design สำหรับ Feature ถัดไป หรือ Code Review ก็ตาม อยากให้ทิ้ง Ego ของคุณไปก่อน

การพูดคุยหารือกัน มันเกี่ยวกับเรื่อง Code, Technology และ Solution มันไม่ได้เกี่ยวอะไรกับคุณเลย มันไม่ได้เกี่ยวกับว่าคุณเจ๋งหรือเชี่ยวชาญมากแค่ไหน ทิ้ง Ego, แยกความรู้สึกส่วนตัวออกไปก่อน ยอมรับการเปลี่ยนแปลง, ยอมรับคำวิจารณ์, เรียนรู้จากประสบการณ์ทุกอย่างที่คุณได้เจอ

แยกแยะอารมณ์/ความรู้สึกออกจาก Code ของคุณ

การแยกแยะอารมณ์/ความรู้สึกออกจาก Code ไม่ได้หมายความว่า คุณจะละเลยหรือไม่สนใจในสิ่งที่คุณทำ อย่าแยกความรู้สึกออกจากงานที่คุณทำ ให้ Focus ไปที่ผลลัพธ์ที่จะออกมา

หากคุณใส่ความภาคภูมิใจลงไปใน Code ที่คุณเขียนมากเกินไป หรือ คิดว่าการ Implement ของคุณเป็น Solution เดียวที่เป็นไปได้และ Perfect แล้วจะทำให้คุณเป็น Developer ที่ดีและเก่งแล้วล่ะก็ แน่นอนว่าคุณอาจจะรู้สึกเหมือนถูกโจมตีหรือเสียความรู้สึก เมื่อมีคนวิพากษ์วิจารณ์สิ่งที่คุณทำ หรือแนะนำในสิ่งที่แตกต่างออกไป ดังนั้น จงอย่าสนใจกับความรู้สึกส่วนตัวมากเกินไป

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

การพูดคุยกัน ไม่ใช่ การแข่งขัน

การที่คนอื่นถูกต้อง มันก็ไม่ได้หมายความว่า คุณผิด ความคิดเห็นที่แตกต่างจากคุณ ก็ไม่ถือเป็นการโจมตีในสิ่งที่คุณคิดว่ามันถูกต้อง

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

เรื่องนี้เองทำให้ Davide เปลี่ยนใจในช่วงปลายปีที่ผ่านมา คือก่อนที่เขาจะเป็น Developer ที่มักต่อสู้เพื่อให้ได้การ Design ที่ดีที่สุด มันต้องมี Design Pattern, Dependency Injection, Interfaces ที่ดี มันจะต้องมีการพิสูจน์ได้ในอนาคตและยืดหยุ่นสำหรับการ Implement และการเปลี่ยนแปลง Requirements ในอนาคต จากนั้นเขาก็พบว่า การ Implement เพิ่มเติมเหล่านั้นมักไม่เกิดขึ้นจริง ไม่ว่าจะเป็นเรื่องความซับซ้อนและความยืดหยุ่นก็ตาม เมื่อมี Requirements ใหม่ขึ้นมา ก็มักจะเป็นอุปสรรคในการ Design อยู่ดี

ดังนั้นเขาจึงค่อย ๆ เปลี่ยนวิธีคิดเหล่านั้น และใช้วิธีที่เรียบง่ายกว่า ยังคงให้มีความยืดหยุ่น แต่ก็เน้นในสิ่งที่เป็นอยู่ตอนนี้ ไม่ใช่ในสิ่งที่ “แค่อาจจะเป็น”

ในฐานะ Software Engineer ที่ดี เขาพยายามคาดการณ์ปัญหา แต่ก็ไม่ได้หมกมุ่นกับการเขียนทุกสิ่งที่เป็นนามธรรมเพื่อแค่เตรียมพร้อมสำหรับการเปลี่ยนแปลงในอนาคตอีกต่อไป

มุ่งเน้นไปที่การส่งมอบ Value ไม่ใช่เพื่อพิสูจน์ว่าคุณเป็นคนที่เจ๋งที่สุด

โปรดจำไว้เสมอว่า Code สามารถแก้ไขได้, Code สามารถปรับปรุงให้ดีขึ้นได้ และ Code สามารถถูกลบได้เช่นกัน

คุณไม่มีทางที่จะรู้ไปหมดทุกสิ่ง มีสิ่งคุณสามารถเรียนรู้หรือต้องเรียนรู้อยู่เสมอ คุณไม่ได้สมบูรณ์แบบ อาจมีใครบางคนที่ดีและเก่งกว่าคุณเสมอ (และถ้าไม่มี บางทีคุณอยู่ผิดทีมก็ได้ คุณควรต้องพัฒนาตัวเองและก้าวหน้าต่อไป และคุณก็ไม่ควรเป็นคนที่ฉลาดที่สุดในทีมด้วย)

ทั้งหมดนี้คือสิ่งที่จะแนะนำ นอกจากมันจะไม่ทำให้คุณด้อยค่าลงแล้ว ในทางตรงข้าม มันเป็นสิ่งที่ดีและท้าทายตัวคุณเองอีกด้วย จงเขียน Code ด้วยความภาคภูมิใจแต่ก็มีความนอบน้อม ลงใส่ Passion ลงในงานของคุณและทิ้ง Ego ไว้ข้างหลัง และจงเป็นคนที่ยอดเยี่ยม แต่รู้จักขอบคุณในผู้อื่น

ISM Technology Recruitment Ltd. (#1 Tech Recruiter in Thailand) เราเชี่ยวชาญในธุรกิจ IT Recruitment & IT Outsourcing โดยเฉพาะ เปิดทำการกว่า 28 ปี มีพนักงานทุกสายและทุกระดับทางด้าน IT ที่ได้ร่วมงานกับลูกค้าองค์กรใหญ่ที่มีชื่อเสียงและบริษัทข้ามชาติมากมาย หากคุณเป็นคน IT ที่อยากทำงานท้าทายและร่วมงานกับองค์กรชั้นนำ สามารถฝากประวัติการทำงาน (Resume) ของคุณไว้กับ ISM ได้ที่ https://www.ismtech.net/submit-your-resume แล้วคุณจะพบว่าอนาคตและโอกาสก้าวหน้ากำลังรอคุณอยู่

Source: https://dev.to/

th