您的位置:首页 > 其它

往事不堪回首--记公司软件项目开发过程

2009-08-29 00:46 369 查看
-- 怀念一起奋斗的同事,仅以此文表达我的心意

我负责公司的一个软件产品开发、实施工作。该产品已经做了好多年,好多版了,也经历了好多个开发人员,一路走来来很辛苦,只有我还在坚持着。。。近期,由于项目不太顺利,触发了让我想写一点东西,就当是记录总结一下这个过程。

就从开始说起吧,07年3月,当时公司开发的产品在经历一年的开发后,在用户单位又进行了半年多的完善开发和实施。项目核心开发人员(也是负责人了)由于对产品失去信心,辞职了。

项目从一开始其实就他一个人全包了,需要调查、设计开发,我仅是在进现场后参与了实施工作,对业务有所了解,而且对使用的开发平台也不熟悉,之前我还对这个平台也有抵触心理,这是一个第三方的开发平台,不是太成熟。由于这个背景及当时公司的人员安排情况,我被调配了负责接手该项目,负责后期维护实施工作。

7月份,公司签下了该产品的另一单,我和另一个同事一起接任该项目,使用之前的产品实施。过程很辛苦,由于对开发平台不熟悉,加之平台自身的缺陷,一个不大的项目,边开发边实施,硬是干了三个多月才基本完成。之后这位同事也辞职了。我一人顶着收尾。

期间,公司考虑了目前使用第三方开发平台的不稳定性及成本的问题,加之目前也无人熟悉此平台,决定重新选型开发。移植到通用的开发平台上。最后选择了.net做为开发平台。我也就开发学习了些相关知识,边维护着老系统。

决定选择.net平台后,公司新招了四位新同事,做为新产品开发团队。一位有一年多工作经验,其它三位均为应届毕业生,其中还有一位来的时间就已确定了四个月后要读研。他们四位都未学过.net。仅是计算机专业的而已。

新队伍到位事,我还在继续着老系统的收尾工作。未参与新同事的前期学习和工作,这期间由公司负责人带队学习.net,并从网上下载、学习了一个面向对象的开发模式案例,并确定了以此为新产品的开发模式。当时有同事反对此模式,但由于大家都是新手,也不确定是否可行,最终还是采用了些模式。

在这两个月左右的时间,公司负责人带队开发了一个支持分布式应用的程序框架。包括服务端和客户端及一些权限管理、人员管理等系统性功能。以此为基础,只要再开发业务功能挂进来即可。这段时间由于我还在现场维护旧系统,加之前两位同事的离去,心情也比较灰色,所以没参与新产品前期开发讨论,其实也没心思参加。

在我完成现场实施后,新团队也完成了基础框架的开发,我也回到公司一起工作。由于目前只有我一人熟悉业务,很自然的我就成了新产品开发的负责人,负责设计、规划。同时带领新人通过使用旧系统熟悉业务。

可以看出,我的事情很多很杂,加之新人的工作任务还在等我的设计完成后分配,所以设计很仓促。设计了表结构、编写了不太详细的功能要求说明书后,就分块各自负责的独立开发了,对开发标准、进度、质量基本都未管理。只是在有问题时讨论一下。因为我也负责了其中一个重要部份的开发,也未有精力进行管理。虽然我好象是开发负责人,虽然没明确指定。

历时三个多月的开发,基本完成,由我测试、提出修改要求和BUG,开发人员修改完善,这样持续到08年5月,产品才算基本可用。同时与某用户谈好了免费提供给他们软件使用,以验证软件,并完善它。

由我带队和另外两位主要模块开发人员一起到现场,当时第一次新来的四位同事中,一位已经读研去了,另一位也因种种原因辞职。带两位到再场实施,出于几点考虑,一是东西是他们做的,行不行到现场用了就知道,有问题也好改。二是到现场有助于他们熟悉业务,更深刻体会业务,后来确实也达到了这个效果,一位开发人员在实施完后,才语重心长的说,直到现在我才知道我开发的软件是做什么用的(当时我真的汗了一下,问题还是严重的)。

