阅读更多

6顶
1踩

研发管理

转载新闻 编程开发中最浪费时间和资源的7个错误

2014-08-15 10:14 by 正式记者 newer7 评论(4) 有12068人浏览
本文由码农网翻译自《The worst 7 mistakes that cost money and resources on software development projects》,译文内容如下。

我在当地几家公司担任过项目经理,项目主要关于一些用PHP制作的中小型网页。在那段历程中,我见识了很多公司常常会犯这样或那样的错误,既浪费时间又浪费资源。下面我具体谈谈在这些错误中最不可饶恕的7个。



1.不问客户究竟想要什么

一般而言,在签署合同阶段都会有一份关于原始需求的标准性文件。而我们常常会犯的最大的错误之一就是想当然地认为,这就是客户的想法。我的建议是,和客户那边所有的核心员工开个咨询会议,确保客户所有的需求都能成竹在胸。

后期如果想要添加关键功能到几乎已经完成的产品中将需要支付大量额外成本,而这原本是可以避免的。

我记得有一次,只是因为在初期阶段没有考虑一项功能而已,我们的团队就不得不重新设计数据库模型。往事不堪回首啊。

2.没有全局性的章程

早前我在一家小公司工作的时候,因为资源有限,我们的老板总是催我们尽早写代码。通常我们不得不一签好合同就立马开工(有时候甚至更早)。我们常常对客户需求懵懵懂懂一知半解,不过即使我们知道客户究竟想要什么,我们的老板也不会让我们腾出时间为程序员和设计师写需求说明。正因如此,重写代码成了家常便饭。因为没有全局性的章程,所以项目经理给出的解决方案往往没有包括所有的需求功能。

3.不写文档

我还在读大学的时候,就常常听别人说“写文档很重要”。事实也是如此,这一点不言而喻,我就不多说了。但是,假设你突然分配到一个时间紧迫、人员和成本有限,甚至管理层还不同意额外支付加班费用的项目,不写文档这个错误绝对会给你当头一棒:如果在项目进行过程中发生人员更迭或者后期添加人员跟进项目,这都将会耗费公司大量的成本。

从另一个人手里接手源代码而没有任何文档,再也没有比这个更让人吐血的了。

这种情况不仅仅是发生在开发人员身上。我曾经做过一个项目,客户的需求总是变来变去以致于最后的需求说明和原始版本大相径庭,除了都是Web应用,我找不出其他相同之处。虽然我们的讨论一丝不漏地保存于邮件之中,并且也有了最后的产品也照着客户要求做出来了,但是要是我想知道具体什么时候我们做了什么这样的细节,就无从着手了,这变成了一个不可能的任务。所以,在文档中跟踪项目的流程和变化这一点也很重要,它将防止混乱和计费错误。

4.团队中的沟通问题

小公司经常会聘请一些兼职程序员来做项目。此时如果还包括远程工作人员,那么一个合适的沟通渠道就显得更为重要。我曾经不止一遍地向员工强调,沟通是成功合作的关键。有的程序员落后于原定进度时,不告知其他人,从而导致团队相关人员只能坐等他出结果,方可继续工作,这中间浪费的资源可想可知了。

5.工作流程不起作用或者就不设置工作流程

如果你曾经参与过有很多开发人员携手合作的项目,那么对于制定一个良好的工作流程是成功的关键这一说法的重要性就不会质疑。但是在很多小项目中,管理层往往会认为设置工作流程是没有必要的,然后团队效率的低下会让这些家伙自酿苦果:耗费大量的资金和资源。此外,设置以下的规章流程也很重要:内部的沟通、职责和任务的归属、紧急情况响应等等。

举个例子,有一个非常实用的任务管理工具,Trello。它不但能跟踪任务,还可以定义处理程序(如根据说明准备应用软件贯穿于整个编码和测试产品过程)。如果需要使用聊天工具(Hipchat、Slack等),Trello还提供相关整合工具。如此一来,只需要一个交流渠道,就能传递所有信息,这将大大减少浪费在团队沟通中的成本。

6.不做源代码管理

