1. 定义好团队结构

可以按照多种方式来定义团队结构,不过最常见的两种是主程序员团队与无我编程团队。

主程序员团队至少由3人组成:一个主程序员、一个高级程序员和一个程序管理员。这种结构非常适合于处理简单和直接的任务。另一方面,该结构并不适合于复杂的任务,因为在这种结构下,交流与任务协作都是非常有限的。

无我编程通常是个去中心化的团队,由10个左右的程序员构成。整个团队会共同参与设定目标,在项目的不同阶段,领导者也会发生相应的变化,这会提升工作满意度。除此之外,良好的协作与交流也使得这种结构非常适合于处理复杂任务。不过另一方面,缺乏控制可能会造成效率与生产力的下降。

2. 将项目分解为任务

在定义好团队角色后,接下来需要将项目分解为任务,并将这些任务分派给团队成员。好的做法是一个团队成员只负责一个任务。如果需要,可以将一个任务分解为几个更小的任务,这样可以很好地完成。

3. 制订项目计划

定义好团队结构并分派好任务后,接下来就需要制订项目计划了。在这个阶段,你需要确定好任务的优先级与顺序,同时还要指定好每个任务的截止日期,这样才能确定下来整个项目的持续时间。

这个过程可以通过传统手段完成:使用笔纸。不过,最好使用项目管理软件来做。这样不仅会加快计划的速度,而且现在有很多在线工具可以实现跨团队成员的沟通与协作。

在这个阶段中需要考虑到的一个重要的事情就是计划谬误——低估完成任务所需的时间。这种心理现象只会影响到我们对自己所要做的任务的预测。在1994年的一项研究中,研究人员让学生们估算一下他们完成论文所需的时间,平均的估算时间是33.9天,而实际完成的平均时间则是55.5天。因此,好的做法是将估算时间乘以1.7,这样才会得到一个比较恰当的估算时间。

4. 定义编码标准

不同的程序员有着不同的编码风格,这会导致低效的编程和错误修复过程。幸好,我们可以通过定义团队中每个人都要使用和遵守的编码标准来轻松解决这个问题。最好的做法不是强制施加标准,而是团队一同来制订标准,根据业界的最佳实践与推荐来制订。

5. 不要编辑现有代码

这个提示是对上一提示的补充,并且在编码标准尚未形成的情况下尤为重要。当团队中存在着不同的编码风格,同时又没有定义好编码标准时,经常出现的一种情况就是一个人会重写其他人的代码,觉得自己的代码风格是最好的。这会扰乱团队成员之间的关系,降低大家对工作的满意度,并且将大量宝贵的时间浪费在没什么生产力的事情上面。因此,建议大家不要这么做,如果怀疑或是发现有人这么做时要及时提出来。

6. 考虑结对编程

结对编程是一种特别的开发技术,指的是两个程序员在一台电脑前工作的方式。其中一个程序员编写代码,另一个程序员会审查他所编写的每一行代码。两个程序员的角色会频繁切换。

相较于独立工作的方式,结对编程有很多优势。两个程序员共同编写出的代码Bug更少,完整性更好,能够更快地找出问题的解决方案并提供更多的设计选择。除此之外,结对编程还会提升生产力,因为处于结对中的程序员不太可能频繁检查社交网络、邮件或是在工作时间内上网。

另一方面,有一些情况会破坏结对编程的效率:

  • 脱离(其中一个成员没在工作,离开了计算机)。
  • 一个程序员的经验比另一个少很多,他总是看自己的同伴写代码。
  • 程序员彼此之间缺乏交流和沟通。应该极力监控和避免这些情况的发生。

7. 使用版本控制软件

老话说的好“只要做就有可能出错”,编程的时候当然也会出现错误。然而,如果没有使用版本控制软件,那么团队成员可能就要花很多时间将代码恢复到之前没有错误的状态。借助于版本控制软件,恢复的过程就好比是按下一个撤销按钮一样简单。

8. 不要在延迟的项目中再添加人手

“在延迟的软件项目中添加人手会让项目更加延迟”,这句话出自Brooks之口。更加通俗一点,“9个女人不能在1个月内生出孩子”。那么,为什么说添加更多的人手反而会导致效率低下呢?主要的原因在于新人需要时间才能实现高效率。这个时间又叫做增强时间,涉及到对新人的培训,让其了解项目之前的工作、目标与细节信息。资深的团队成员要花很多时间在培训而不是工作上,这意味着放在项目任务上的资源就变得更少了。然而,这只适用于那些已经延迟了的项目。

9. 不要加班

当项目延期时,经理们通常会要求团队成员加班来完成工作。这么做会导致精力衰竭、动力降低、工作满意度下降的结果。此外在加班时,人的生产力实际上是很低的。因此,不要加班,而是在工作时间内保持高效率。

10. 工作时保持舒服的感觉

在编程时,重要的是要保证大脑运转正常,不要被其他事情分心。比如说保持足够的睡眠、在工作前做一些轻度的运动或是吃点东西都会提升工作效率。另外,一把舒适的椅子、明亮的灯光等都有助于大脑的全神贯注。