试用的用户单位并不大,在另一个县城,座车两个小时就到了,原计划十天搞定。所以出差时没做太多准备,很多生活用品都没带,有位边换洗衣服都没带,拖鞋什么的也没带...后来是吃亏了。

现场工作启动后,逐一推进,慢慢发现进度严重落后。虽然我们已经很努力,周未不休息,晚饭后也是接着干到十二点,还是赶不上。由于在公司开发时有些需求考虑不周,及软件本身还有些BUG,加大了现场开发。。。

当时的情况可以说很狼狈,想着赶进度就连续连续加班,十多天都没先过澡,换过衣服,有种背井离乡的凄凉感觉,当时我都在想,不知道用户有没什么反映,呵呵,这些家伙是搞软件高科技还是建筑工人啊。后来觉得这样下去不是办法,也想放松一下,就出去洗了个澡,然后好好吃喝了一顿,晚上回办公室后,也不想干活了,各自在电脑前玩了起来。

在经历了整整二十一天可谓磨难艰辛后,算是完成了项目,虽然还有些问题,但已基本能支撑业务运行,用户也认可验收,终于可以回家了,离开那天可以用仓皇而逃来形容,都不敢打电话给用户,怕用户又说有问题。可不巧才走出门就遇上了用户负责人,吓了一跳,不过有惊无险,他是来送我们的,真是感谢他。

在项目结束那天,身心在经历各种压力后,我们三人都已经到了谁也不想和谁说一句话了,漫无目的的走在街上。压力可想而知。

------------------------

回公司后,对实施及试用进行了总结,确认了几个软件设计上的缺陷,这些缺陷基本都是由于使用了太多新技术和开发人员对技术不熟悉造成。之后进行了为期一个多月的调整、完善开发。之后再次去给用户做了升级。

之后由于公司未签其它新单。但产品还需要继续验证试用,正好之前使用旧系统的用户提出旧系统运行速度已非常慢。所以决定由我带队使用新开发的版本进行升级,这次重新带了一位新招的同事一起去实施,上次实施的两位同事在公司继续开发。

本以为升级会很顺利,但还是要于设计不到位,在业务量较大的时间,速度非常慢,甚至比旧系统还慢。而且由于新系统在界面风格、操作习惯都有较大改变,用户不适应,对升级非常不满意。开发人员进行论证后,认为前期采用的面向对象的开发模式,至使用了现在效率低的问题,而且无法优化,只能换技术线路重新开发。这真是一个沉重的打击。但为了发展,只有再痛下决心,重新开发核心模块了。

历经很长时间的重构,后又接着在用户处试用完善,来回修改,有时都影响了用户的业务运行,实施过程很艰辛,经常加班到七八点,和我一起的同事也很认真,很主动的做事。后来的工作也证明了他是位极积、主动、负责任的员工。

接下来,公司成功签下了一个大单,规模比以前的都大了许多。而且该项目的意义对公司在市场站稳脚跟有着关键意义。用户是家具有较大影响力的单位,示范效应会很大。公司上下基本都围绕该项目进行了准备。

确定了由我带队负责现场实施。一名核心业务开发人员在公司开发,支持核心业务模块的完善和开发,另有三名开发人员分另负责不同模块的开发完善工作。

项目很快就启动了,在完成了服务器配置、安装调试后。先由用户维护了基础数据。便正式分另从不同的部门进行了推进实施。在不同部门实施过程中都遇到了各种新需求,或者是便利性的改进,我们本着为用户提供最优服务和充分满足用户需求,让软件更适合业务需要的原则,基本上用户提的需求都接受并修改了。这增加了很大的工作量。

核心业务的开发人员压力是最大的,一方面是应对新需求,另一方面的要维护程序的稳定运行,时常需要完善。由于系统是实时业务系统,出了问题就影响业务运行,所以对时间要求也非常紧张。

因为系统刚上线,一方面是不稳定,另一方面是用户不熟悉,实施工作也很辛苦。用户人数较多,且轮换上岗,很多东西都要重复教很多次。最夸张的是他们还有夜班,经常夜里十二点、两三点都还打电话来(其实说起来也是系统不稳定造成了,用户也不希望打这个电话)。有时周未出问题,也是亲自跑到现场处理。而这些加班工作,公司未做任何表示,我们也未主动要求。都是本站对用户负责的责任心驱使用着去做的。

