影响软件开发效率的12大杀手

合集下载

人类史上最邪恶的10项发明

人类史上最邪恶的10项发明

人类史上最邪恶的10项发明1.香烟每个人都知道吸烟有害身体健康,但在香烟问世之初,吸烟被视为一种无害习惯,短时间便风靡全世界。

然而,直到20世纪40年代末和50年代初,才开始有研究将吸烟与肺癌联系起来。

例如,1949年在英国,医学研究委员会的研究员理查德·多尔,和伦敦卫生学院的流行病学家布拉德福德·希尔,开始研究伦敦医院的肺癌患者,当患者被询问家族史、饮食习惯和既往疾病时,发现在649例肺癌患者中,只有2例是不吸烟者。

虽然后期世界在认识到吸烟的危害后,很快就对广告进行了限制,并提高了相关税收、限制向未成年人销售、限制在公共场所吸烟,但似乎已经为时已晚,香烟已经活跃在世界各个角落,并成为人们最难改掉的习惯之一。

2018年,世界卫生组织报告显示:烟草每年导致700多万人死亡,其中超过600万的死亡是由于直接吸食烟草造成的,而近90万人是由于接触二手烟而造成的。

2.塑料当塑料在110年前首次被合成时,由于其强度、柔韧性、耐久性和耐热结构都十分出色,所以很快被视为一项奇迹发明。

如今,塑料制品活跃在生活各个领域,大多数食品包装袋、塑料容器、饮料瓶、电子产品等,都是由塑料制作,甚至医院使用的注射器、卫生包装等都是塑料制品。

塑料之所以被如此普遍地使用,部分原因是因为它们几乎不变质、坚不可摧,但也正是这种坚不可摧的特性,使塑料给世界带来巨大危害。

1964年,全世界生产了1500万吨塑料,2014年,这一数字增至3.11亿吨,预计在未来20年内还将翻一番。

所有塑料制品中,大约33%使用一次就扔掉了,由于塑料不能生物降解,它们只会分解成越来越小的碎片,最终变为有毒化学物质,破坏生态系统的同时也威胁人类健康,世界各地已经报道了多起鱼类体内塑料成分,最终转嫁到人类身体的案例。

尽管很多国家已经出台了塑料限制措施,但塑料带来的危害可能需要几百年才会完全消失。

3.核裂变核能,要么是核裂变,要么是核聚变。

以核裂变为例,裂变过程中会产生自由中子和伽马光子,即使按照放射性衰变的能量标准,也会释放出大量的能量。

软件测试一:软件测试综述之软件测试的背景、实质、软件开发的过程

软件测试一:软件测试综述之软件测试的背景、实质、软件开发的过程

软件测试⼀:软件测试综述之软件测试的背景、实质、软件开发的过程1、软件测试的背景1、缺陷是什么(缺陷的官⽅定义)产品说明书:对开发的产品进⾏定义,给出产品的细节、如何做、做什么、不做什么。

只有⾄少满⾜下列5个规则之⼀才称发⽣了⼀个软件缺陷:1. 软件未实现产品说明书要求的功能2. 软件出现了产品说明书指明不会出现的错误3. 软件实现了产品说明书未提到的功能4. 软件未实现产品说明书虽未明确提出但应该实现的⽬标5. 软件难以理解,不易使⽤,运⾏缓慢或者--从测试员的⾓度看--最终⽤户会认为不好注意:软件测试员在运⽤第5条测试规则时,要全⾯,最重要的是要客观评价,并⾮所有测试发现的缺陷都要修改。

2、缺陷产⽣的原因最⼤原因:产品说明书(说明书--没有写或者不够全⾯、经常更改、沟通不⾜);第⼆:设计(程序员规划软件的过程--随意、易变、沟通不⾜);其次:把本来正确的当成缺陷、测试错误。

这类缺陷只占极⼩的⽐例,不必担⼼。