http://www.php100.com/html/it/work/2014/0212/6536.html#0-hi-1-88401-89fdc647f52c5196c0d5da60d38d89ea

提升团队编码效率的几条经验相关推荐

  1. 视觉设计师提升自己能力的17条经验(上)

    1.积极心态 Robin(李彦宏)说得好--人要做喜欢且擅长的事,首先,你要足够确定你真的喜欢设计,热衷于发现美.感受美.创造美,最终能解释美.积极的行动和思考是进步的源动力.据我所知,业内优秀的视觉 ...

  2. 视觉设计师提升自己能力的17条经验(下)

    9.业余时间 还经常听到一种抱怨"产品有限制,我所擅长发挥不出来",这样无疑是把自己的设计专业成长寄托在产品上.认为产品不成功自己的设计就不能成长.这其实是个借口. 其实面对这个问 ...

  3. 提升代码内外部质量的22条经验

    2019独角兽企业重金招聘Python工程师标准>>> 本文主要关注代码的内部和外部质量,编程的价值观,代码质量的评估标准,整洁代码的匠艺以及如何维护已有的代码. 外部质量:用户所能 ...

  4. 【转】从3个科技公司里学到的57条经验

    好文,这种文章就该收藏加转载! =============================================== 外刊IT评论网站上曾发表博文<从3个科技公司里学到的57条经验&g ...

  5. 我早年在Google学到的10条经验

     Matt Cutts:我早年在Google学到的10条经验 摘要:High Scalability创始人Todd Hoff与Google公司资深工程师.知名博主Matt Cutts深入探讨了在谷 ...

  6. 从3个科技公司里学到的57条经验(转)

    从3个科技公司里学到的57条经验(转) 外刊IT评论网站上曾发表博文<从3个科技公司里学到的57条经验>,此文是<57-things-ive-learned-founding-3-t ...

  7. androidstudio学习总结_Android 开发工程师自述:2年的开发,我总结了7条经验

    全文共3547字,预计学习时长11分钟 "纸上得来终觉浅,绝知此事要躬行." "没有调查就没有发言权." "实践出真知." 古今中外,无数名 ...

  8. 大厂机密!30 个提升团队研发效能的锦囊

    互联网大公司那些价值上亿的项目背后,团队成员是怎么高效协作开发的?和我自己开发辣条项目时有什么区别? 看完本文,保证让你大开眼界! 鱼皮在学校的时候,做过很多项目,但大部分都是练手的 Demo.基本都 ...

  9. 自动开机软件测试大乐,乐搏软件测试:提升软件测试能力的12条捷径

    现在我们乐搏软件测试学院(ID:lebo1768),将这枚多年来总结的在软件测试工作和学习过程中,提升软件测试能力的12条捷径分享给大家,希望大家会喜欢. 1.了解用户需求 了解用户需求不要以为和软件 ...

  10. 项目经理的专业面试10条经验总结

    作者:红哥笔记 链接:https://www.zhihu.com/question/20635088/answer/2683203738 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商 ...

最新文章

  1. es6箭头函数this问题
  2. 快检查一下你的sudo:无需密码就能获取root权限,还是个10年老bug
  3. 微信小程序scroll-wiew 横向滚动问题
  4. python教程:%s、%d、%f的使用
  5. centos 5.0 编译安装apache 2.2.6+php5.2.5+mysql5.0.46+ZEND
  6. HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测
  7. html自定义鼠标右键,js自定义鼠标右键的实现原理及源码
  8. 基于JAVA+SpringBoot+Mybatis+MYSQL的个人博客系统
  9. 力扣538.把二叉搜索树转换为累加树(JavaScript)
  10. 2021-2025年中国充气救生衣行业市场供需与战略研究报告
  11. 31篇文章!计算机视觉从原理到OpenCv实战
  12. Team Project 设想 -- 基于用户信息的学术搜索
  13. 移远 NB-IOT_BC95_AT命令集
  14. 『词向量』用Word2Vec训练中文词向量(一)—— 采用搜狗新闻数据集
  15. jQuery 事件冒泡
  16. 推荐1位AI产品经理求职信息(企业方可要简历),新增3个JD(共计59个、AI PM可内推)...
  17. Problem N: 设计飞机类Plane及其派生类
  18. 手机python怎么安装turtle_Python3 turtle安装和使用教程
  19. append和extend的区别
  20. python 职业技能大赛备赛(2)

热门文章

  1. 下一代数据架构Data Fabric到底是什么?
  2. Elasticsearch 如何自定义扩展词库?
  3. php中理解print EOT分界符和echo EOT的用法区别
  4. Java 使用POI 给Word添加水印
  5. php数组匹配某一个元素的值
  6. 高并发与高可用知识总结
  7. Vue简易图片手风琴组件,包含宽度适应(JS操作CSS实现)
  8. Matlab yalmip 符号变量syms和sdpvar的替换
  9. LeetCode:714. 买卖股票的最佳时机含手续费(python)
  10. 数字电路中的锁存器(latch)和各种触发器(flip-flop)