项目在推进到一个较大的部门时,出问题了。因为设计期初未考虑某种特殊的并发应用,而这种应用正好发在了。所以引发了效率低、常发生用户数据弄错的情况,用户意见很大。

几经折腾后核心业务的开发人员终于承受不了压力,多次申请辞职后,离开了团队。他的离开对项目造成了巨大影响。一方面是接手的人对他的代码不熟悉,另一方面是之前的代码本来就存在很大的缺陷。当时根据人员的熟练程度,调配了一句本单独负责着一块模块的人接手了核心业务开发。而他负责的模块交给了另一名开发人员。后来证明,这次的调配负出了惨重的代价,因为这造成了两个人都要接手新东西,都要熟悉的过程。而且责任划分也就不明确了。

接手核心业务的开发人员在经过一段时间的维护后,也觉得无法再维护下去了。做开发这个行当,看另人写的代码本来就是件头痛的事,加之他的观点认为现在的修修补补,随时还要应付一些新需求,很烦琐。提出了部份重新开发,以解决并发的问题,最后公司也同意了,他便专心做了近一个月的开发。这个时段现场版本的维护由我硬着头皮接了下来,也做了些新特性开发。

完成重构后,他到现场我们进行了详细的测试,花费了不少时间,来回进行了几轮测试->修改->再测->再改。确认基本可靠后,便更换了用户使用的版本。

软件这东西就是这样。总有想不到的问题存在,更换新版本后,依然发现了不少错误,而且有些错误难以重现。而当时我们现场实施的两个人,又要测试,又要实施,还要来研究重现错误,事情很杂。所以我希望开发人员能变换角色,跑跑现场,了解用户使用情况,测试重现错误,并解决它。对一些新需求,也是自己主要分析设计。对此,他很抵触,认为自己只是做开发的,你实施人员说有错,那你重现给我看了,我就改。否则我认为没问题,我就玩我的。

对他的态度,我认为人应该全面发展,什么事都做一下,增加些经验,而且加强主动性,这样对个人发展也很有益。但他还是固执认为我就是不愿意处理那些琐事,我只想做有挑战的难事。所以我们之间产生了矛盾,我觉得是价值观和理念不同。他也觉得难受,并在此过程两次向公司提示工作不顺心,要辞职。公司出于项目进度的考虑,规劝他留了下来。我们也进行了交流,表达了我希望他能考虑项目的特殊背景,做些改改变和妥协。

但他的态度还是没改变,我给他的定论是骄傲、做事不主动、纪律不严谨,沟通协作困难。在一次我和他说新任务时,他又很暴躁的说,我不干,你重新找人干好了,要这样么我辞职算了。当是我也是忍他好长时间了,之前一真考虑项目紧,他走了影响大,一直想各种办法挽留他,让他稳心工作,但徒劳无功,今天他再这样一说,我火一下就上来了。我回答了一句“我同意”。

我是想好了,宁为玉碎,不为瓦全。没有你还转不下去了么?大不了我们接手的人辛苦一阵子。就这样,他也离开了。 产品核心业务开发人员再次换人。

他的离开,我想了很多,曾经我们也一起努力过,怀念那些日子。现在的状况我觉得他和公司都是有较大损失。对他而言,在这个行业做了两年多,有了些积累,现在都丢了。而且要重新找工作,也是够心烦的。对公司而言,要培养新人接收,项目进度又受影响。损失也不小。

工作中,总有不顺心的事,我觉得应该平和处理,多一些包容、理解和妥协。冲动是魔鬼。很多东西拥有时不觉得,失支了才知道痛。

他的离去,只能用道不同,不想为谋来形容了。理念不同导致无法很好的配合团队工作。我的理念是,我希望团队的成员都能有一个相同的理想,并愿意为把这个件事做好而努力。具备主动、负责任的极积心态。

生活还在继续,项目也在继续...祝愿他能有个好的前途,通过这事也有所反思。也祝愿我们的力队能齐心协力,把项目做好,把自己的人生做好....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: