商业项目和普通的练习项目的特点分析
曾经,当我还没有接触到真正的商业开发项目时,也是和很多人一样,对商业项目总是那么的崇敬,进而觉得自己做的一些练习项目没什么水平,拿不出手。很多初学者也都这么想,总觉得自己做的那些东西都不值得一提,也认为自己做练习项目也练不出什么。这里,我给大家谈谈我对商业项目的理解,给大家一点启发吧。
项目很大
商业项目一般的特点就是大!这个毋庸置疑。为什么呢?其实就是商业项目因为客户花了大价钱,定制了很多功能,或者自己的产品,必然也是需要强大的功能,才能得到认可。所以,项目很大,这是必然。就是这个大,吓到了很多人。当初我接触几个大项目,都非常的害怕。几十个类,每个类都有几十个成员函数,每个类中还有各种各样的数据结构体声明以及各种宏,类的继承层次复杂,类对象又作为其他类的成员,使用基类指针来操作派生类,等等,各种各样的花样,对于基础比较薄弱,或者对于C++基础还行,但是缺乏实战经验的新手来说,还是挺恐怖的。如果此时,你听别人说,这个项目没有两三个月或者半年的时间,根本没法动手,这时或许还是有点宽慰的。这是我当初的感觉,很不安的感觉。但是,你放心,花的时间长了,慢慢就熟悉了,之前看上去几十个类,通过大量的接触和了解,这些也就不会感觉很多了。要求很高
商业项目第二个特点,就是它要求很高(稳定性要好)。要求很高是什么意思呢?并不是说它技术上一定要达到什么高度,而是对于各种细节,软件的稳定性要非常的有保证。比如工业控制系统,并不要求软件的开发水平要多高,但是绝对不能时不时崩溃。这是最基本而且也是最重要的一点。很多人开发,包括我自己,也都是程序也经常出问题。所以在开发中不断的总结问题的错误原因以及防范方法,让自己的程序的稳定性越来越高。我工作中开发的软件,是接替上一个程序员的工作,这半年来,开始花了两个月的时间熟悉,然后慢慢的就开始写代码了。但是也是写了才慢慢真正熟悉。后面主要的工作就是在不断的解决各种Bug。就是因为程序复杂了,并且各种疏漏才导致的。当然,每个软件都是由很多问题的。对于一般的个人做的作品,很多都是避而不谈的做的,不会的一块,可以暂时放一放,你知道会有问题,但是是作品,就无所谓,只是演示用用罢了。然而,商业项目,靠项目赚钱,即使一个微不足道的Bug,甚至一处没有为用户考虑周到,都会损失客户,或者让客户产生不良的印象。这些都不应该有的,所以,一定是要修复Bug的。必须做的功能,一定要做,各种错误要严加防范,要做到,不管用户怎么玩,程序不能崩溃。所以,商业项目,你不得不在代码中加入各种检测,一个也不能漏,即使代码看上去很不好,但是必须做到。框架基础支持
商业项目大项目会有框架支持。这里指的不是应用程序框架,而是程序项目的实现框架,如何把各个组件组合起来,如何保证扩展性,如何组织各个模块的联系,如何系统的实现业务逻辑。这些都不是会编程知识就具备的,必须是经过实践开发,慢慢锻炼出来的。做的多了,思维也就开阔了。而这些框架其实也是比较常用的,所以,你做过一些,也就慢慢的懂了。这一点是练习项目和商业项目很大的差别。练习项目一般不会考虑如何使用一个框架来组织,除非你决定会持续升级,不断的扩展。当然,一开始做的时候,你不可能想的这么远,只有在有一定经验时,才会慢慢的重构代码,调整设计。不过每一次的升重构,在代码结构上都会是很大的进步。开始只是为了实现功能,能实现就可以了。这也很正常,不要企图一步登天。在没有经验的前提下,不可能设计出很好的架构的。这个还需要在平时的开发和练习中有意识的训练。时间强制规定
然后,商业项目是有很多的时间规定的。很多项目,一开始时就确定好了时间,什么时候开始,什么时候交Demo,什么时候出什么样的效果,什么时候提交测试,什么时候开发完成,都是在计划中的。因此,在时间上都是很紧的。这和练习项目的随意是很大的区别。必须要抓紧时间的做,这时候不是兴趣。你可能是因为兴趣而加入的,但是多数你是追求自由的,此时你的压力会很大。客户逼得很紧,你就会变得很烦,慢慢对代码也产生厌倦。如果是没有开发经验,只会加倍打击积极性。商业项目,规定了时间,不在规定的时间完成,就要支付延期费用。所以,通常短期的项目,经常加班和出差到客户那去,是很正常的事情。客户要求你到他那去工作,看着你工作,才放心。你说你的压力能不大吗?但是这不表示,平时练习一定要非常按时的完成某某功能,但是需要在一个时间段完成,不要太长了。大概就是以上四点吧。其他的就不细说了。那么我们平时要做的练习项目,尽量要按照商业项目的标准来练习。但是如果你为了练习一个知识点,就只需要单纯的练知识点。项目练习是要以产品为目标进行开发。尽管你不会,没关系,学呗。工作中很多东西你也是不会的,都是在开发中学会的。但是你的目标是让产品表现良好,就把自己当做用户,来使用产品,提各种要求,当然是在正常用户范围之内的。比如,不用提脱离实际的要求,同时,你也不要追求技术而加一些不必要的功能。一切都是站在用户的需求的角度来开发。
所以,在练习开发时,而不是练习知识点,要有一个基本的时间要求,不要随意拖延,尽量快完成。既然是做一个产品,就要站在稳定性和扩展性考虑,所以在前期要考虑到各种意外,防止bug在每一句代码中。扩展性则在设计软件的整体上就要做好。所以,编写代码前要做好设计,如何实现逻辑,如何保证各模块通信,如何保证各模块的运行等等。写一个基础框架支持,可以为后续的开发做好基础,也可以使代码更加精简,给后续开发提供更好的支持。
在练习开发项目时,时刻记住,以软件产品的目标在练习,写好的功能,不能绕行,至少要有这个功能。商业开发,不是你说了算。所以,既然提出来,就要想尽办法实现,除非技术上真的实现不了,那么你也可以变通的实现。总之,必须坚持做完,这是商业项目的基本要求。所以,在平时要经常练习,有时候一个不经意的练习却可以给你积累大量的经验,不做不知道,一做确实可以学到不少实践开发经验。