บทบาทของนักพัฒนานำในทีมเปรียวคืออะไร?


42

ในทีมพัฒนาที่ไม่คล่องตัวนักพัฒนาที่เป็นผู้นำมักจะ :

  • ตั้งค่ามาตรฐาน (การเข้ารหัสและอื่น ๆ )
  • วิจัยเทคโนโลยีใหม่สำหรับทีม
  • กำหนดทิศทางทางเทคนิคสำหรับทีม
  • มีการพูดครั้งสุดท้ายในเรื่อง
  • ออกแบบสถาปัตยกรรมของระบบ

อย่างไรก็ตามทีมเปรียวทำงานแตกต่างกัน:

  • ทีมเปรียวจะพึ่งพาการออกแบบฉุกเฉินมากกว่าด้านหน้า
  • ทีมว่องไวออกแบบร่วมกันแทนที่จะออกแบบโดยหนึ่งคน
  • ทีมว่องไวตัดสินใจเลือกทิศทางด้านเทคนิคของตัวเอง

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


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

คำตอบ:


46

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

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

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


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

@Brian การตัดสินใจด้านสถาปัตยกรรมจะเป็นเรื่องราวในระยะสั้นอาจเป็นสิ่งที่จัดสรรให้กับสมาชิกที่เฉพาะเจาะจง แต่อย่างอื่นเหมือนกับเรื่องราวอื่น ๆ ควรถูกตรวจสอบโดยเพื่อนเหมือนเรื่องอื่น ๆ อาร์กิวเมนต์เวลาเป็นเรื่องโกหกถ้าคุณพลาด X หรือตัดสินใจลอง Z ว่าคนอื่น ๆ ในทีมไม่คุ้นเคยกับคุณคุณจะใช้เวลามากขึ้นในการพัฒนาผลแม้แต่การโต้เถียงเกี่ยวกับการออกแบบก็ไม่สำคัญเลย . การประชุม / ทบทวนอย่างง่ายเพื่อพูดว่า "ฉันเลือก A เพราะ X, Y, Z" อาจจะใช้เวลาหนึ่งชั่วโมงและทำให้มันเป็นความพยายามร่วมกัน
Ryathal

30

ในทีมที่มีความคล่องตัวทุกคนควรจะวางอัตตาของพวกเขาไว้ด้วยกัน

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

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

นั่นคือในโลกอุดมคติที่ผู้คนสามารถแยกอัตตาของตนออกได้ โชคดี!


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

20

นอกจากคำตอบของ Ryathal :

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

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

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

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


1
สิ่งนี้มีความสำคัญอย่างยิ่งในการประชุมที่มี "Timeboxed" ซึ่งหมายถึงการประชุมหรือการสนทนาที่เฉพาะเจาะจงจะไม่นานเกิน X นาที ในตอนท้ายของเวลามีคนทำการตัดสินใจและทำให้กระบวนการดำเนินไปอย่างต่อเนื่อง นี่อาจเป็น Lead Developer สำหรับสถาปัตยกรรมระบบและการสนทนาที่เกี่ยวข้อง
Chris

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

สิ่งที่คุณอธิบายไว้คือ ScrumMaster
DBedrenko

6

คำอธิบายที่ไม่คล่องตัวของคุณจะไม่ทำให้คำอธิบายความคล่องตัวของคุณเป็นโมฆะ

ทีมเปรียวจะพึ่งพาการออกแบบฉุกเฉินมากกว่าด้านหน้า

ไม่มีอะไรเกี่ยวกับคำจำกัดความของนักพัฒนานำของคุณว่าต้องมีการออกแบบมาก่อน เขาอาจกำหนดทิศทางและเขาอาจยังคงวางรูปแบบเริ่มต้นไว้ การออกแบบนั้นเกิดขึ้นอย่างแน่นอน

ทีมว่องไวออกแบบร่วมกันแทนที่จะออกแบบโดยหนึ่งคน

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

ทีมว่องไวตัดสินใจเลือกทิศทางด้านเทคนิคของตัวเอง

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


6

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

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

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

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


+1 สำหรับ "การทำงานด้วยมือ" ฉันตกลงที่จะมุ่งเน้นไปที่ทางออกที่ดีที่สุดสำหรับสิ่งที่คุณต้องส่งมอบในขณะนี้ มันไม่เกี่ยวกับผู้ที่มาพร้อมกับความคิด
Kwebble

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

ใช่แล้ว. พวกเขาเป็นวิศวกรที่ดีดังนั้นพวกเขาจึงมีบทบาทเป็นวิศวกร (ในทางเทคนิค "สมาชิกในทีม") สิ่งอื่น ๆ ที่พวกเขาจะเป็นอย่างไร
Calphool

3

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

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

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

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


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