ปัจจุบัน คุณสามารถเปิด Google และป้อนคำค้นหา “most important skill software developer” จากนั้นคุณจะได้ผลลัพธ์ที่มีค่ามากมาย เราสามารถลองใช้วลีที่คล้ายกันเพื่อเพิ่มรายการให้สมบูรณ์ยิ่งขึ้น ตัวอย่างเช่น 13 Technical Skills You Should Have As A Developer หรือ The most valuable software developer skills to get hired now
ฉันเห็นว่าคำตอบเกือบทั้งหมดยอดเยี่ยมและให้ข้อมูลที่เป็นประโยชน์ จากข้อมูลนั้น นักพัฒนาซอฟต์แวร์สามารถปรับปรุงทักษะของตน ในขณะที่ผู้สรรหาสามารถสร้างเกณฑ์ที่เป็นประโยชน์เพื่อประเมินผู้สมัครของตน
ในบทความนี้ ฉันพยายามที่จะมีมุมมองที่แตกต่าง ฉันไม่ต้องการมีรายการยาว ๆ ที่ไม่มีใครสามารถทำได้สมบูรณ์แบบในทุกข้อที่ระบุ แทนที่นั้น ฉันต้องการเลือกสิ่งที่สำคัญที่สุด
การสื่อสาร – ทักษะที่สำคัญที่สุดของนักพัฒนาซอฟต์แวร์
จำกัดขอบเขตให้ชัดเจน
ก่อนอื่น เรามาจำกัดหัวข้อนี้ไปที่อุตสาหกรรมการพัฒนาซอฟต์แวร์ ทักษะการสื่อสารของนักพัฒนาซอฟต์แวร์นั้นแตกต่างอย่างสิ้นเชิงจากทักษะการสื่อสารของพนักงานขาย
เทคโนโลยีสารสนเทศหมายถึงการสื่อสาร
ทุกคนรู้ว่าการพัฒนาซอฟต์แวร์เป็นส่วนหนึ่งของเทคโนโลยีสารสนเทศ และเทคโนโลยีสารสนเทศคือการสร้างระบบที่รับข้อมูลเข้า จากนั้นประมวลผลเพื่อส่งคืนข้อมูลที่ส่งออกตามที่คาดหวัง
ในชีวิตจริง เมื่อใครบางคนบอกอะไรกับอีกคน ผู้ฟังจะได้รับข้อความ ประมวลผล และมีข้อความที่เหมาะสมเพื่อตอบกลับ
ความแตกต่างระหว่างระบบเทคโนโลยีสารสนเทศและการสื่อสารในชีวิตจริงคืออะไร? เราไม่สามารถเห็นความแตกต่างใด ๆ นอกจากสภาพแวดล้อมการประมวลผล ชีวิตจริงเทียบกับเครื่องจักร
นี่คือเหตุผลที่ฉันสามารถพูดได้ว่า “การสื่อสารคือทักษะที่สำคัญที่สุดของนักพัฒนาซอฟต์แวร์” เราจะขยายเรื่องนี้ด้วยประเด็นต่อไปนี้
เมื่อนักพัฒนาต้องแสดงการสื่อสารที่ดีที่สุดในการพัฒนาซอฟต์แวร์
ดังที่กล่าวไว้ “การสื่อสารคือทักษะที่สำคัญที่สุดของนักพัฒนาซอฟต์แวร์” ต่อไป เราต้องชี้ให้เห็นสถานการณ์ที่ต้องใช้ทักษะการสื่อสาร
การวิเคราะห์ความต้องการต้องการทักษะที่สำคัญที่สุดของนักพัฒนาซอฟต์แวร์ – การสื่อสาร
คุณมอบเอกสารและข้อกำหนดจำนวนมากให้เขา คนที่มีทักษะการสื่อสารที่ดีสามารถเข้าใจทุกประเด็นได้อย่างง่ายดาย ยิ่งไปกว่านั้น เขาสามารถจัดเรียงประเด็นทั้งหมดในแง่มุมต่าง ๆ: ตามลำดับความสำคัญ และตามระดับรายละเอียด จากนั้น เขาสามารถถามคำถามที่มีค่าเพื่อระบุเส้นทางที่ไม่ชัดเจน โดยเฉพาะอย่างยิ่ง เขาสามารถรับรู้ความเสี่ยงที่อาจเกิดขึ้นและมีรายงานที่มีค่าให้กับลูกค้า ซึ่งลูกค้าสามารถตัดสินใจได้ดี
เกี่ยวกับ “การถามคำถาม” เป็นทักษะจริง ๆ ที่นักพัฒนาทุกคนต้องได้รับการติดตั้ง กล่าวอีกนัยหนึ่ง มันคือประเด็นสำคัญที่สุดของทักษะที่สำคัญที่สุดของนักพัฒนาในการพัฒนาซอฟต์แวร์ การถามคำถามไม่เพียงเพื่อขอคำอธิบายเพิ่มเติมของประเด็นเดียว แต่ยังเพื่อเพิ่มข้อมูลในแง่มุมอื่น ๆ เมื่อนักพัฒนาซอฟต์แวร์ที่สื่อสารได้ดีถามคำถาม เขาได้พิจารณาผลกระทบโดยตรงและการเปลี่ยนแปลงหลายอย่าง ดังนั้น เขาสามารถประมวลผลข้อมูลจำนวนมาก นั่นคือสิ่งที่ทำให้เขาแตกต่าง
การพัฒนาซอฟต์แวร์ต้องการทักษะที่สำคัญที่สุดของนักพัฒนา – การสื่อสาร
การเขียนโปรแกรมมากกว่าแค่การเขียนโค้ดที่สามารถประมวลผลได้ มันถูกเขียนด้วยข้อมูลที่อุดมสมบูรณ์ ทุกบรรทัดที่คุณเขียนจะเป็นข้อความที่คุณต้องการส่งให้เพื่อนร่วมทีมคนอื่น ๆ นั่นคือเหตุผลที่การสื่อสารที่ดีในการเขียนโค้ดต้นฉบับมีความสำคัญมาก
1) การตั้งชื่อคือการสื่อสาร
มีคนกล่าวว่านักพัฒนาที่ดีสามารถใช้เวลาหลายชั่วโมงเพื่อตั้งชื่อตัวแปรเพียงตัวเดียว จากประสบการณ์ของฉัน มันถูกต้อง 100% แม้ว่ามันจะไม่ได้ใช้กับทุกกรณี แต่มันใช้ได้กับกรณีที่สำคัญ ฉันมักใช้เวลามากในการกำหนดชื่อที่ดีสำหรับตัวแปร คลาส อินเทอร์เฟซ เมธอด และอื่น ๆ ของฉัน เหตุผลคือ ชื่อที่ดีจะให้ข้อมูลสูงสุดเพื่อให้ผู้อื่นสามารถเข้าใจวัตถุประสงค์และแม้กระทั่งวงจรชีวิตของมันได้อย่างง่ายดาย
2) การเขียนความคิดเห็นคือการสื่อสาร
ปัจจุบัน ฉันชอบสไตล์การเขียนโค้ดที่มีความคิดเห็นน้อย นั่นไม่ได้หมายความว่าฉันไม่ใช้ความคิดเห็น แต่ฉันเพิ่มข้อมูลสูงสุดในชื่อของตัวแปร คลาส อินเทอร์เฟซ และเมธอดเหล่านี้ อย่างไรก็ตาม พวกมันสั้นมาก ดังนั้น พวกมันสามารถบรรจุข้อมูลได้จำกัด นั่นคือเหตุผลที่มีหลายกรณีที่เราต้องใช้ความคิดเห็นในโค้ดเพื่ออธิบายเพิ่มเติม
3) การประยุกต์ใช้ design patterns คือการสื่อสาร
มันไม่เพียงแค่แนวปฏิบัติที่ดีที่สุดในการออกแบบสิ่งต่าง ๆ ในสถานการณ์ที่คล้ายกัน แต่ยังเป็นวิธีที่เราส่งข้อมูลให้เพื่อนร่วมทีมคนอื่น ๆ ประเด็นคือ ฉันเพียงแค่อ่านโค้ดไม่กี่บรรทัดที่ประยุกต์ใช้ design pattern จากนั้น ฉันสามารถเข้าใจปัจจัยทั้งหมดที่เกี่ยวข้องได้อย่างง่ายดายโดยไม่ต้องอ่านเพิ่มเติม ยิ่งไปกว่านั้น ฉันสามารถเข้าใจวิธีการทำงานของไลบรารีบุคคลที่สามทางเทคนิคโดยการรับรู้การประยุกต์ใช้ design pattern ของพวกมัน นี่มีความสำคัญอย่างยิ่งในภาษาโปรแกรม OOP ที่ทรงพลังเช่น Java, .NET และ C++
4) การปฏิบัติตามกระบวนการพัฒนาคือการสื่อสาร
ทำไมไม่ล่ะ? กระบวนการและเวิร์กโฟลว์เป็นกระดูกสันหลังในการขับเคลื่อนประสิทธิภาพโครงการ ดังนั้น ผู้สื่อสารที่ดีเข้าใจว่าแต่ละขั้นตอนของเวิร์กโฟลว์และแต่ละสถานะของกระบวนการจะมีผลกระทบต่อผู้มีส่วนได้ส่วนเสีย การอัปเดตสถานะงานเป็นขั้นตอนที่ง่ายที่สุด ซึ่งนักพัฒนาต้องทำให้เสร็จสิ้นแบบเรียลไทม์ ยิ่งไปกว่านั้น เราต้องติดตามเวิร์กโฟลว์ ค้นหาจุดอ่อนและเสนอวิธีปรับปรุง
5) การปฏิบัติตามข้อตกลงการพัฒนาคือการสื่อสาร
ข้อตกลงมีความสำคัญอย่างยิ่งในการขับเคลื่อนประสิทธิภาพโครงการในระดับรายละเอียด มีข้อตกลงหลักบางประการเช่นข้อตกลงการเขียนโค้ด ข้อตกลงเอกสาร และข้อตกลงการรายงาน พวกมันเพื่อให้แน่ใจว่าสมาชิกทั้งหมดของโครงการทำงานในลักษณะเดียวกัน บางครั้ง ข้อตกลงไม่ได้เข้มงวดเท่ากระบวนการ
การอ่าน ความเข้าใจ และการปฏิบัติตามข้อตกลงที่ดีกำหนดนักพัฒนาที่ดีในการสื่อสาร เขาได้รับข้อมูลเข้า (การอ่าน) แล้วทำผลลัพธ์ที่ดี (ความเข้าใจและการปฏิบัติตาม)
เอกสารซอฟต์แวร์ต้องการทักษะที่สำคัญที่สุดของนักพัฒนา – การสื่อสาร
หัวข้อนี้อยู่ในขอบเขตของนักพัฒนาและบุคคลอื่น ๆ เช่น QC/Tester, IT admin เป็นต้น อย่างไรก็ตาม จากมุมมองของนักพัฒนา การเขียนเอกสารมีความสำคัญมาก นักพัฒนาต้องจัดเตรียมเอกสารและคำแนะนำที่ดี พวกมันช่วยให้ผู้ที่เกี่ยวข้องเข้าใจวิธีการทำงานในแง่ของวิศวกรรม นอกจากนี้ พวกมันช่วยให้ IT/Admin สามารถติดตามการตั้งค่าและดูแลรักษาในสภาพแวดล้อมการทำงานได้อย่างง่ายดาย
ทำไมการสื่อสารจึงสำคัญยิ่งขึ้นในการเอาต์ซอร์สการพัฒนาซอฟต์แวร์นอกประเทศ?

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