每个创业者都会有第一桶金,这对于创业者来说,是启动资金,是公司能开航的动力;对于听众或者观众来说,有的可能就是奇迹、神话、传奇,等等之类的。对我来说,这第一“桶”金,是我创业的直接“导火索”,同时也是我的启动资金,这中间更多的是我的冲动,是一种藏在心底里长久的一种火苗的突然燃烧。所以对于听众来说,可能比较平淡无奇了。
公司的第一个项目,也是我第一桶金的资金来源,既然是公司做的东西了,肯定不能象toy软件了,要真正当作一个软件产品来做了,要有需求分析,软件架构设计,数据库设计,编写源代码,测试,维护等环节了。因为刚开始公司就我们两个人,所以我们两个就充当了架构设计师,软件工程师,测试工程师,售后工程师等角色。
虽然以前也做过很多项目,也和很多人合作开发过,但是真正的流程还是理解的不够,其实在软件开发中这个流程是非常重要的。下面我就以我的亲身体验来说明软件开发中的各个环节,这同时也是我的教训,其中有许多可能也是不对的,希望朋友们给予指正。
项目描述:是一个生产企业的综合计划管理系统,包括了订单管理,排产管理,令号管理,销售管理,发运管理五个模块,另外还有综合查询等统计信息。
需求——你受客户的影响有多大?了解了基本需求之后,我做了一个解决方案,其中包括了J2EE架构和.NET架构,并详细描述了各自的有缺点和环境需求,让客户来选择。我向客户推荐的是采用J2EE架构,一方面是我的原因,我想在J2EE设计中积累更多的经验,二是客户的公司的订单的处理将来可以移到Internet,实施E-commerce。当把方案拿给客户以后,我自然的推荐了J2EE模式,但是这个客户他本身还是很了解技术的,他说J2EE比较复杂,将来维护的费用会比较高,另外他也不是太懂,因为以前他开发了公司的网站系统,使用ASP开发的,所以他就建议我们使用ASP开发,一是ASP的环境要求比较低,二是将来他可以自己维护,譬如需要什么报表,他就可以自己加进去。因为是我的第一个项目,所以我也接受了他的建议。说句实话,对于生产企业的管理系统,我还是第一次做,其中的一些流程我一点都不清楚,好多名词更是第一次听说,如“令号”,“排产”等。这也给我写需求造成了困难,在和客户交流了一周多后,我基本熟悉了流程,客户也把数据表的要求写出来了,综合了我所了解的业务后,我写了一篇洋洋洒洒的《需求分析说明书》,这也是我第一次这么完整、规范的一个需求分析。
架构设计——能设计出一种弹性、合理的架构吗?以前设计的软件,我没有这个环节,直接拿来题目,根据经验马上就开始编码。但我现在是公司了,必须要按照规范来作,即使我做的不好,我也必须加入这个环节。当然要想设计出弹性灵活的架构,不是一朝一夕就有这个功力的,对于一个软件也不是一次就能设计出非常好的架构的。李维在《面向对象设计实践之路》中提到的PFM系统,之前也是为了完成任务而做的,我之前设计的软件可能都是这样的,没有什么架构而言的,现在要对PFM改造,进行重新设计,使之有一个弹性灵活的架构,但也要经过几次反复之后才行。
界面设计——能设计出简洁美观符合习惯的界面吗?以前不很注意,界面随便搞一下就可以了,以前看了林锐的《Web界面设计》觉得没有什么看的,觉得我都知道,当这次我要真正的要进行界面设计的时候,我觉得他说得好多我可能正要碰到或者将要碰到,觉得很多“规则”还是很有道理的。我不见得要设计出非常有创意的界面,但是我应该设计出标准的界面,不能让用户一看,啊!真难看啊!所以这次我对于界面非常的注重,因为这个是给用户的第一感觉。功能是软件的第一要素,如果软件连客户的功能都没有实现,就别提别的了,当功能实现以后,就要让用户用着舒服,看着舒服,界面一致。软件的界面和写文档一样,有没有用心一看就有结果了。
程序编码——是反思一下编程技巧的时候了?编码,以前变了很多,C/C++,Delphi,VB,ASP,PHP,JAVA等等,都编过,但那种编码缺少一种艺术性,当然也缺乏规范,那是为了完成任务而写的。但这次不同,这次是做为公司的产品,是代表我公司的形象的,是该反思一下编码的问题了,不能让客户一看我的代码,就觉得我象个业余的似的。以前使用ASP,关键代码和界面一起,显得非常的混乱,即使最后发觉了,也懒得去改了,一个软件到最后,自己都不想看自己的代码了,这种情况在这一次绝对不能出现。我要实现数据和界面的分离,要实现统一的错误机制,实现单一登录,实现灵活而严谨的权限管理等等。
软件测试——程序员加入了单元测试了吗?是不是应该写出完整的测试用例和测试文档?测试,这是以前根本不当回事的,但这次一定不但要加入这个环节,而且还要建立一套测试流程,不能给客户的软件,出现一些注释,出现一下不该有的错误。我对每个模块建立了详细的测试用例,写了测试跟踪表,写了测试报告,并且我和另外一个开发人员互相测试,也理解了“不能让自己看自己代码”,当然这次测试都是手工进行的,以后要加入自动化测试。
软件周期管理——能控制住软件的进度吗?这是做为管理者,做为经理应该具备的,要能保证控制住软件开放的进度和周期。这次我也充当了管理的角色,这也是第一次。
软件交付——软件能让自己满意吗?
思考:流程、管理对于一个公司是非常重要的,拿软件产品来说,流程和管理的规范应能使得软件的交付更加及时,但是对于刚起步的小公司来说,是一上来就规范呢?还是先按作坊式发展?
(由于时间太紧,细节没有列出,将来补上)
2006年3月4日
下一篇:我的创业日记2(公司愿景)——我们的目标