最⼤原因:需求规格说明书;第⼆:设计⽅案;其次:编写代码,其他1)需求理解错误,编写过程中引起的错误2)需求不断变更:项⽬失败的最⼤杀⼿,会引起重新设计,⼯程重新安排3)开发过程中缺乏有效的沟通,或没有进⾏沟通:导致设计不正确4)编程中产⽣错误5)软件开发⼯具本⾝隐藏的问题:选择较为成熟的产品6)不重视开发⽂档7)软件复杂度越来越⾼8)项⽬进度的压⼒3、软件测试员的⽬标尽可能早地找出软件缺陷、并确保其得以修复。

(注意:修复缺陷并⾮⼀定要改正软件。

可以是指在⽤户⼿册中增加⼀段注释或为⽤户提供特殊的p)4、测验1、在千年⾍例⼦中,dave有错吗?如果dave是个好的程序员,他应该对这个‘显然的’疏忽产⽣疑问⽽不是仅仅将程序涉及到只能有效⼯作到1999年,由于他没有这样做,软件测试源就应该测试并发现该缺陷,然后⼜开发⼩组确定是否修正。

2、判断是⾮:公司或开发⼩组⽤户称呼软件问题的术语很重要。

错。

软件工程师常见知识盲点解析

软件工程师常见知识盲点解析

软件工程师常见知识盲点解析软件工程师是当今科技行业中备受追捧的职业之一。

他们负责开发、测试和维护各种软件应用程序,但在日常工作中,往往会遇到一些常见的知识盲点。

本文将解析软件工程师常见的盲点,并提供相应的解决方法。

1. 数据结构和算法数据结构和算法是软件工程师必须掌握的基础知识。

然而,很多工程师在实际应用中往往对各种数据结构的选择和算法的效率缺乏清晰的理解。

在解决问题时,他们可能会选择不合适的数据结构或者没有考虑到算法的时间和空间复杂度。

解决方法:软件工程师可以通过学习经典的数据结构和算法教材,并参与编程竞赛或者挑战,提高自己对数据结构和算法的理解和应用能力。

此外,他们还可以多参与开源项目,从其他优秀工程师的代码中学习和借鉴。

2. 设计模式设计模式是解决软件设计问题的经验总结,可以提高代码的可读性和可维护性。

然而,很多软件工程师在设计方面存在盲点,他们可能不熟悉常用的设计模式,也没有意识到设计模式的重要性。

解决方法:软件工程师可以通过学习设计模式的经典书籍,如《设计模式:可复用面向对象软件的基础》等,深入了解各种设计模式的原理和应用场景。

此外,他们还可以参与团队开发,与其他工程师一起讨论和评审代码,学习设计模式的实际应用。

3. 跨平台开发随着移动互联网的迅猛发展,跨平台开发变得越来越重要。

然而,很多软件工程师在跨平台开发方面缺乏经验,他们可能只熟悉一种平台的开发技术,无法有效地实现不同平台的兼容性和一致性。

解决方法:软件工程师可以学习跨平台开发框架和技术,如React Native、Flutter等,了解它们的原理和使用方法。

此外,他们还可以积极参与开发社区和技术论坛,与其他跨平台开发者交流经验,分享和学习最佳实践。

4. 安全性和性能优化在当今信息安全和用户体验至关重要的时代,软件工程师需要具备一定的安全性和性能优化知识。

然而,很多工程师在编写代码时忽略了安全性问题,或者没有充分考虑性能优化的方法。

惹毛程序员的十件事!需求变更居然不是排第一!

惹毛程序员的十件事!需求变更居然不是排第一!

程序员是一个比较特殊的群体,他们因为长期和电脑打交道所养成的性格和脾气也是比较相近的。

当然,既然是人,当然是会有性格的,也是会有脾气的。

下面,让我来看看十件能把程序惹毛了的事情。

一方面我们可以看看程序员的共性,另一方面我们也可以看看程序员的缺点。

无论怎么样,我都希望他们对你的日常工作都是一种帮助。

第十位程序注释程序注释本来是一些比较好的习惯,当程序员老手带新手的时候,总是会告诉新手,一定要写程序注释。

