写点什么

提升团队编码效率的 10 个提示

  • 2014-02-09
  • 本文字数:2165 字

    阅读完需:约 7 分钟

Voja Janjic 是一位自由的 Web 开发者,拥有多年的从业经验;此外,他还是一位出色的网络管理员。近日,Voja 撰写了一篇文章,谈到了如何提升团队的编码效率,如何提升团队中每一个成员的工作效率。毕竟,团队是由一个个成员构成的,如何在保证提升每一个人的效率的基础上提升整个团队的效率就是一个非常重要的议题了。

与其他活动类似,Web 或软件开发也是个社会性活动,如果你是个开发者或设计师,那很有可能你会身处在一个团队之中。团队由不同的人构成,每个人都有不同的习惯、动机、工作与编码风格。本文旨在介绍一些让团队更具效率和生产力的提示。

1. 定义好团队结构

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

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

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

2. 将项目分解为任务

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

3. 制订项目计划

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

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

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

4. 定义编码标准

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

5. 不要编辑现有代码

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

6. 考虑结对编程

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

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

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

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

7. 使用版本控制软件

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

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

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

9. 不要加班

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

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

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

2014-02-09 11:344099
用户头像

发布了 88 篇内容, 共 272.5 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

太牛了,这是我见过把微服务讲的最全最好的SpringCloud架构进阶

程序知音

Java 架构 微服务 SpringCloud 后端技术

什么是数据质量管理?企业怎样做好数据质量管理?

雨果

数据质量

软件测试 | 测试开发 | Jenkins 踩坑(四)|基于接口自动化测试完成 Jenkins+GitHub+Allure 的结合

测吧(北京)科技有限公司

测试

如何选择比较靠谱的数据培训班?

小谷哥

怎么来选择大数据培训课程

小谷哥

Linux系统安装配置Tomcat

Linux Tomccat 9月月更

设计模式的艺术 第十四章享元设计模式练习(开发一个多功能文档编辑器,在文本文档中可以插入图片、动画、视频等多媒体资料。为了节省系统资源,相同的图片、动画和视频在同一个文档中只需保存一份,但是可以多次重复出现,而且它们每次出现时位置和大小均可不同)

代廉洁

设计模式的艺术

干货 | 企业数字化转型过程中,传统IT和数字型IT能否严格区分?

嘉为蓝鲸

运维 转型 IT 数字化 研发

画一个 “月饼” 陪我过中秋,使用 ESP32-C3 制作炫彩月饼

矜辰所致

电路设计 ESP32-C3 9月月更

Baklib|FAQ常见问题对产品推广的重要性

Baklib

产品 FAQ

Java培训学习技术需要具备哪些能力

小谷哥

如何在 ACK 中使用 MSE Ingress

阿里巴巴中间件

阿里云 容器 微服务 云原生 ingress

微服务治理热门技术揭秘:动态读写分离

阿里巴巴中间件

数据库 阿里云 微服务 云原生

Spring源码解析(十一)Spring扩展接口InstantiationAwareBeanPostProcessor解析

石臻臻的杂货铺

spring 9月月更

TiFlash 源码解读(八)TiFlash 表达式的实现与设计

PingCAP

源码阅读 TiDB TiDB 源码解读

OneFlow源码解析:Tensor类型体系与Local Tensor

OneFlow

深度学习 源码解析 算子

python os模块

zxhtom

9月月更

零信任态势评估:安全控制自动化

权说安全

零信任 动态评估

干货 | 如何实现软件自动化部署?

嘉为蓝鲸

运维 IT 应用发布 应用部署

大规模数据如何实现数据的高效追溯

华为云开发者联盟

大数据 后端 华为云 企业号九月金秋榜

elasticsearch的字符串动态映射

程序员欣宸

elasticsearch 9月月更

OpenHarmony Camera源码分析

OpenHarmony开发者

OpenHarmony

写出优秀的产品手册文档的技巧

Baklib

文档 产品手册

Android技术分享| Activity 过渡动画 — 让切换更加炫酷

anyRTC开发者

android 音视频 动画 移动开发 Activity

Linux vim的使用和配置

挚爱光小胖

Linux vim教程

Java开发培训的就业方向有哪些?

小谷哥

贝斯的圆桌趴 |科技公司内部 SaaS 工具大公开

Bytebase

知识管理对企业的作用不容小觑

Baklib

知识管理 企业

学员在web前端培训机构应该怎么学习

小谷哥

访问控制系统的质量评价

权说安全

网络安全 零信任 访问控制

5 分钟比较理解 require() vs import()

掘金安东尼

前端 9月月更

提升团队编码效率的10个提示_语言 & 开发_张龙_InfoQ精选文章