ฉันควรปลูกฝังทักษะอะไรบ้างเพื่อก้าวขึ้นเป็นผู้นำในการพัฒนา / ด้านเทคนิค [ปิด]


82

ตอนนี้ฉันเป็นโปรแกรมเมอร์มืออาชีพ ฉันต้องการที่จะขยายชุดทักษะของฉัน แต่ฉันยังต้องการที่จะทำให้อาชีพก้าวไปสู่การเป็นผู้นำการพัฒนาซึ่งเป็นส่วนหนึ่งของทีม ฉันรู้ว่าต้องมีอะไรมากมายให้เรียนรู้ (และนี่ไม่ใช่สิ่งที่จะเกิดขึ้นในทันที) แต่ฉันคิดว่าฉันฉลาดพอที่จะทำมันและฉันก็พร้อมที่จะท้าทาย

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

ในฐานะโปรแกรมเมอร์ตอนนี้ฉันควรทำขั้นตอนใดบ้างเพื่อพาฉันไปสู่เป้าหมายนี้? ฉันควรจัดลำดับความสำคัญอะไร


มีโอกาสที่ บริษัท ปัจจุบันของคุณที่จะได้รับการเลื่อนตำแหน่งเป็นหัวหน้าทีมหรือไม่? หากไม่มีประสบการณ์นำทีมฉันสงสัยว่ามี บริษัท หลายแห่งที่จ้างจากภายในเท่านั้น
JeffO

@JeffO ฉันเพิ่งเปลี่ยนงานจริง ๆ ฉันไม่รู้ว่าฉันจะมีโอกาสที่นี่หรือไม่ - ฉันคิดว่ามีความเป็นไปได้ แต่เป็นการเริ่มต้นเล็ก ๆ และฉันคิดว่าจะมีผู้นำการพัฒนาครั้งละหนึ่งคนเท่านั้น
lunchmeat317

2
ทักษะเดียวเท่านั้น: ความสามารถในการโน้มน้าวบุคคลที่สามารถให้ตำแหน่งนี้เพื่อมอบตำแหน่งนี้ให้คุณ
vortexwolf

1
ตามที่ปรากฎมีความเป็นไปได้ที่ชัดเจนว่าฉันไม่ได้ถูกตัดออกจากเรื่องนี้ เท่าที่ฉันต้องการที่จะก้าวหน้าในอาชีพของฉันในทิศทางนี้ฉันคิดว่าฉันตกอยู่ในด้านนักพัฒนาของสิ่งต่าง ๆ - ฉันแค่ต้องการวางหัวของฉันและรหัสบางครั้ง ยังคงพิจารณาความเป็นไปได้ แต่ตอนนี้ด้วยความระมัดระวัง
lunchmeat317

คำตอบ:


90

ในการเป็นผู้นำทางเทคนิคต่อไปนี้เป็นสิ่งจำเป็น

  • ความสามารถในการให้คำปรึกษาสมาชิกพนักงานทุกระดับของอาวุโสจากคนที่อยู่นอกสถาบันมา 3 เดือนจนถึงบุคคลที่ได้รับการเขียนโปรแกรมมา 30 ปี

  • ความรู้ที่ดีของโดเมนการพัฒนาของคุณ ซึ่งรวมถึง: ภาษา, กรอบงาน, ยูทิลิตี้, สภาพแวดล้อมการพัฒนา

  • ความเข้าใจอย่างถ่องแท้เกี่ยวกับระบบการจัดการปัญหาทักษะการจัดการโครงการและการควบคุมเวอร์ชัน

  • เป็นนักฆ่าบั๊ก

  • รู้วิธีดำเนินการตรวจสอบโค้ดในเวลาที่เหมาะสมสิ่งที่ควรมองหาและวิธีลดระยะเวลาที่ต้องใช้ในการพักและการเปลี่ยนแปลงที่จะทำ

  • ติดตามการพัฒนาในโดเมนการพัฒนาของคุณ ตัวอย่างเช่นหากคุณไม่ได้เรียนรู้กรอบหรือเทคโนโลยีใหม่จาก. NET 2 คุณจะทำสิ่งต่าง ๆ ในวันนี้

  • วิธีเขียนการทดสอบหน่วยและ mocks และเพื่อให้นักพัฒนาของคุณเขียนเช่นกัน

  • ความรู้เกี่ยวกับรูปแบบการออกแบบคืออะไรและควรใช้เมื่อใด

  • ความรู้เกี่ยวกับสิ่งที่มีกลิ่นรหัสและวิธีการลดพวกเขา

  • บูรณาการอย่างต่อเนื่อง

  • ความสามารถในการวางแผนโครงการและเผยแพร่