于是,新手们当然会听从老手的吩咐。

只不过,他们可能对程序注释有些误解,于是,我们经常在程序中看到一些如下的注释:每当看到这样的注释——只注释是什么,而不注释为什么,相信你一定会被惹火,这是谁写的程序注释啊?不找来骂一顿看来是不会解气了。

程序注释应该是告诉别人你的意图和想法,而不是告诉别人程序的语法,这是为了程序的易读性和可维护性,这样的为了注释而注释的注释,分明不是在注释,而是在挑衅,惹毛别人当然毋庸置疑。

1r=n/2;//r是n的一半23//循环,仅当r-n/r不大于t4while((r-n/r)<=t){5//……6r=0.5*(r-n/r);//设置r变量7}第九位打断正当程序沉浸于编程算法的思考,或是灵感突现正在书写程序的时候,但却遭到别人的打断,那是一件非常痛苦的事情,如果被持续打断,那可能会让人一下子就烦躁起来。

打断别人的人在这种情况下是非常不礼貌的。

被打断的人就像函数调用一下,当其返回时,需要重新恢复断点时的现场,当然,人不是电脑,恢复现场通常是一个很痛苦的过程,极端的情况下可能需要从头开始寻找思绪,然后一点一点地回到断点。

因此,我看到一些程序员在需要安静不被打扰的时候,要么会选择去一个没人找得到的地方,要么会在自己的桌子上方高挂一个条幅以示众人——“本人正执行内核程序,无法中断,请勿骚扰,谢谢!”,可能正在沉浸于工作的程序被打断是多么大的开销。

自然,被打断所惹毛了的人也不在少数了。

电子商务之安全技术概述

电子商务之安全技术概述

信息保密
信息完整 身分认证 不可抵赖
加密技术 认证技术
信息有效
网络交易安全
参与对象之间交易过程的安全;如安全套接层协议 SSL 安全电子交易协议SET 公钥基础设施PKI
电子商务概论
8-13
安全应用 信息安全 网络安全
电子商务业务系统
电子商务支付系统
安全交易协议 SET、SSL、S/HTTP、S/MIME 、PKI•••
电子商务概论
8-33
维吉尼亚密码——置换移位法
人们在单一恺撒密码的基础上扩展出多表密码;称为维 吉尼亚密码 它是由16世纪法国亨利三世王朝的布莱 瑟·维吉尼亚发明的;其特点是将26个恺撒密表合成一个
以置换移位为基础的周期性替换密码
明文w e a r e d i s c o v e r e d s a v e y o u r s e l f 密钥d e c e p t i v e d e c e p t i v e d e c e p t i v e 密文z i c v t w q n g r z g v t w a v z h c q y g l m g j 密钥deceptive被重复使用
儿子收到电报抡噌庙叵后;根据相应的电报码手册得到: 2241 0886 1680 0672;按照事先的约定;分别减去100解密 密钥;就得到抛售布匹的信息
电子商务概论
8-29
数据加密基础知识
1976年;狄菲和海尔曼提出了密码体制的新概念—公钥密码 让两个国家的每一个人都具有两副锁和钥匙;每幅各有一把
安全认证技术 数字摘要、数字签名、数字信封、CA证书 •••
加密技术 非对称密钥加密、对称密钥加密、DES、RSA •••
安全策略、防火墙、查杀病毒、虚拟专用网

软件工程师常见陷阱解析

软件工程师常见陷阱解析

软件工程师常见陷阱解析在软件开发领域,软件工程师经常面临各种挑战和陷阱。

这些陷阱可能来自技术、管理或者沟通等方面。

本文将对软件工程师常见的陷阱进行解析,并提供一些应对之策,以帮助软件工程师们更好地应对挑战。

一、需求不清晰需求的不清晰是软件开发中最常见的陷阱之一。

当客户或者项目经理对需求进行模糊描述或者频繁变更时,软件工程师很容易陷入困境。

为了避免这个陷阱,软件工程师应该与客户或者项目经理密切合作,确保需求准确明确,并且及时记录和确认变更。

