1.不问客户究竟想要什么
一般而言,在签署合同阶段都会有一份关于原始需求的标准性文件。而我们常常会犯的最大的错误之一就是想当然地认为,这就是客户的想法。我的建议是,和客户那边所有的核心员工开个咨询会议,确保客户所有的需求都能成竹在胸。
后期如果想要添加关键功能到几乎已经完成的产品中将需要支付大量额外成本,而这原本是可以避免的。
我记得有一次,只是因为在初期阶段没有考虑一项功能而已,我们的团队就不得不重新设计数据库模型。往事不堪回首啊。
2.没有全局性的章程
早前我在一家小公司工作的时候,因为资源有限,我们的老板总是催我们尽早写代码。通常我们不得不一签好合同就立马开工(有时候甚至更早)。我们常常对客户需求懵懵懂懂一知半解,不过即使我们知道客户究竟想要什么,我们的老板也不会让我们腾出时间为程序员和设计师写需求说明。正因如此,重写代码成了家常便饭。因为没有全局性的章程,所以项目经理给出的解决方案往往没有包括所有的需求功能。
3.不写文档
我还在读大学的时候,就常常听别人说“写文档很重要”。事实也是如此,这一点不言而喻,我就不多说了。但是,假设你突然分配到一个时间紧迫、人员和成本有限,甚至管理层还不同意额外支付加班费用的项目,不写文档这个错误绝对会给你当头一棒:如果在项目进行过程中发生人员更迭或者后期添加人员跟进项目,这都将会耗费公司大量的成本。
从另一个人手里接手源代码而没有任何文档,再也没有比这个更让人吐血的了。
这种情况不仅仅是发生在开发人员身上。我曾经做过一个项目,客户的需求总是变来变去以致于最后的需求说明和原始版本大相径庭,除了都是Web应用,我找不出其他相同之处。虽然我们的讨论一丝不漏地保存于邮件之中,并且也有了最后的产品也照着客户要求做出来了,但是要是我想知道具体什么时候我们做了什么这样的细节,就无从着手了,这变成了一个不可能的任务。所以,在文档中跟踪项目的流程和变化这一点也很重要,它将防止混乱和计费错误。
4.团队中的沟通问题
小公司经常会聘请一些兼职程序员来做项目。此时如果还包括远程工作人员,那么一个合适的沟通渠道就显得更为重要。我曾经不止一遍地向员工强调,沟通是成功合作的关键。有的程序员落后于原定进度时,不告知其他人,从而导致团队相关人员只能坐等他出结果,方可继续工作,这中间浪费的资源可想可知了。
5.工作流程不起作用或者就不设置工作流程
如果你曾经参与过有很多开发人员携手合作的项目,那么对于制定一个良好的工作流程是成功的关键这一说法的重要性就不会质疑。但是在很多小项目中,管理层往往会认为设置工作流程是没有必要的,然后团队效率的低下会让这些家伙自酿苦果:耗费大量的资金和资源。此外,设置以下的规章流程也很重要:内部的沟通、职责和任务的归属、紧急情况响应等等。
举个例子,有一个非常实用的任务管理工具,Trello。它不但能跟踪任务,还可以定义处理程序(如根据说明准备应用软件贯穿于整个编码和测试产品过程)。如果需要使用聊天工具(Hipchat、Slack等),Trello还提供相关整合工具。如此一来,只需要一个交流渠道,就能传递所有信息,这将大大减少浪费在团队沟通中的成本。
6.不做源代码管理
有一种大错特错的观点是源代码管理是没有必要的。事实上,即便我们只有一两个开发人员,如果不使用源代码控制系统,我们很可能会深陷麻烦之中。
还是我的亲身经历,在一个项目中,我们开发的一个版本既能用于开发新功能也能修正补丁,但是我们没有运用版本控制。所以,当某一个开发人员需要更新产品时,他得先做一个手动备份的还原点。这是一个非常重要的应用,每天的访问量成千上万。所以有一次在发现bug、发布修正补丁之后,却发现这个补丁中竟然有未完成的工作,这是一场悲剧,这导致了数据灾难, 严重影响了公司声誉。
没有适宜的源代码管理就像是在玩火——从字面上看就是:你在烧钱!
7.权力过于集中、无替代人员
谈谈我曾经的一份工作,那个老板人非常和善、活力十足、喜欢亲力亲为。他深信,所有邮件都必须由他亲自批复。不得不坦言,就因为权力过于集中,所有流程都需要从他那边走,使之成为了企业最薄弱的环节。而且,一旦有紧急情况发生,甚至没有临时替代人员。
很明显,这位“可敬又可笑“的老板成为了项目的瓶颈。我们总是在等待他处理消息。的确,这对于掌控下属,督促他们好好工作很有好处,但是作为一个领导者,也应该学会信任下属、权力下放。
可以分而治之。掌控所有事是不可能的,特别是在像开发软件项目这类大工程中。
上述这些错误亦有其共同之处:就是犯错误的人缺乏高瞻远瞩的战略性眼光。如果我们不能将时间投入到正确的事情上去,虽然能立马看到削减开支的效果,并对此沾沾自喜,但是不可忽略的是,最后我们所能创造的利润也减少了。做任何事情都应该都大局出发。正确的处事原则有助于建立良好的习惯,而良好的习惯则能让我们圆满地完成任务。这才是一个公司和它的员工真正发展成长之道。否则,一家企业终将只会落得昙花一现的结局。
- 浏览: 17708 次
- 性别:
- 来自: 广州
相关推荐
编程开发规范是软件开发过程中的一项重要指导原则,它旨在提高代码质量、可读性、可维护性和团队协作效率。遵循统一的编程规范可以减少误解,避免潜在的错误,使得代码更容易被其他开发者理解和修改。本文将重点讨论...
在实际开发过程中,初学者要避免以上错误,需要不断提升自己的系统设计能力和编程技巧。通过合理地规划程序架构,编写高效且灵活的代码,才能确保单片机程序开发的成功,并为产品的稳定性和可靠性打下坚实的基础。...
这篇文章《实时软件开发的25个常见错误》旨在帮助开发者避免在项目中犯下这些常见的失误,从而提高软件质量和性能。以下是这些错误的详细解释: 1. **忽视实时性需求**:开发人员必须清楚地理解系统的实时要求,...
性能优化是编程实践中不可忽视的一环,华为规范提倡先设计后编码,考虑算法效率,避免不必要的计算和资源浪费。例如,合理使用数据结构和算法,减少冗余数据库查询,优化内存管理等。同时,代码应遵循DRY(Don't ...
4. **资源管理**:软件支持资源分配和管理,包括人力、时间和其他非人力资源,确保资源的有效利用,避免过度分配或资源浪费。 5. **报告生成**:DotProject可以生成各种报告,如甘特图、时间线视图,以及成本和绩效...
《C语言小项目--开发资源库》是一个针对C语言初学者和进阶者的全面学习资源集合,旨在通过实践项目帮助用户提升C语言编程能力。这个压缩包包含了多种类型的文件,如文档、可执行程序和辅助资源,以提供全方位的学习...
- 解决方法:删除未使用的声明,或在代码中使用它以避免资源浪费和潜在的混淆。 4. **Dowmv网络www.dowmv.com No type information** - 错误描述:在某些情况下,如函数调用,缺少必要的类型信息,导致编译器无法...
总结来说,这个资源包对于想要进入或已经从事编程开发的人们非常有价值,无论你是Java程序员、Android开发者,还是PHP工程师,都能从中找到你需要的工具和指导。记得定期更新工具到最新版本,以保持最佳的开发体验和...
10. **Goroutines的使用**:合理调度goroutines,避免创建过多导致资源浪费,同时要注意死锁和竞态条件。 11. ** channels**:理解不同类型的channels(无缓冲、有缓冲)及其在并发中的作用,正确使用它们进行同步...
本篇内容将详细解析PHP开发者最常犯的11个MySQL编程错误,并提供相应的解决小技巧。 1. **未使用预处理语句**: 预处理语句可以防止SQL注入攻击,通过绑定参数来执行查询。不使用预处理可能导致恶意用户通过输入...
MOXGRAF编程软件是一款专为编程爱好者和专业人士设计的高效工具,它集成了多种功能,使得编程工作变得更加便捷和高效。这款软件不仅提供了一种编程语言,还可能包含了一系列的软件或插件,以支持不同类型的项目开发...
这个名为"jdk1.8中文开发文档(jdk脚本错误解决方法).rar"的压缩包文件提供了针对JDK1.8安装或运行时可能出现问题的解决方案,对Java学习者来说是一份宝贵的资源。 首先,我们要明确JDK(Java Development Kit)是...
在《Windows游戏编程大师技巧》一书中,第七章主要探讨了如何在Windows平台上进行游戏开发,特别是关于工程文件的管理与优化。这部分内容是Part 4,可能涉及到以下几个关键知识点: 1. **游戏编程框架**:游戏编程...
"VC++6.0常见编译错误中英文对照表"是一个非常实用的资源,它帮助程序员快速识别并修复问题,提高开发效率。 该PDF文档可能包含了以下内容: 1. **错误分类**:编译错误通常分为语法错误、类型不匹配、未声明的...
7. **资源优化**:8051的内存和计算资源有限,因此在设计时需充分考虑资源利用率,避免浪费,并确保系统在资源紧张的情况下仍能稳定运行。 通过深入理解和掌握这些知识点,开发者可以有效地使用8051微控制器来开发...
C++是一种强大的、通用的编程语言,被广泛应用于系统软件、应用软件、游戏开发、设备驱动程序等各个领域。...在文档"C++词汇解析集锦 编程开发人员必备"中,你将找到更详尽的解析和实例,帮助你巩固和拓展这些知识。