ขึ้นอยู่กับองค์กรของคุณและคุณมีสถาปนิกในทีมหรือไม่คุณอาจต้องรู้สิ่งต่อไปนี้:

  • ความสามารถในการจัดองค์ประกอบโครงการของคุณและแบ่งออกเป็นส่วนที่ใช้งานได้

  • ความเข้าใจอย่างละเอียดของความปลอดภัยรวมถึงวิธีการจัดการรหัสผ่านที่ถูกต้องการแยกระบบการรักษาความปลอดภัยข้อมูล ฯลฯ

  • แนวคิดองค์กรเช่นบัสบริการ, คิวข้อความ, BizTalk

  • รูปแบบการออกแบบองค์กร

  • สถาปัตยกรรมบริการ / RPC เช่น SOAP และ REST

  • กรอบ ORM เช่น Hibernate, Entity Framework, Doctrine

  • ปรับใช้อย่างต่อเนื่อง

  • เมฆ

  • ความสามารถในการแนะนำเทคโนโลยีที่ถูกต้องที่จะใช้สำหรับโครงการ สิ่งนี้อาจเป็นเรื่องยากหากทีม / ร้านค้าของคุณใช้. NET หรือ PHP หรือ Java เท่านั้น

  • ออกแบบแอพพลิเคชั่นในลักษณะที่การปรับปรุงในอนาคตจะสามารถรองรับได้ง่าย

หากคุณจะเป็นผู้จัดการฝ่ายพัฒนาคุณจะต้อง:

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

และในที่สุดคะแนนแนะนำอื่น ๆ :

  • เรียนรู้นอกโดเมนการพัฒนาของคุณ

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

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

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

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


2
ฉันวาดภาพความคิดบางอย่างที่ฉันสามารถคิดได้อย่างรวดเร็ว ฉันจะกลับมาและเพิ่มอีกในภายหลัง คำถามที่ดี.
Sam

ฉันได้รับประโยชน์จาก Toastmasters เป็นอันดับสอง มันช่วยฉันได้ไม่มากนักในอาชีพการงานของฉัน ความสามารถในการสื่อสารความคิดของคุณอย่างชัดเจน (โดยเฉพาะอย่างยิ่งความคิดด้านเทคนิคกับคนที่ไม่ใช่ด้านเทคนิค) เป็นทักษะที่มีค่ายิ่งที่จะมี
Jason Swett

27

จากประสบการณ์ของฉันหัวหน้ากลุ่มมีส่วนร่วมน้อยกว่าในการเขียนโปรแกรมแบบลงมือปฏิบัติและการจัดการ ด้วยเหตุนี้ฉันขอแนะนำดังต่อไปนี้

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

  2. เรียนรู้ที่จะหลายงานและจัดการเวลา ถ้าคุณทำได้ดีในตอนนี้มันดี: พัฒนามากขึ้น ในฐานะนักพัฒนาคุณมีเพียงงาน / โครงการปัจจุบันที่คุณต้องกังวล ในฐานะผู้นำคุณจะมี

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

  4. ตามแนวมืออาชีพมากขึ้นพิจารณาการฝึกอบรมบางอย่างที่ไม่เพียง แต่จะเพิ่มความสามารถของคุณ แต่เปลี่ยนมุมมองของคุณ หลักสูตรความผิดพลาดในการพูดการจัดการโครงการซอฟต์แวร์จะไม่เจ็บ Lean Six Sigma ยังเป็นโปรแกรมการฝึกอบรมที่ดีมาก (ฉันสามารถเป็นพยานได้ถึงประสิทธิภาพ) ที่จะช่วยให้คุณมองปัญหาในการแก้ปัญหาจากมุมที่เป็นตรรกะมากขึ้น ไม่ต้องพูดถึงว่าจากตำแหน่งผู้นำคุณพร้อมสำหรับบทบาทระดับสูงที่จะต้องใช้ทักษะด้านเทคนิคน้อยลงและความสามารถในการจัดการที่มากขึ้น

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