有一种大错特错的观点是源代码管理是没有必要的。事实上,即便我们只有一两个开发人员,如果不使用源代码控制系统,我们很可能会深陷麻烦之中。

还是我的亲身经历,在一个项目中,我们开发的一个版本既能用于开发新功能也能修正补丁,但是我们没有运用版本控制。所以,当某一个开发人员需要更新产品时,他得先做一个手动备份的还原点。这是一个非常重要的应用,每天的访问量成千上万。所以有一次在发现bug、发布修正补丁之后,却发现这个补丁中竟然有未完成的工作,这是一场悲剧,这导致了数据灾难, 严重影响了公司声誉。

没有适宜的源代码管理就像是在玩火——从字面上看就是:你在烧钱!

7.权力过于集中、无替代人员

谈谈我曾经的一份工作,那个老板人非常和善、活力十足、喜欢亲力亲为。他深信,所有邮件都必须由他亲自批复。不得不坦言,就因为权力过于集中,所有流程都需要从他那边走,使之成为了企业最薄弱的环节。而且,一旦有紧急情况发生,甚至没有临时替代人员。

很明显,这位“可敬又可笑“的老板成为了项目的瓶颈。我们总是在等待他处理消息。的确,这对于掌控下属,督促他们好好工作很有好处,但是作为一个领导者,也应该学会信任下属、权力下放。

可以分而治之。掌控所有事是不可能的,特别是在像开发软件项目这类大工程中。

上述这些错误亦有其共同之处:就是犯错误的人缺乏高瞻远瞩的战略性眼光。如果我们不能将时间投入到正确的事情上去,虽然能立马看到削减开支的效果,并对此沾沾自喜,但是不可忽略的是,最后我们所能创造的利润也减少了。做任何事情都应该都大局出发。正确的处事原则有助于建立良好的习惯,而良好的习惯则能让我们圆满地完成任务。这才是一个公司和它的员工真正发展成长之道。否则,一家企业终将只会落得昙花一现的结局。

译文链接:http://www.codeceo.com/article/7-mistakes-cost-money-and-time.html / 译者:码农网 – 小峰
英文原文:The worst 7 mistakes that cost money and resources on software development projects
  • 大小: 18.7 KB
