写点什么

提升团队编码效率的 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:344127
用户头像

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

关注

评论

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

深入原生冰山安全体系,详解华为云安全服务如何构筑全栈安全

华为云开发者联盟

容器 数据安全 云安全 Web应用防火墙 华为云安全

大数据实战训练营作业一

Clarke

使用dubbo-go搭建dubbo接口测试平台

捉虫大师

dubbo 接口测试 dubbo-go Go 语言

手把手教你在Modelarts平台上进行视频推理

华为云开发者联盟

视频 modelarts 推理 预处理 视频推理

倒计时 | 7.24 阿里云 Serverless Developer Meetup 杭州站报名火热进行中!

Serverless Devs

阿里云 Serverless 云原生

为什么别的程序员能月薪 20k ,而你一个月只能拿 6K 的低保?差别就在这!

白亦杨

Java 编程 程序员 技术宅

面向资源的架构(ROA)概述

码界行者

SOA ROA

全球首个AI组合亮相,有人直呼惊艳,也有人害怕恐惧

程序员生活志

955.WLB 不加班公司名单!再新增 5 家公司!

程序员生活志

已收藏!深入浅出Android性能调优

欢喜学安卓

android 程序员 面试 移动开发

终于有10年阿里老兵把SpringCloud微服务实战经验全总结出来了

进击的王小二

Java 架构 微服务 Spring Cloud

使用Docker运行OnlyOffice的Node.js示例

一个需求

onlyoffice

云小课|ModelArts Pro 视觉套件:零代码构建视觉AI应用

华为云开发者联盟

AI 零代码 ModelArts Pro 行业落地 视觉套件

什么是共识?(理论篇)

趣链科技

大数据实战训练营作业二

Clarke

【LeetCode】两个链表的第一个公共节点Java题解

Albert

算法 LeetCode 7月日更

Redis 的集群容错与故障转移

U2647

redis redis哨兵模式 集群 redis cluster Leader

流程审批系统如何通过低代码平台实现?

优秀

低代码 流程审批系统

基于迁移学习的语义分割算法分享与代码复现

华为云开发者联盟

语义分割 modelarts 迁移学习 语义分割算法 迁移分割

网络攻防学习笔记 Day81

穿过生命散发芬芳

网络攻防 7月日更

想象中的论文答辩和真实的论文答辩,我太难了……

程序员生活志

腾讯云 TRTC 这次玩大了!冲出国门联手日本直播平台.yell Live打造在线直播互动能力

腾讯云音视频

音视频开发进阶指南,最新大厂Android校招面试经验汇总

欢喜学安卓

android 程序员 面试 移动开发

为什么别的程序员能月薪 20k ,而你一个月只能拿 6K 的低保?差别就在这!

Java 编程 程序员 技术宅

PHA矿机挖矿系统搭建

Geek_23f0c3

区块链 云算力模式系统开发源码 PHA矿机挖矿

年包70W,五轮拿下阿里Offer,全靠阿里内部整理的面试指南(真题分享)

Java 程序员 架构 面试

MERN堆栈

吴脑的键客

node.js mongodb React Express

华为云UGO正式公测:4大核心优势破解异构数据库迁移难题

华为云开发者联盟

数据库 华为云数据库 异构数据库 对象迁移 应用迁移

浪潮云洲×天人集团:打通数据脉络 驱动降本增效

【从零开始学爬虫】采集西瓜直播视频

前嗅大数据

大数据 爬虫 数据采集

基于Spring Boot+Security+Redis权限管理系统,权限控制采用RBAC

Java架构追梦

Java 源码 架构师 springboot 权限管理系统

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