二、技术选择错误在软件开发过程中,技术选择是至关重要的。

选择不合适的技术可能导致性能问题、安全问题或者可扩展性问题。

为了避免这个陷阱,软件工程师应该对各种技术进行充分了解和评估,并选择适合项目需求的最佳技术方案。

三、缺乏代码质量保证代码质量是软件开发过程中的核心问题之一。

如果软件工程师不注重代码质量,可能会导致后期代码难以维护、功能不稳定或者存在严重漏洞。

为了避免这个陷阱,软件工程师应该注重编码规范、进行代码审查、使用自动化测试工具等,以提高代码质量。

四、时间估算不准确在软件开发项目中,时间估算是一个关键问题。

过于乐观的时间估算可能导致项目延期,而过于保守的时间估算可能造成资源浪费。

为了准确估算项目时间,软件工程师应该对项目需求、技术难度和项目风险进行全面评估,并结合过往经验进行合理的时间估算。

五、沟通不畅良好的沟通对于软件开发团队来说至关重要。

缺乏沟通可能导致团队成员之间的误解和冲突,影响项目进展和工作效率。

为了避免这个陷阱,软件工程师应该积极参与团队讨论,及时沟通问题和解决方案,并采用合适的沟通工具和方式。

六、缺乏学习和更新软件行业发展迅速,新技术和新方法层出不穷。

软件工程师如果不持续学习和更新知识,很容易被行业淘汰。

为了避免这个陷阱,软件工程师应该保持持续学习的态度,关注行业动态,学习新技术,并将其应用到实际项目中。

七、管理失误软件项目的管理是软件工程师必须面对的一个挑战。

软件开发七宗罪

软件开发七宗罪

软件开发七宗罪作者:来源:《中国计算机报》2011年第08期成为一名好的软件开发员不仅要终身学习,而且要避免软件开发中常见的七宗罪。

——尼尔·麦卡利斯特成为一名好的软件开发人员不仅需要终身学习,还要避免软件开发中常见的七宗罪——欲望强烈、胃口大、贪婪、懒惰、愤怒、嫉妒和骄傲。

第一宗罪——欲望强烈。

当前,编程语言逐渐成熟,新的关键字、旨在提高代码可读和可重用性的结构被广泛使用,编程的规则也随之改变,程序员需要研读大量设计模式资料。

但纸上知识在实践中并不一定有效。

编程大师乔尔·斯波斯基说:“能售出是产品开发的一个很重要的目标。

”迷恋工具的程序员会忽略这一点,请采取有效的措施抑制冲动,。

第二宗罪——胃口大。

一旦产品问世,你会忍不住开始筹划更新。

它可以有什么新特性?哪些方面在第一轮开发中没考虑到?程序员容易重复犯同样的错误,导致代码库臃肿且难于管理。

评估你现有代码的质量和可维护性,使代码重构成为每一轮开发的注意事项之一。

第三宗罪——贪婪。

自己团队闭门写的代码库,实现的却是其他团队已写代码的一大半功能。

开发团队如果缺乏明确的目标,就会重复劳动,产生多余而失控的代码库。

经营性开发项目的首要任务之一是确保每个参与者知道别人在做什么。

分享应该是座右铭。

第四宗罪——懒惰。

缺少输入验证,这个看似业余的错误却经常出现在经验丰富的程序员编写的代码中。

许多安全漏洞可以追溯到未验证用户的输入格式是否正确。

许多工具可以帮助程序员避免这种情况发生。

输入验证应当在程序的核心部分,而不是在用户界面上,不这样做,就是偷懒。

第五宗罪——愤怒。

程序员很容易忘记,他们写的代码会比他们在某个公司呆的时间还长,接任者很难搞清楚每个代码片断的意思。

因此,手下留情吧,多给他们一些提示。

但请记住,注释难以理解或注释太多,和没有注释一样糟糕。

代码本身就已说明做什么了,注释只需说明原因即可。

第六宗罪——嫉妒。

