别人总觉得是在显吧,干脆把这个项目认为是小项目了,不知道把这个项目是小了,别人会不会又觉得又显吧了?说大也不行、说小也不行,也的确没招了。
我想主要把项目里遇到的问题分享给大家一起探讨,也并不是为了什么显吧什么的,希望大家用一个正确的心态阅读此文章,希望有更多的朋友把更大软件项目的经验分享给大家,让大家知道一下,大型软件项目里都会遇到什么问题,如何解决才好,我们平时做些什么准备工作比较好?
有的时候20个功能模块,也并不能代表工作量有多少,其中有一个模块是进销存,有一个模块是工程管理,就这么2个模块就可以足够搞死人了,一个完整的进销存要多少功能?多少开发量?一个相对完整的工程管理模块,有多少工作量?所以模块的数量也并不能代表整个项目的工作量,只是一个参考而已。
【一】行业知识积累、开发积累方面
01. 无行业知识积累 - 哪个行业,都有哪个行业的一整套的业务流程、业务逻辑,这些业务能充分的理解、深入的分析,都需要一个过程,不是一天两天就可以搞定,就成为行业专家了。
02. 没有稳定的开发平台积累 - 开发一个大型的软件项目,往往需要一个稳定的开发框架,若没有稳定的框架、又要组织一大堆人来开发软件项目,阵脚很容易乱套,整个项目也容易凌乱,而且一个稳定的开发平台的积累,也是需要一个过程,除非是有顶尖高手能把以前的积累贡献出来,例如B/S的网页框架、添加、修改、列表、分页、查询、打印等等的一个规范的处理模式。
【二】建建设、分工协调方面
03. 团建建设匆忙 - 就像一个足球队,不是1天2天就能建设好,一个分工明确、工作效率比较高的团队不是那么短时间就可以组件好的,都需要一个磨练的过程。
04. 开发人员不稳定 - 哪个IT公司,人员稳定的,都比较难做到,往往项目里的一些员工眼看着就要辞职什么的,心都没在工作上,怎么可能做出像样的程序模块呢?
05. 人员配备不足 - 哪个公司也不会在没有固定项目的前提下,白养着一大帮人,老板也承受不了这样的风险,IT软件人员的开支相对比其他行业高一些,例如洗脚店。
06. 没有测试人员 - 软件项目,没有测试人员,就是丰田车子一样,虽然看上去很美好,但是很多问题,没有充分测试好,开发人员天天看着自己的程序,也麻木了,一般找不出自己的问题。
07. 没有美工配备 - 现在用户的要求也都比较高,光靠程序员总难做出漂亮的页面,功能再强大,美工设计不过关,还是比较难让客户满意。
08. 资深开发人员太少力量不足 - 虽然开发人员有好几个,但是大多数是菜鸟,一般对项目的推动力够,进展缓慢,虽然资金上是省了一些,但是周期会拉很长,资深的开发人员要价高一些,虽然眼前有项目,但是项目开发好了,这些人干什么?辞退?若不辞退,没几个月公司就耗不起了,人员开支太大了。
【三】开发过程方面
09. 客户的要求也不简单 - 现在能搞百万级的软件项目的公司,一般也不是菜鸟公司,也很有想法,管理也是蛮有套路的,你开发的软件,必须要能经得起客户的折腾,很多很多细节也不是对付就可以了,一对付,客户也不让啊,满足客户的N多需求,就不像是20个功能模块那么简单,甚至是开发200个模块一样难。
10. 配套设计、配套文档跟不上 - 虽然客户要的是软件功能,但是还有很多环节,例如项目的验收、付款等等,都需要有配套的文档,配套的设计文档,人员之间的交流,也需要很多文档,开发人员往往不善于写文档,这当然也跟我们的水平有关系的,再加上项目费用控制,又无法招聘N多的人员来写配套文档,连最底的正常工作使用上的测试环节也不过关,更难写配套的文档了,文档一整理,一个人花费了几个月了,打印出来就是上千页,每次更新、调整,都需要很多精力花费在这个上。
【四】项目管理方面
11. 项目资金到位不及时 - 一般大的软件项目,资金及时到位都不容易,项目又经过了好几手,往往需要一个比较长的周期,这时项目的前期就无法有充足的资金去分配,无法招聘到合适的开发人员,项目的进展也会缓慢一些。
12. 管理与开发脱节 - 一般这样的项目是异地开发,公司的领导又不会亲自到现场去管理,往往是在异地进行指导管理,领导有领导的想法,领导有领导的做法,但是实际项目有实际项目的困难,一般领导的指挥与决策与实际项目的情况有些脱节,甚至为了满足领导的项目,大家还需要折腾一些额外的事情,很累。
13. 指手画脚的人也多 - 这么大一个项目,各级领导都有独特的意见建议,项目承包放的意见建议、项目承建方领导的意见建议,其实绝大部分人只是嘴巴上说说,对项目几乎没有实质的价值,因为干活都需要我们自己来干,他们又不会指点细节、解决难题的,基本上都是官场上的应付。
14. 项目经理的沟通协调不过关 - 若项目经理负责的事情过多了,他精力也会被分散,很可能会抓不主重点,例如,项目的架构是这个人负责,项目的难题解决这个人负责,项目的美化也这个人负责,项目的人员招聘也这个人负责,反正项目里的,能负责的,都这个人负责了,往往跟领导的沟通会被淡化,与客户的沟通也会被淡化,因为精力是有限的,用在别的地方过多了,沟通协调上就容易出问题了。
【五】项目工作量、难度评估方面
15. 项目的难度、工作量评估不准 - 往往项目的前期,就看那么20个模块,每周做一个模块,5个人来做的话,不是1个月就可以搞定了吗? 那我给你4倍的时间,4个月总可以了吧?听听也是有道理,给了4倍的时间,其实,问题出在“每周做一个模块”上,其实每个月做一个模块都难,项目的难度复杂度被低估了,评估项目的复杂度,往往也有一些方法,但是更可靠的是项目经验,例如我们老板亲自评估往往能估得更准一些。
16. 小项目能做得又快又好未必大项目能做得好 - 小项目的要求都很低,甚至是文档都不需要,但是大项目,不只是工作量大,复杂度、需要协调沟通解决的事情会是很多很多,各种细节的处理要求等等都会超出小项目很多很多,例如10个项目的难度、工作量,很可能没一个大型项目的工作量高,是需要在能力上的质的突破,不只是量的突破。
17. 项目除了软件开发,还需要其他很多环节 - 例如我们开发好,给客户确认时,往往客户又有其他事情在忙,等客户不忙了,我们又在忙修改错误,所以一个不成熟的东西,想真正做好,前期的准备工作上往往需要投入巨大的人力物力,否则,跟客户的沟通确认的周期就你无法想象的漫长,因为你忙时客户空,客户空时你忙,甚至是你忙时客户也忙,所以项目的周期往往被没有经验的开发人员评估得很短,实际上需要一个漫长的过程,小公司很容易被耗死。
【六】薪酬待遇方面
18. 项目很容易进入恶性循环 - 项目没能按时完工,客户的款不会按时支付,公司的费用控制会严格,各种项目中的开支都不会按时发放,甚至会进行制裁,例如6个月的交通费不给你报销、6个月的电脑补贴不给你,6个月的通讯补贴不给你,不只是你一个人,甚至整个团队的所有人员公司都会进行制裁,这时候大家想想,天天加班到12点,干得死去活来,也得不到公司的理解,那就更闹心了。
19. 天天高强度的工作,一般人受不了 - 打工的毕竟不能跟搞革命的比,一个月半个月内天天加班到12点还能理解,但是一年到头都天天加班、又没加班费、又没出差补贴的情况下,难保证天天的工作效率都很高,人毕竟不是铁打的,是肉长的,该休息的时候还是需要休息。
20. 新人的待遇跟不上成长的步伐 - 刚来公司时往往很低的工资待遇也可以,但是随着水平的成长,往往需要稍微提高一些,否则时间长了,大家还是会产生跳槽的念头,毕竟你这里不给,别人有给更高薪资待遇的,往往工作1年后,就有几下了,与刚毕业时到处找工作找不到截然不同的处境了,现在开始在往熟练工人的方面迈进了。
21. 大家看不到未来 - 人都需要有个希望,例如这个项目做好了,是否有重复利用的价值,是不是下一个单子就等在哪里了,你辛辛苦苦做了一年,看不到接下来的单子的希望,人难免也会有些失望,若一个辛苦做出来的项目,能卖出第2、第3、第4、、、、那大家也是干劲十足,毕竟变成产品了,对大家来说都是巨大的成就。
【总结】做软件项目没那么容易
还好有多年的经验积累、有一股拼命的干劲、执著的追求、对软件的兴趣爱好,否则真的容易彻底崩溃。
真正做好一个大型的有质量保障的软件项目,都没那么容易的,若真的烧个30万-40万元就能把一个大型软件项目做好,若真的靠几个阿猫阿狗瞎折腾几个月半年就能搞定好,那估计很多大老板都愿意烧软件项目了,那干脆国家出钱烧个3000万,烧个数据库系统,再烧个4000万,烧出个操作系统算了,搞那么复杂干啥了。
随着年龄的增长,水平的提高,越来越不敢低估软件项目了,真的有那么容易吗?