我在一个项目的小团队(4-5名开发人员)中工作。我们团队的每个成员都在开发我们项目的不同功能,他们是高度独立的。事实上,一些成员使用其他成员不了解的技术。它仍然只是一个项目,其中有许多常见的业务逻辑。
此外,大多数成员完全不知道其他人在做什么以及如何做。不知何故,我们设法避免代码复制(我们团队领导的信用,但即使他不完全清楚发生了什么)。我想知道,让整个团队保持正常运转状态的良好做法是什么。例如,如果团队中的某个人在应该进行重要修复时退出或丢失 - 其他人很难处理。
我们制定了一项政策,用于进行代码审核,但只有团队领导和团队中的一名成员参与其中。那里的其他“常规”成员不参加。
此外,我们的成员在源代码控制中提交了一个“checkin-s”新闻列表,但这似乎太无聊了,看起来没有人花时间阅读其他人刚刚提交的内容(而且它是无效,公平)。
所以,我想知道这件事的好习惯是什么。你有什么经历?有解决方案吗?
编辑:让我澄清一下。我们的团队工作了2年多,该项目已有近5年的历史。所以,我们不能开始敏捷开发,虽然我们可以为你提供一些敏捷实践(比如站立式会议,我觉得它非常有用)。
此外,我们的团队是大公司的一部分,因此我们建立了团队建设实践。并且我们彼此不讨厌 :) - 我们是朋友,谈论社交生活和活动。 专业会谈是我们所缺少的。
答案 0 :(得分:17)
站立会议每天(简短地说)与在场的每个人一起帮助每个人了解彼此在做什么。这也有助于管理者完成一些管理工作,有助于防止thrashing,并且在没有经理必须这样做的情况下对每个人施加一点压力。 (你想要完成一些事情,这样你明天早上就会在同龄人面前表现得很好)。像Scrum这样的一些方法正式化了这一点。
与不同的团队成员进行代码审核。非经理团队成员之一是否更有经验?让这个人与他人进行代码审查会很好;他/她会分享他们的经验并成为其他人(除了经理),他们知道发生了什么。在同行评审中没有法律规定,一个人必须比另一个人更高级,并且是宣称代码是对还是错的人。我认为,如果两个“同行”正在进行代码审查,那么他们应该首先进行配对编程。
如果您尝试编写一些高质量的代码,某些代码可能会适用于 pair-programming 。 XP的人说你应该一直这样做,但我相信它有时候和其他时候会更有帮助。例如,当一个开发人员比另一个更有经验时,这有助于指导。此外,当有特定区域您希望知识传播时。 (只有一个人理解系统的一部分;下次需要修改时,让那个人用其他人打字。)此外,有时系统的一部分非常重要,并且正确制作它比每分钟代码行更重要。这是一个有两个问题的好地方,最后两个人非常了解这个关键代码,而不是一个。
每周一次,有人在午餐时间发表短谈,谈论他们正在做的有趣事情。这可以产生很好的讨论,增强信心和相互尊重,但我们在这里感兴趣的是它提升了意识。
价值,支持和相信良好的代码。有些商店(主要是经理)不会真正相信良好的代码,这导致人们只是破坏(糟糕的)代码,即使开发人员可以做得很好码。如果开发人员对他们正在制作的代码感到满意,如果你偶尔实施一些新技术,以及质量工作有助于你的职业生涯,那么关于代码的沟通就会变得容易得多。
更多关于结对编程。对于这个讨论,结对编程的关键部分是配对编程促进shared code和交叉知识。我提到结对编程特别有用的具体位置的原因是因为策略“我们要进行结对编程”大约有10%的时间成功。其他90%的人,当一位大经理问道:“为什么所有这些人坐在同一张桌子上?”时,这种做法的支持者无法给出足够好的答案。结对编程的优势必须是200%以上,而不是只有一个程序员,因为你使用两个人。在正确的时间完成 ,结对编程可以提高您的解决方案/降压比;在错误的时间,它可以减少它。
答案 1 :(得分:7)
成对编程和每日站立会议等敏捷技术是发生沟通的正式方式。
但听起来你真正需要做的就是让人们互相交谈。开发人员往往是内向的,所以你必须在这方面工作。一起吃午饭。看看彼此的肩膀。寻求彼此的建议(即使你不需要)。互相询问那些并非每个人都能理解的奇怪技术。收集集成测试。
答案 2 :(得分:3)
我的工作场所情况类似。正如您所说,团队的一些成员高度独立,不与团队中的其他成员分享任何见解或做法。我发现这对团队来说是非常不专业和整体伤害。
当然,让一些成员比其他成员更熟练是不可避免的,并且在编程世界中,一些成员将难以将他们的自尊放在一边。最好的办法是安排每个人参与的预定会议和代码审查。有一个中央文档站点,人们可以发布他们使用的某些技术。如果您认为某些事情对您团队的其他成员有用,请将其上传到网站并发送电子邮件告诉所有人。沟通是关键。
答案 3 :(得分:3)
什么可以帮助你每天站立(从敏捷开发)。只需几分钟,基本上所有成员都会出现在他们工作的其他状态,他们处理的问题以及明天的计划中。
我认为站立对你来说是一个好的开始。您可以找到更多信息,例如在Martin Fowler - It's Not Just Standing Up: Patterns of Daily Stand-up Meetings
答案 4 :(得分:3)
在我们的团队中,我们每周都会举行进度会议。这样可以发现其他人的行为以及每个人在大局中的位置。
当我们分享自制蛋糕时,有时会举行一场迷你社交活动。下次带蛋糕的人的姓名写在进度会议记录中。
答案 5 :(得分:3)
<强>团队建设强>
一起做烧烤,玩桌上足球,除了每个人都喜欢的工作之外,找一些团队活动。这将教会人们相互信任,而不是“独立”,并将每个其他有用团队实践的效果乘以10,如scrum会议或结对编程。
答案 6 :(得分:3)
以下是我头脑中的一些想法(小公司,三个程序员;曾经在一个约20人的团队中工作)。
答案 7 :(得分:1)
我们处于类似的情况(一个长项目,都是朋友),并有类似的问题。以下做法使我们能够改进很多: