客户应该知道的软件开发八个原则(转)
读了一下觉得很不错,转载一下给大家~
在IT领域做自由职业者是很合适的。有很多开发者都有过做自由职业者的经历。有很多书籍和文章将了如何让客户满意以及如何及时的交付正确的软件。但是很少文章讲述客户在项目过程中应该如何做。虽然客户付了钱,但这并不意味着我们要容忍他们非常粗鲁的态度和错误的习惯。
1. 好的软件一定不便宜 我常常遇到的一个问题是,客户想要花不到500欧元建立一个全功能的企业网站。这个价钱你可以找我隔壁的12岁小男孩,用Joomla帮你搭一个,但是专业的软件开发者,懂得软件架构,懂得如何开发安全,稳定,能良好运行的软件的一点比这个价格要贵很多。软件开发和别的职业是一样的,需要花大量的时间学习。
除此以外,很多客户往往在合同以外要求添加一些功能,免费的。你的医生不会免费工作,你的扫地阿姨不会免费工作,你也不会免费,为什么要求软件工程师免费工作?
我有见到很多客户雇佣了一些便宜的、自称专业的开发者,或者外包开发到印度,越南,结果往往很失望。这些渠道看上去是便宜了一些,但是后期的软件维护成本非常昂贵。所以很多客户尝试了一次以后,还是回头来找我开发。
2. 需求要明确 我们知道一开始就能列出所有详细的需求是很困难的。这也是为什么我们发明了敏捷开发这样的技术。但是如果你给我们错误的需求,我们也只能交付错误的软件。你可以因为软件不好用而责怪我们,但是你给了我们不对的需求在先。最终浪费了双方大量的时间,也浪费了很多钱。软件开发者也许很聪明,但是只有你了解你的业务需求!
3. 好的软件需要配合完成 为了交付一个好的软件,开发者应该在项目中全力以赴。但是客户也不能坐在一边对这个项目不闻不问。如果你想要你的软件按时、正确的交付,你应该和开发者保持联系,所以我们能及时发现问题并修正。这并不需要你无时无刻的盯着我们工作,你只要及时的回复我们的email就可以了,比如说24个小时之内。我有遇到过一些客户,在合同签完以后彻底消失,然后到软件交付的时候,跟我讲为什么没有开发完成?你说呢?!
4. 并不是所有的功能都是可见的 没有绚丽的界面和大量的新功能并不意味着我们没有努力工作。事实上,大量的工作都是和前台无关的。这也是为什么我们应该投入资源来改进后台的代码。根据 Pareto Principle http://en.wikipedia.org/wiki/Pareto_principle ,20% 的代码 解决了80% 的问题。这些问题有可能是服务器性能瓶颈或者数据损坏。虽然你花钱在这些方面你看不到软件的界面变化,但是它是值得的。
5. 提前给出准确的时间预测很困难 在任何一个领域,给出项目的时间预测是一件困难的事情。在IT领域更是如此,因为客户往往不知道他们到底想要什么。告诉我们你的想法,我们会给你一个时间估算,仅仅是估算。需求往往在开发过程中变化,所以不要老拿预估的时间来说事。
6. 程序员也是人 我们也许工作起来,思维方式像是机器人,我们也许长时间在办公室里不出来,但这并不意味着我们不是人类。当你在餐馆吃晚饭,或者做飞机安全着陆的时候,你会对厨师和飞行员表示感激,当你的家人在医院治愈的时候,你会对医生表示感激。那么请也把这份感激、尊重带给我们。
7. 告诉我要做什么,不要指挥我怎么做 你描述你的问题,让专业的人来提出解决方案。请让开发者做他擅长的事情:解决你的问题。在IT领域,开发者懂的往往远远比客户多。也就是说开发者知道不同的方案的优点与缺点,他会选择正确的解决方案。请不要把简单的问题复杂化,不要告诉我们如何解决问题,专业的问题由专业的人来解决,可以节省你的很多时间和金钱。
8. 听听我们的建议 正如上一段提到的那样,开发者在技术领域也许比你(客户)懂的多。如果你想要在你的网站放一个自动播放的视频,而开发者建议你不要这么做,那么听他的。因为他已经做过类似的案例,并且知道自动播放让很多人很厌烦。你喜欢这个视频,但是其他人不一定。如果你的开发者建议你不要使用Flash,那么相信他。他知道使用Flash的不好的地方,也许你不知道。
结论 软件开发者需要做所有的努力来完成一个好的软件。有很多书籍讲述了关于如果控制软件质量,怎么做需求分析,敏捷开发等等。但是作为客户,你也应该遵循一些基本的原则。最大的问题往往是客户希望项目的预算越低越好,却不断的更改需求,还没有很好的沟通。