我相信以下技术非常有用,可以改善开发团队内的信息流:
XP配对编程-由于配对之间的知识交流(以及定期的配对混合)。
站立会议-由于有机会告诉其他人你正在从事什么工作以及遇到了什么问题。
领先开发人员为团队/部门准备的培训/演示/辅导。
“Web 2.0工具” -公司/部门的技术博客,团队负责人专用的Twitter账户,维基百科等等。
还有其他想法吗?您在公司使用哪些技术(或曾经使用过)?您将如何鼓励开发人员彼此分享知识?
信任。
你可以“显得愚蠢”,但如果你不知道或不完全理解我的话,请询问。请告诉我如果我错了(因为我也一样愚蠢,可能没有意识到自己的错误)。
我曾经在一家公司工作,每个星期五我们都有开发者午餐会,管理层提供食物,而开发者则需要分享他们的知识;介绍最近学到的工具或技术,或者演示他们正在进行的项目等。
这并不限于团队目前正在使用的技术,开发者被鼓励学习新技术,并向团队演示。我现在的工作也有月度IT小组会议,有时来自不同团队的开发者会展示他们正在开发的项目。
一种类似于Twitter的内部工具。也许是一个维基,如果你能让它工作的话,我个人觉得有点过于复杂。但是Twitter不同,可以在上面发布“刚刚添加了一个扩展方法来转义行过滤器中的like子句”之类的内容。
有些人可能会觉得它有点过于繁琐,但这是公共的实用程序位置,所以你知道在哪里查找string.CountOccurrences而不需要在整个代码库中搜索。
我再补充几点
我认为还有一些其他的事情需要考虑:
模式和实践会议 - 这些不必每周都进行,但应该有一些时间用于讨论各种未解决的问题,并就可能会给很多人带来麻烦的事情达成共识。
文化因素 - 工作场所是否提供足够的社交活动以帮助团队形成默契,或者一些团队建设练习,例如障碍赛或一起做饭,是否有助于建立某些动态。开发人员是否谦虚,以便没有大的自负成为一个问题。另一个因素是要考虑如何回答这个问题:你会去当地的酒吧和你的队友喝一杯吗?如果是,那么你在这里有一些好的观点,而如果不是,那么可能需要进行一些调查。
回顾后续 - 如何考虑并实施回顾中提出的想法?通常如何处理会议?
团队内演示 - 如果完成了某些故事并涉及到一些重要的代码点,那么可能应该为团队进行一些小型演示,以便团队了解已完成的工作,并让其他人了解已完成的工作,以便知识得到传播。这可以与我的第一点相结合,从而进一步促进沟通。
我非常支持成对工作。这是传递知识和保持沟通畅通的好方法。尝试为每个项目改变成对的组合。
我尝试了许多方法,而且我非常喜欢在项目中与人合作,并定期与团队进行讨论或会议。
然而,我也发现我能做的最好的事情是培养开发人员之间不断沟通的文化。我尽量让我的所有开发人员在工作时相互交流 - 甚至不必等到每周或每月的会议。
对我来说,这有点棘手,因为我的大多数开发人员不在同一地点,所以我们设置了一个单一的XMPP聊天室,当我们在项目上工作时,我们所有人都始终登录。其中一些开发人员(包括我自己)也会在下班后登录。
我在办公室里也是这样做的 - 我们往往是一群相当安静的人,但我非常乐意让人们随时打断彼此提问,或者抓起椅子坐下来集思广益。
然而,这种方法之所以奏效,部分原因是我尽量不限制沟通范围仅限于手头的工作或任何特定项目。我的感觉是,无论我是否培养这种文化,人们都会谈论其他与工作无关的事情。然而,我宁愿在正式的渠道中进行“水龙头”谈话,也不愿意在外面进行。
这使得每个人都更容易提出“显而易见”的问题,让大家感到更加自在。此外,人们会不断地提问,因为他们就在那里,并且习惯与所有人交谈。如果需要,很容易忽略,但也更容易随意提出一个普遍的问题,看看是否有人有想法,而不感觉像个麻烦。
我的经验是,由于拥有一个总是渴望帮助解决手头问题的团队,因此由于中断而失去的时间要比节省的时间少得多。
时间。
走出尘土飞扬的办公室,清空你的大脑,真正花时间去听讲座或培训,这都有助于传播知识。
而且预算也很容易:N个开发者参加T个小时的会议。
“在职”培训...你需要为你特定的工作学到的东西,只有那些懂得这份工作的人才能教给你。
在当前的环境下,在当前的压力下(必须现在就发布),没有人有时间充分解释某些事情。只有当人们放松了,他们才准备分享信息。当人们有足够的时间时,他们会放松。
除此之外,你需要遇到一些具体的链接错误,才会真正开始思考它。没有时间去思考、问问题和阅读,你将无法获得知识。你不能把它推迟到官方的链接器培训中。
要更难预算:开发人员Mary和Sophie谈了一个半小时关于动态链接的问题。第二天,她回来提出了一些问题。经验丰富的开发人员将花更多时间分发,而年轻人则需要更多时间学习。
社交和共同目标总是鼓励信息交流。