2
คำตอบที่ดีฉันชอบวิธีที่คุณจดบันทึกทุกสิ่งที่ในฐานะนักพัฒนาโดยทั่วไปคุณไม่มีความรู้เกี่ยวกับ - โดยเฉพาะอย่างยิ่งการมอบหมาย งานล่าสุดฉันมอบหมายทุกอย่างที่ทำได้และยังมีภูเขาอีกหลายอย่างที่จะทำให้ตัวเองยุ่ง จากนั้นในช่วงเวลาว่าง (หายาก) ฉันจะทำสิ่ง "น่าเบื่อ" - ข้อเสนอเพื่อช่วยแก้ไขข้อบกพร่องเล็ก ๆ น้อย ๆ เอกสาร ต้องนำจากด้านหน้า
Rocklan

2
+1 สำหรับการเน้นว่าบทบาท 'นำ' มักเกี่ยวข้องกับการจัดการมากกว่าทักษะทางเทคนิค
Krease

นี่คือคำตอบที่โดดเด่นและรวบรวมสาระสำคัญของบทบาท ทำได้ดี.
Lloyd Moore

14

สิ่งที่แซมไม่ได้พูดนั้นสำคัญเช่นกัน:

  • วิธีกำหนดข้อมูลจำเพาะและให้นักพัฒนาซอฟต์แวร์รายอื่นทำงาน ส่วนหนึ่งของงานของคุณคือให้นักพัฒนารายอื่นใช้ประโยชน์ 100% การเขียนรายละเอียดที่ไม่คลุมเครือนั้นสำคัญมาก

  • วิธีสร้างแอปพลิเคชั่นโครงกระดูก / ต้นแบบที่ทุกคนควรปฏิบัติตาม

  • วิธีการเสริมสร้างขวัญกำลังใจของทีมที่ดี

  • วิธีเข้าร่วมขับรถและนำไปสู่การประชุมวิธีจัดทำเอกสารรายการการกระทำ

  • วิธีการประเมินเขียนแผนโครงการและปรับปรุงแผนโครงการ

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

  • วิธีการพูดคุยกับผู้บริหาร พวกเขาพูดภาษาอื่นกับเรา ให้การแก้ปัญหาไม่ใช่ปัญหา บอกพวกเขาว่าสิ่งทางเทคนิคมีความหมายกับพวกเขาอย่างไร

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


ฉันคิดว่าหลายชิ้นของคุณไปที่ถังสถาปนิกหรือ PM แต่ใช่บางครั้งผู้นำ dev ต้องทำเช่นนั้น
SandRock

11

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

  • วิธีแก้ปัญหายากหรือ
  • ทำไมมันไม่สามารถแก้ไขในเวลาที่กำหนดหรือ
  • แม้จะสำคัญน้อยกว่าก็คือการแก้ปัญหา

สำหรับสิ่งนี้คุณต้องมีทักษะในการอธิบายสิ่งต่าง ๆ ทางเทคนิคกับคนที่ไม่ใช่ด้านเทคนิคในแง่ที่ไม่ใช่ด้านเทคนิค และมันยากมาก เช่นพิจารณาอธิบาย P = NP ถึง 6 ปี น่าเสียดายที่ไม่มีการฝึกอบรมอย่างเป็นทางการสำหรับสิ่งนั้นและคุณต้องเรียนรู้ด้วยตัวเอง

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


1
"ต้องรู้วิธีซ่อนหน้าน่าเบื่อของคุณและดูมีพลัง" ฮ่าฮ่าฮ่า
Adrien Be

ฉันรู้สึกเบื่อเมื่อเริ่มต้นการประชุมเหล่านี้ยกเว้นบางสิ่งที่เกี่ยวข้องกับเทคนิคถูกกล่าวถึง
Akshay Mukadam
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.