我将与我的一些朋友一起进行软件项目,并且被任命为技术主管。这些家伙根本都不是一个糟糕的程序员,但我确实比他们有更多的经验。我需要能够在团队中的每个人之间分配工作,同时还要确保我们不会互相踩脚。他们满足了使该项目成功所需的相对较高的质量和可伸缩性标准,而无需我审查他们所做的一切。
如何避免微管理的同时保持标准?是否足以制作一些图表,安排一些代码审阅并相信我将能够修复可能会破坏的所有内容,还是应该走TDD路线并编写明确的测试以使团队满意?
我将与我的一些朋友一起进行软件项目,并且被任命为技术主管。这些家伙根本都不是一个糟糕的程序员,但我确实比他们有更多的经验。我需要能够在团队中的每个人之间分配工作,同时还要确保我们不会互相踩脚。他们满足了使该项目成功所需的相对较高的质量和可伸缩性标准,而无需我审查他们所做的一切。
如何避免微管理的同时保持标准?是否足以制作一些图表,安排一些代码审阅并相信我将能够修复可能会破坏的所有内容,还是应该走TDD路线并编写明确的测试以使团队满意?
Answers:
您应该检查他们的一些代码,然后让他们互相检查。不是您想成为“签到警察”,而是想要尽可能频繁地提供反馈。成为审稿人可以加强他们的理解。让他们也查看您的代码。成为榜样。
旁注:年度审核期间不应有任何意外。
最重要的是:以尽可能多的不同方式传达您的期望和设计。图对某些人有好处;定义的接口为他人工作;配对编程也可以;正式的代码审查也可以帮助某些人。
一世 还建议尽可能使用自动化:
如果测试用例或自动检查工具设置正确,则很难与它们争论。
尽可能远离杂草。在任何团队中,如果您是领导者,则需要为危机和大局节省一部分带宽。图表是好的,编码标准始终是明智的,但是建立人们检查彼此工作的过程甚至更好(交叉测试,同行评审,结对编程)。并非团队中的每个人都需要成为明星-团队在一起通常可以克服个人的任何弱点。
我建议您尽量抵制告诉别人您在编码中看到哪些错误的冲动-而是让他们自己看一下。保留对开发工作进行协作审查的一部分,但要确保您所做的贡献不比其他成员多。相反,要付出更多的努力来鼓励人们看到您所看到的内容,并对您所看到的内容为何重要的原因进行大量解释。
不必过多担心重叠-除了明智的工作分解之外,您可以要求团队成员进行相互检查,然后验证是否发生了沟通。团队将很快开始互相寻求意见,以达成共识,这使您的工作轻松了大约20倍-然后,您要做的就是在主要领域意见分歧时成为决胜局。
然后,省去集体看团队的精力。每个人都有一些很棒的优点和一些令人着迷的缺点。理想情况下,您将开始向适合自己优势的人员投入工作,同时仍给他们提供机会以不会削弱团队生产力的方式克服自己的劣势。
团队领导力的终极金星使人们意识到自己的弱点,以使其有足够的动力和足够的知识开始修复它们。
我要说的是“请团队中最有经验的人来组织它”,但这听起来像是您就是那个人。
如果可以,请将项目分成两个级别。应用程序层/驱动程序层是很好的分离。在您的团队中形成两个小组,并在每个小组中让一个人负责该级别。那可以很好地工作。
辞职吧。您将必须审查他们所做的所有事情,尤其是在早期。如果一切进展顺利,您将只盯着代码。审核根本不会花费您太多时间,它会让您充满信心,一切都会好起来的。您更有可能会发现有人错误地使用了信号量,或者正在编写他们自己的版本的库函数或某些类似的疯狂行为。我的经验是,在编写代码时,您必须观察代码,以解决萌芽中的代码问题。
贵公司通常期望技术负责人做什么?我是一名经理,已经去过这个地方几次,本周将再次做这件事(雇用新手和其他人加入由20年和4年经验的团队组成的团队)。
我是一名经理,可以担任技术主管(在过去的几年中,我淡化了后者的作用,以增强团队中的领导力。无论如何,有些想法:
我很想从您的职位中查看几个不同的清单:
我对这支球队有多了解。您知道团队中每个人的优点和缺点吗?您知道如何从每个人中获得最大收益吗?您是否知道如何以相对公平的方式将工作分配给所有人?这些问题是要问和要理解的,因为有些人可能会发展一些技能,这些技能可能会改变他们的观看方式,所以这些列表可能会随着时间的推移而发生变化。当您被任命时,您是否期望团队中有人拥有您?最后一个问题可能很难使人们诚实地回答,但是如果可以以有意义的方式公开和讨论该问题而又不会激起冒犯或不满,这将大有帮助,如果所讨论的内容对某些人而言非常个人化,这很容易人。不要试图在小组会议上征求个人意见,
我对自己有多了解。您正在使用什么背景知识来要求某种技术授权?您带给团队哪些优势和劣势?您是否希望定期进入战es?您是否已经想过向您介绍该团队以帮助指导他们的做法?您是否有从过去的经验中记住的警告信号,这些信号可能对了解团队中正在进行的工作中是否开始出现这些警告信号有用。
在某种程度上,这一切都归结为沟通。祝好运!