也许你有理由不实施项目版本控制,但功能强大、有效的版本控制系统已经免费,服务供应商甚至提供分布式项目主机代码,实施项目版本控制变得非常容易。

软件开发工程师岗位危险有害因素及防范措施

软件开发工程师岗位危险有害因素及防范措施

软件开发工程师岗位危险有害因素及防范措施下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!软件开发工程师岗位危险有害因素及防范措施1. 电脑辐射与眼睛疲劳。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

影响软件开发效率的12大杀手 2008年09月18日 14:47 【IT168 技术文章】软件开发过程中,我们经常遭遇各种各样的问题,而本文就是要讲解这些问题中最棘手的12个。

读完本文后,相信读者会对它们影响开发效率的原委有个初步的认识。

我们发现,有很多的文章、书籍都在阐述软件的开发方法,为什么呢?个人以为那是因为提高团队的开发效率是一场永无止境的战争。

软件的开发技术日新月异,开发团队只能不停地适应这种革新(如果这个团队不是此项技术的领头羊),否则只能消亡。

而适应很大的程度表现在效率和时间上,因为客户对软件质量的要求是越来越高,同时却不希望延长开发周期。

我们知道,随着软件外包的到来,同一个团队的开发人员可能来自不同的国家,他们处在不同的时区,有着不同的文化背景。

和其它行业的人一样,开发人员往往喜欢把精力用在他们感兴趣的任务上面,却经常忽略了更重要的事情——开发效率。

在软件开发这个繁杂的世界里,作为一个项目经理,也作为一个开发人员,我碰到过各种各样的有趣的问题。

这篇文章就罗列出了这些问题中最棘手的12个,并提供一些处理问题的参考意见。

1.维护的开销是效率最大的敌人软件的维护需要很大的开销,它很自然地把开发团队带向低效。

维护的开销往往和代码行数成比例,尤其当代码没有经过很好的测试的时候,这个情况尤为明显。

开发团队会发现:随着代码行数的增加,bug的数目也会随之增长,当然,bug产生的原因包括内部因素和外部因素。

内部因素的的确确是我们的代码的问题,而外部因素实际上并不是程序的bug,但是无论如何必须修正。

说得更详细点,外部因素可能是你调用的代码改变了,或者是运行环境改变了。

例如,一段Java代码在JRE1.4下面工作得很好,客户要求它升级到JRE 1.5下也能运行。

这个时候,如果不能运行,你可能会声明原因不在程序上。

但是客户可不管那么多,站在他的角度上,这就是你的程序的bug。

实际上,完美的程序是不存在的,在做项目计划的时候必须考虑周全。

因此,在开始编码之前,你就应该把维护的开销算到软件开发周期里去。

甚至在思考怎样编码之前就应该思考怎样去测试。

而且,你还得考虑怎样让服务器自动测试你的代码——如果一个测试不能做到完全自动化,那么它只能算作半个测试。

只有让测试做到完全自动化,团队才能在新的环境里毫不费劲的测试自己的代码,也可以迅速高效地对测试进行扩展。

刚刚提到的,你必须找到一种可行的方法能够保证你的代码能够被自动地测试,的确如此,但这也是在单元测试中存在的一个问题,因为单元测试不可能面面俱到。

事实上,如果对测试进行分层,测试的效率可能会大大提高(关于分层测试,将在后面作具体的阐述)。

2.开发人员讨厌测试,他们不按照测试的规范去做代码在某个环境中能正常工作,就假想它在其它环境中也能正常工作,这是软件开发人员的通病。

在现实生活中,这根本就是不可能的,可开发人员却生活在虚拟的完美世界中,他们认为这个世界里万事万物都是完美的,不可能遭遇任何的问题。

例如,一个J2EE程序在JBoss下工作正常,开发人员往往理所当然地认为在WebSphere下也能正常工作,事实却未必。

所以,开发人员有必要在所有的目标平台上测试代码。

否则,程序就有可能无法通过。