来自: 码农网
6
1
评论 共 4 条 请登录后发表评论
4 楼 lzzzl 2014-08-23 13:31
标题明显错误了嘛,明明是软件开发管理上的错误,有编程有屁关系
3 楼 java_web_hack1 2014-08-21 12:12
老板也要简政放权
2 楼 LG772EF01 2014-08-19 18:39
赞一个,确实不错,感同身受
1 楼 liuyuhua0066 2014-08-15 17:23
学会信任和放权这点尤为重要

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • C#编程中最常见的10个错误

    本教程主要讲解C#程序员最容易犯的10个常见的编程错误以及告诉他们如何避免这些问题,希望可以帮助到他们。虽然本文中讨论的大多数错误都是c#特有的,但也有一些错误在其他的类似CLR的语言上同样存在。具有相同的...

  • 并发编程面试题(2020最新版)

    文章目录基础知识并发编程的优缺点为什么要使用并发编程(并发编程的优点)并发编程有什么缺点并发编程三要素是什么?在 Java 程序中怎么保证多线程的运行安全?并行和并发有什么区别?什么是多线程,多线程的优劣?...

  • 史上最全java项目开发编程规范

    文章目录一、编程规约(一)命名风格(二)常量定义(三)代码格式(四)OOP规约(五)集合处理(六)并发处理(七)控制语句(八)注释规约(九)其它二、异常日志(一)异常处理(二)日志规约三、单元测试四、...

  • 零基础如何入门编程开发?

    这三个特性。如果展开以上三个特性的话,就几乎包含了学习一门编程语言所需要关注的所有重要知识。

  • 6个高效学习编程的方法

    学习编程的重点就是懂如何学习

  • 华为C语言编程规范(精华总结)

    很多系统中头文件包含关系复杂,开发人员为了省事起见,可能不会去一一钻研,直接包含一切想到的头文件,甚至有些产品干脆发布了一个god.h,其中包含了所有头文件,然后发布给各个项目组使用,这种只图一时省事的...

  • 【Web后端架构】2022年10个最佳Web开发后端框架

    这些都是2022年在Java、Ruby、Python、JavaScript、PHP、Scala和Golang中进行web开发的最佳后端开发框架在本文中,我将与您分享创建web应用程序的10个最好的后端框架。Web开发通常分为两类:前端开发和后端开发。...

  • C#编程中最常见的10个错误

    帕特里克·赖德(PATRICK RYDER)在Microsoft...在当今的CLR语言中,C#被广泛用于针对Windows台式机,移动或服务器环境的复杂,专业的开发项目中。(译者注,目前已支持各类跨平台的操作系统环境) C#是一种面向对象

  • C++跨平台开发——SOCKET网络编程中实现客户端对聊

    C++跨平台开发——关于解决SOCKET网络编程中客户端对聊的问题 二、实现分析 1、为什么服务器开启线程而不是进程? 线程的开销小,启动快,共享数据(不需要ipc就可以实现交互),所以一个线程一个客户端(效率...

  • 最新最全的云开发入门教程,微信小程序云开发,云函数,云数据库学习,微信小程序云开发扩展功能学习

    零基础入门小程序云开发云函数

  • 编程一直犯低级错误怎么办_大多数学生在学习编程时犯的错误

    编程一直犯低级错误怎么办We grew up hearing that every individual is different, but surprisingly, I have seen hundreds of students repeating the same mistakes when they start coding. And I have learned...

  • Python编程高级技巧和最佳实践----一网打尽

    Hello大家好,我是Dream。...Python 有着极强的可扩展性、灵活性和易读性,而且拥有大量的库和资源,使得其受到了广泛的喜爱。今天我们来详细学习一下Python的高阶进阶语法:Python编程高级技巧和最佳实践。

  • C语言项目开发-项目架构和编程命名规范

    一个项目的流程:1、公司市场人员与客户交流,了解客户、引导客户使用公司最优资源并产出一份市场需求文档2、公司需求人员(BA)与客户交流,了解客户需求并产出一个软件需求文档3、项目经理、开发小组成员、需求...

  • 嵌入式开发中的防御性C语言编程

    防御性编程首先需要认清C语言的种种缺陷和陷阱,C语言对于运行时的检查十分弱小,需要程序员谨慎的考虑代码,在必要的时候增加判断;防御性编程的另一个核心思想是假设代码运行在并不可靠的硬件上,外接干扰有可能会...

  • 弹性计算中的云计算中的物联网和边缘计算

    “弹性计算”作为云计算领域的一个分支,其主要目的是解决云计算资源的弹性扩展、高可用、可伸缩性等方面的问题。其核心技术包括虚拟机(VM)、容器(Container)、自动化、弹性调度等。在最近几年,随着物联网和...

  • 敏捷开发与极限编程

    敏捷开发与极限编程作者: 陈沛 (系摘编) 软件设计方法可以区别为重量级的方法和轻量级的方法。重量级的方法中产生大量的正式文档。 著名的重量级开发方法包括ISO9000,CMM,和统一软体开发过程(RUP)。...

  • 最全Linux驱动开发全流程详细解析(持续更新)

    Linux驱动开发详细解析

  • Java并发编程实战:掌握多线程编程的交错优化和高效实践

    Java并发编程是一项非常重要的技术,在现代计算机系统中广泛应用。掌握Java并发编程的基本原理和实践技巧,可以帮助我们更好地编写高性能的多线程程序。本文介绍了Java并发编程的基本原理和实践技巧,包括线程和进程...

  • 几种主流编程语言的优点和缺点比较,不服来怼

    挑选了几个常见的编程语言,分析了优缺点和职业方向,以供想当程序员的人参考。 C/C++ 一句话概括:大多数中国程序员的第一个语言 C 语言是面向过程语言在当代的鲁殿灵光,常用于编写操作系统。C++ 是 C 语言的一...

Global site tag (gtag.js) - Google Analytics