`
bobotc
  • 浏览: 18981 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在老东家的那些事

 
阅读更多

       在公司待了近2年的时间,做了几个项目,做失败了几个项目,现在是时候做一个小小的总结。老板技术出身,自己出来创业,公司规模10人左右,主要做外包项目,由销售人员去接单,老板亲自去做需求分析,产出一个“系统需求”文档,然后把需求文档交给我(所谓的技术总监),我看着文档开始系统的设计。公司技术方向Java,我来之前公司基本上都是基于SSH的架构做项目,所以我自然遵循这个架构。刚刚开始做系统设计的时候自己恶补了一下UML,也尝试过使用PowerDesinger,EA做过一些类图、流程图等,后来发现做出来没人看,老板不看,开发人员更不关心(每个项目配备的开发人员就几人,而且有些是项目后期加入),再后来我就直接以代码的形式去做设计了,采用OOA/OOD的思想把系统的每个模块的实体(Entity)建立,随着自己对需求的全面深入了解,实体会不断完善起来,这样在系统开发之前基本上能有一个稳定的领域模型提供开发人员使用。除了设计以外,我还会做一些技术难点攻克,比如系统需要调用外部短信接口发送短信等,其实就是公司之前从来没有涉及到过的技术领域。

        当设计完成,技术难点被排除,这个时候老板开始让我带队开发了,说到带队很惭愧,到目前为止本人也就是带过3-5人的队伍。一开始我们没有制定过开发计划,没有计划大家可想而知,一片混战。我接手的项目大部分都是web项目,老板会先让美工按照那份“系统需求”中的"原型图"设计出效果图,效果图和客户确认过,那基本上就是让美工做静态页面了(html)。当然与我共事的美工们都很牛,设计加静态页面一个人搞定。就这样我们从“原型图”到了静态页面,我从美工那里拿到一个压缩包,里面的结构如下:
/images/
/css/
xxx.html
就这样我把这些静态资源加入到web工程中,开发人员采用eclipse开发,SVN做代码管理。后面遇到的问题就是美工的工作无法纳入到SVN中来,需要修改一个页面,我都要和美工沟通,然后得知如何修改。后来老板发现这个问题,让美工也用eclipse做开发,这样就解决了版本控制问题。
        回到上面,我将开发任务分解到开发人员手上,开发人员拿着自己分到的index.html,login.html,register.html....开始开发了,没有需求,每个人脑子里就看着页面来吧,1个,2个,3个。。。一拍脑袋的说这里有哪些哪些功能要做,Action编写,Service编写,Dao编写,js编写,同事们基本都是从后端写到前端,我们没有定义过什么接口,有些同事有意识,会找我沟通一些接口定义,如何定义,是否已经存在接口可以调用。这是遇到喜欢的沟通的同事,有些同事则不善于沟通,不主动暴露问题,后面遇到的问题就大了,到处散落着冗余代码。
       项目要交付了,老板天天盯着开发进度,每天找我要开发进度。没错,我是最了解项目目前的情况,哪些功能还没有实现,哪些模块还没有联调;说实话我心里也没个底,客户逼着老板,老板逼着我,我其实就一光杆司令,于是乎一拍脑袋的报给老板一个天数。就这样我是承诺给了老板,下面就是加班吧,今天不是这个同事被调去做另外的项目(我们总是几个项目一起走,虽然我们就10个人),就是那个同事被叫去维护上一个项目(改bug,需求变更),所有的压力在我身上,苦不堪言,就这样我们做了几个项目。
       公司没有测试人员,老板拉着销售人员做测试,销售人员就是这里点点,那里点点,业务浑然不知,就是哪里点出问题了然后记录下来,就这样我们完成了项目测试,项目终于要"上线了",老板在某网租了台windows2000的服务器(独立主机2G内存),跑着1个mysql,1个apache,5个tomcat,由于我们的项目费用里包含了服务器费用,所以基本上公司接的项目都部署在上面,我把apache做虚拟机配置,后面tomcat跑应用,这台机子基本上每天内存都被挤爆,mysql也经常挂掉。
       不管怎样项目可以让客户看到了,也就是走到交付这个流程,客户那边测试了,每天交给我们一个测试文档,上面是密密麻麻的问题,有的是bug,有的是体验问题,有的则是最恐怖的,说这个功能不是他要的,他要的是那样的。疯了,于是开始了新一轮的工作,改代码。不改客户不给钱,老板没钱,我们就更没钱,开始新一轮的加班。由于都是外包项目,啥样的客户都有,也都是些小公司,项目本身预算就不高,更可怕的是有些客户没有一个很强烈的愿望想把这个系统做出来,也不愿意投入那么钱,总是挑三拣四的,最后一拍脑袋说这个做出来的系统不是他想要的,后面就可想而知了。需求内容不明确,没有加以严格的确认,客户最后就是不给你钱,你改吧,有的客户给你时间,有的则直接终止合同,很不幸的在我接手过的项目里面就遇到过这样的情景,那个项目做的真是让人心痛,记得那年过年放假前一天我们还加班到晚上11点,其中的苦衷我想只有经历过的人才懂吧。 
       失败不怕,问题是要学会总结,新的一年又开始了,老板依然信心百倍,发现了我们在项目管理方面的一些问题。之前做原型图是基本上就是拿个execl画画,现在他开始使用RP了(Axure RP Pro),他基本上是去客户那里做需求分析,然后把需求转化成原型图,但我们没有做过原型图的评审,原型图基本是客户那边定了,我们就定了。当需求“全部”转化成原型图的时候,老板要和客户发一封确认邮件,客户确认了以后,这个原型设计就定稿了,不会修改,除非是一些设计十分不合理的地方影响到系统的实现,这个时候跟客户发一封需求变更邮件,要求客户确认,按照这个方式客户开始重视起来需求的确认,验收的时候就是按照这个原型图验收(客户并不知道这个原型图所表达的全部东西是什么,如有哪些是非功能性需求)。
        和之前做项目一样,需求确认完毕,又开始了系统设计,总结之前的教训,我现在不仅仅要提供一个稳定的模型,还要定义每个业务的接口,我发现在我定义接口的过程中,不得不深入的了解需求,结合原型图,定义了一堆接口,把整个项目的模块划分,每个url都定义好,甚至是前端的每个页面我都建立好提供给前端工程师使用。这样整个项目的接口定义,类的命名,页面命名,在还没开发之前就基本搞定了,如果后面有新页面加入也需要我来完成。
        我们开始制定开发计划了,老板给我一个派单表,上面大概就是这样的格式:
功能组       编号    页面     完成进度 责任人 记录时间
权限体系         1    后台-登录 100% xxxx ########

按照原型图到页面,每一个页面划分成一个任务,计划只需要做到每个页面需要的工时。在做的过程中我们发现站在客户的角度上就是看到了一个可以用的界面,但实际上这个界面所提供的功能后面具体实现很复杂,比如需要调用其他模块服务,我之前提到过,我已经把系统的接口都定义完毕,不会存在等待其他模块服务完成才能写自己的那块,大可放心的调用使用那个接口,至于有没有实现,不必关心。我们没有测试人员,于是我开始尝试做“开发测试”,针对自己的写的每个服务做单元测试,发现必要的单元测试很重要,一定程度上保证了代码的质量。但是后来老板不高兴了,说这个浪费时间,就这样我们走的还算顺利。殊不知,之前的的问题又来了,张三被拉去做那个项目,李四被拉出去维护上个项目,我不知道大家玩过"知乎"这个应用吗,如果给你是老板,你认为应该配备多少人手?不瞒大家,目前项目就2个人开发(包括我)。项目本来就出于客户的压力在工数估算上予以妥协,怎么办?加人手哇!这么简单道理老板能不懂吗?悲剧的是如何加呢,今天不是张三离职,明天就是李四离职,有点经验的人都选择跳跳槽涨涨干粮了。

       最后我选择了离开公司,要感谢这近2年的工作,让我看到了一个创业公司的艰难,更深知项目管理的重要性。也许今天的离别是为了明天更好的相聚!再见那些曾经一起奋战的兄弟们,祝你们美梦成真!只要我们脚踏实地,相信明天的软件行业会更加美好!

 

分享到:
评论
1 楼 judasn 2012-06-25  
这是真的小公司的开始....现在也在一个小公司,知道其中的不易.只是我现在公司相对好点点...共鸣

相关推荐

Global site tag (gtag.js) - Google Analytics