我相信,你一定需要一个框架,使你的程序能够在任何平台下工作,而且能够把测试结果保存到数据库中。

概括地讲一下过程:你写好各种语言的测试代码,它就可以在各种平台下自动测试,保存测试结果。

之后,你就可以查阅测试结果了。

这个结果包括各个平台下、各个版本的代码的测试的历史。

据我所知,某些工具支持这些功能。

例如,BuildBot 开源项目正在为之而努力,至少在不久的将来可以实现这个目标。

3.出现bug时,分析原因比修正错误更耗时间当开发人员修改好代码,并把它提交到代码库里的时候,你必须反应迅速,及时地测试他(她)提交的代码,这样,如果测试不通过,开发人员就还记得他(她)刚刚修正过的地方,也很容易找到bug的原因所在。

时间一长,他可能就忘了,Bug出现时不得不查看代码历史,比较不同版本的代码,直到代码原因分析出来。

很有可能光找原因就白白的耗费了几个小时,太不值得了!4.开发人员在转换项目过程中花费了太多的时间通常来说,搭建一个项目的开发环境是不容易的。

如果对项目没有很好的了解,不具备一定的专业知识,要搭建好环境几乎是不可能的。

如果仅仅是搭建环境就花费很长的时间,开发人员往往更希望长期呆在同一个项目环境中。

比较理想的状况是:开发人员有能力毫不费力的从一个项目转到另一个项目,不存在技术难题,“项目文化”已经不是个难题了。

对此,我有个建议:使用项目管理工具,比如Apache Maven。

用Maven描述的项目一般很容易在Eclipse中搭建起来。

对于Java项目来说,只需要要从SVN下载代码,键入“maven eclipse”,刷新,它就可以工作了。

所有与代码对应的测试代码也可以运行!哇,简直是太神奇了!整个项目不到30秒就建好了。

很可惜,这项技术目前还只支持Java。

至于其它的语言,如Python、C,等等,仅仅Maven还是不够的。

5.随着开发人员的增加,Bug也增加如果方法不得当,一般来说,开发人员增加的同时,程序的bug数目也会增多;随着程序的复杂性的增大,软件的质量也会下降。

而我们必须与之作斗争。

那采取什么方法呢?很简单的理论:透明、代码审查和自动测试。

透明能够确保每个人都能得到代码,决定谁去修改它,何时修改,或者是为什么要修改它。

透明能够确保团队的每个人都会因为自己的代码质量而感到压力,并由此而产生动力。

而代码审查呢?开发人员对别人的代码进行审查,不仅能够从别人的代码中学到东西,而且它还确保开发人员有效地发现代码的问题,对提高代码质量功不可没。

至于自动测试,我们在下面进行详解。

6.分层测试不可否认,写出好的测试代码的确是个很大的挑战。

例如,代码写好后,对它们进行单元测试就很困难,单元测试不可能测试到程序运行的方方面面。

功能性(质量保证)测试对程序测试相当有效,不过它通常运行慢,对问题发生的原因给出的信息往往很不够。

因此,你不得不对测试进行拆分以克服这种情况。

如果简单的基础测试都无法通过,那么运行更大的测试显然是无意义的。

分层测试的目的就是让测试从易到难。

——第0层:开发人员在自己本地环境中进行的单元测试。

——第1层:构建服务器上的单元测试,(几乎每个)代码提交之后开始。

——第2.1层:集成测试,在几个模块整合到一起之后进行的测试。

(用真正的模块代替掉原先的模拟模块。

例如,使用真正的XML解析器换掉原先的那个替代品)——第2.2层:集成测试,通过入口访问系统(接口、磁盘等等,到这儿,你可以测试访问真正的系统)——第3层:功能性测试,测试程序可见的部分。

(用户能够看到的实实在在的功能,当然,这一层还不够)——第4层:性能测试。

——第5层:客户体验。

(OK,这并不是一个测试层,但是这个环节的确会发现不少意料之外的bug)这个方法的理念是同一个bug决不会再次重现。

