回想我工作的这些年,也做过不少项目,从最早刚刚接触Java时做的MSN聊天机器人,到后来真正自己开始带的第一个项目“多语言商务平台”,再到后来的农业在线、单点登录、IPv6环境下的IM软件开发和Linux下的C++开发等等。
我认为想做好项目,首先需要一颗认真的心,一颗想把一切做到最好的心。
项目做的越多,越发现在做项目的过程中,有很多细节需要注意,这些细节关系到整个项目是否能做好。
一、关于需求分析
现在很多公司或者团队都没有专职的需求分析人员,一般都是由项目经理或者技术经理来担任需求分析人员的角色,但是这些人大部分都会很不负责,只是完整的把用户提出来的要求Copy回来,再原原本本的描述给团队中的所有人。
从我做过的项目来看,我们的很多客户并不懂得计算机或者网络、并不知道他们想要的到底是什么,经常是当客户看到某一个被媒体宣传的很有前途的技术的时候,就会告诉我们:“我需要这样这样这样一个功能!”。当他看到另一个很有前途的技术的时候,就又会告诉我们:“我需要那样那样那样一个功能!”。
可能给别人做项目的时候,碰到这种事情我们会拿“需求已经确定了,如果需要改的话,我们会收取另外的费用!”这种方法来保证我们不会拖延工期。但是请各位想一想,如果这个项目的客户是自己的老板呢?老总很有可能什么都不太懂,只是看到了某个新技术,就想改进自己的产品,我们能告诉老总:“这样的话需求就变了,如果更改的话,我们可能需要更多的时间。”吗?
所以我认为,我们的需求分析人员需要归纳总结客户的需求,分析客户心里最想要的是什么,然后给客户提供两种或者三种的解决方案(这几种解决方案会应用不同的技术,各有侧重点)让客户去挑选,这样做既能够让客户体会到我们想做好这个项目的诚心,又给了客户比较大的选择余地,同时还能够在一定程度上限制使用的技术领域。
还有一点,需求分析一定要做到很详细,只要有一点不清楚的,就要和客户去沟通,把客户的需求弄清楚。
二、关于技术调查
首先,技术调查一定要很详细的了解这项技术的内容,调查清楚这项技术有哪些优点、哪些不足,以前都有过哪些成功案例。
其次,对官方给的Demo代码要进行相关的测试,至少要看看代码是不是真的能编译、运行通过。我就曾经碰到过这样的事情,官方给的Demo代码有问题,根本不能编译通过,或者编译通过了,但是运行起来会出问题,这就需要我们自己调试Demo代码,把真正经过我们自己测试过的代码作为Demo代码给团队中的其他人看。
第三,关于技术调查报告,一般我会记录这项技术的官方网站地址、运行环境的配置、开发环境的搭建、Demo代码、这项技术的优点、这项技术的不足、Demo代码中还存在的细节问题和开发过程中的常见问题等等信息。如果你在看别人的技术调查报告时,遇到能解决的问题,最好把你的解决方案也写进技术调查报告,大家都是互相学习才能进步。
第四,一定要把技术调查报告单独存放起来,因为很有可能以后的项目中会遇到同样的技术问题,那我们搜索的次序就把自己的技术调查报告库作为第一选择。
最后,经常翻一翻以前自己写的技术调查报告,也许会有一些新的发现,或者会有一些改进的解决方案。
三、关于代码规范
每一个团队都会有自己的代码规范,但是真正能整个项目完全参照代码规范来写的就寥寥无几了,很有可能就是在项目刚刚开始编码的时候,大家都会注意参考代码规范。当开始进行单元测试或者联调的时候,就会完全忘记代码规范的存在,开始随心所欲的修改代码。
当我遇到这种情况的时候,我会宁肯牺牲一些时间,来修正不符合代码规范的那些代码,如果不修正这些代码,肯定在以后的程序修改时花费更多的时间。
当团队中的所有人都养成习惯,只要写代码就会按照代码规范来写,那么这个团队做出来的产品肯定是很好的。
四、关于开发文档以及程序注释
这里所说的开发文档,并不是概设、详设这些文档,而是经常被忽视的程序员在程序开发过程中,记录开发思路的文档。
也许有人会问,这个文档有那么重要吗?我会告诉你,这个文档的重要性可以和详设文档持平,甚至高于详设文档,因为这个文档记录了程序员在开发这个程序时的思路,如果以后这个程序出现了Bug,或者由于人员变化,导致由非本程序开发者调试、修正这个程序中的Bug,那么这份开发文档会节省很多的时间。
关于程序的注释,我认为也是很重要的,现在大家在遇到问题的时候,或者开发中遇到了难点,都会去求助Google大叔或者Baidu大叔,当程序员把Google或者Baidu来的代码直接Copy过来,调试通过后,过一段时间肯定会忘记这段代码到底是怎么实现的。如果恰恰又是这段代码出了些小问题,那么这个注释会帮助调试者尽快的找到问题所在。
五、其他
我做项目的时候,会很认真的把自己摆在客户的角度来想问题,或者是把自己摆在这个产品的使用者这样一个角度,这样的话我就能看到项目的不足,来及时修正项目中的隐藏Bug,我认为只有全身心的投入,才能做好一个项目。
如果能够很注意以上这些细节,我想我们做出来的产品一定都会是让客户满意的产品。