因而,对于每个你发现的bug,你都应该创建测试用例以保证它不会重现。

这个测试可能是单元测试(这样最好),也有可能是集成测试。

总之,问题发现得越早越好,这意味着我们可以更早修复它。

所以如果某个问题能够尽量的在第0层发现,我们就不要让它等到第3层才发现。

随着测试代码的增加,代码质量也会越来越健壮。

7.严格限制使用编程语言的数目如果你无论完成什么任务都为它选择最好的工具,那么当你的任务越来越多,你采用的工具也越来越多,这可不是什么好事。

如果你总是为短期的目标选择最便捷的方法,系统的复杂性会随之增加。

所以,有时候,你不一定要选择最好的工具。

在同一个团队里,最好只使用一门语言,尽量不要超过两种语言,否则单单培训开发人员的成本就不少。

例如,Ruby on Rails就是个很好的工具,但是它涉及到不止一门语言和技术。

在用它的某种技术开发网站之前,必须要考虑所有的花费。

如果你们的主要活动就是开发网站,那么这条规则对你并不适用,因为在这种情况下,Ruby很可能变成你们项目组的主要语言了。

我的观点是,选择有限数目的编程语言。

当然,你也必须确保这种技术对你们公司有用。

例如,有必要用四种网络服务框架吗?没必要,一种足矣。

8.紧跟技术的发展和革新,不过这个比较困难我们很容易碰到这种情况,为了实现某个功能你必须付出很大的努力,但是实际上已经有工具可以做到这点,但是我们却不知道。

如果我们关注着技术的发展,包括开发框架的革新,方法的提出等等,就可以避免这种情况的出现。

幸亏有这种关注的习惯,我发现了现在我用得几乎所有的工具:Eclipse, Maven, Tomcat, Apache, LDAP, CruiseControl, TestNG, Python,等等。

它们中大多数工具都可以为我节省很多工作。

有的项目本来需要几个月的开发时间,结果缩短到几周。

比较困难的就是如何去选择工具(要花费很多时间去选择工具),而且还得避免你的工作团队同时使用太多的技术。

有个建议,当使用某项技术还在实验之中的时候,我们最好不要用,最好等到它已经实现了,有成熟的产品了。

另外一个挑战就是评估、选择新的技术。

如果要对旗鼓相当、都是很有竞争力的框架进行评估,并从中选择一两个的话,这个难度一般也很大。

9.为了保持效率,最好不要被频繁地打断在解决复杂的问题的,开发人员一般需要7到15分钟进入高效的状态。

如果从一个活动转到另外一个活动(电话,电子邮件等等)就会打断开发人员的进程。

例如,如果一个团队的开发人员每20分钟就有个技术服务的电话骚扰他,哦,这完全是灾难性的。

因此,我们不应该允许用户直接打开发人员的电话。

取而代之,我们应该建立一个工具收集问题、bug、需求等等来完成这些工作,这样开发人员就可以专心致志地忙他的本职工作。

这样的工具很多,包括Mantis 和Jira。

另外一点,记住,开发人员并不是机器,他是人。

为什么项目经理要求开发人员记住——存储——他们的要求?难道他就不能把他的要求写下来吗?10.定义好构架与编码同等重要在没有构架的基础上进行编码如同在没有灯光的夜晚驾车。

你有可能达到你的目的地,但是行程很慢,也很危险。

如果有构架师,他就会经常审核原始的产品,预测可能出现的问题。

缺少了构架师,系统能难有很好的框架,如果每次加进一个新功能,系统复杂度就会大大增加。

即使编码没问题,据我所见到的走捷径的项目,基本上都多多少少存在些问题。

这就是产品构架师应该对产品的框架有一个全局的概念的重要原因。

11.开发人员和产品使用者考虑的重点不同开发人员总是对“有趣”的任务感兴趣,而产品的使用者总是希望产品的功能对他的客户有用。

开发过程中,应该尽量地做到,至少应该使这两个目标比较接近:让开发人员解决比较无趣的问题时也让他很高兴。

相关文档
最新文档