在新公司工作满一年

时间过得飞快,去年的8月1日是我在NT(代替公司名)第一天正式上班的日子,记得当时进入战略架构部的时候,也是我有史以来看到人员变动最厉害的一次,仅仅两个月的时间,我们部门就有5位同事(其中一位还是项目经理)离职,当时我刚来还不到一个月,客户端、企业服务端的开发人员就只剩下一个,而我又是一个新手,当时可谓是面临巨大的困难和挑战,因为我一下子要承担客户端的维护和少量代码编写工作,当时如果说一个人干三个人的活一点也不假,特别是到了第三个月的时候,还需要配合测试工作等。后来终于有了一位新的程序员过来负责客户端的工作,因此我压力一下少了很多,但是后来的任务却更加的令人头痛。


在客户端脱手之后,我被分配去开发客户端、企业服务端的安装程序,当时关于安装程序的设计文档只有2,3页纸,由于2,3页的设计文档根本不可能把一个安装程序需要完成的业务流程以及业务内容的1/10描述清楚,也因此,注定了我要为此付出惨痛的代价以及背负巨大的罪名。


由于设计文档只有一个十分粗略的流程图,因此我实际上只能自己决定软件的设计,这也算是我工作以来第一次自己独立完成一个软件从需求、系统分析、设计、编码、测试的一个完整流程,虽然在校的时候,我就已经可以独立开发软件,但是在工作中承担这样的任务还是感觉很新鲜。


最初还是十分彷徨,因为我在选择设计上遇到了大的问题。在我思考安装程序应当如何设计的时候,仔细分析了安装程序的特点,考虑到将来的可维护性、可扩展性,我必须采用一种设计保持每个页面之间的松耦合性,另外还必须减少主控制部分代码的复杂性。


最后非常幸运的是C语言里面的双向链表结构启发了我,最后我决定采用这样的设计,因为把每个页面都当成一个链表的节点,那么页面之间就不存在耦合,这会很大程序降低整个软件的复杂性,因为将来如果需要增加、删除一个页面,那么只需要类似C的双向链表操作一样,修改前后节点的指针地址就可以完成这个过程,十分的有趣,而后来一序列需求变更充分验证了这个设计的合理性。


我记得当时在选择这个设计的时候,为了论证可行性,我花了大约三、四天的时间。


花那么多时间的主要原因是:

首先对C#的WinForm编程只是到公司之后才开始接触,也不过1,2个月的时间,并且当时几乎没有得到过任何指导,其次我对C#的Framework也并不是十分了解,因此在编写类似的设计示例的时候,碰到了很多问题,但是感谢上帝,我最后还是成功了,然而同时恶运也来临了,记得那天是星期五,我的主管告诉我,我必须在下周三完成这个安装程序。

三天的时间去编写一个软件?并且还要提交使用?当时觉得我们的主管是不是疯了,因为即使我能完成,这样的软件也几乎无法使用,就算以我现在的水平,也不能在那样的时间里面去完成一个运行稳定的软件,何况当时的水平。


不过任务就是任务,最后还是在第三天把这个软件的测试版拿了出来,当有个部门的主管过来问我是否可以提供安装程序给他们的时候,我告诉她,如果现在拿过去使,可能会有未知的严重后果,希望给多一天的测试时间,就这样,我争取到了一天的调试时间。


最后怎么被拿去使用的我已经记不清楚,惟一记住的就是在提交测试之后,一次有个市场人员过来试用,在开始试用安装程序的时候就感觉心理害怕(我想,在我以前的安装程序(InstallShield制作的)也许也是臭名昭著),每一步操作都小心翼翼,结果如预料中的,中途就出现问题,当时对我来说,看到这样的场景对一名技术人员来说是一种耻辱,而想到当时确实已经尽力了,心里面还算有点安慰。


后来安装程序一步步的进行改进,中间也有过很大的变动,不过由于链表式的结构设计以及将表现层和业务逻辑层分开,每次改动都很容易就可以实现,甚至将某个页面抛弃的时候,我只要修改一处地方,几行代码就可以实现的时候,那种感觉就是一种享受。


由于安装程序一开始就需求不清,甚至应该读、修改压缩包中的配置文件、每个配置文件内容中每项的含义都不是很清楚,另外配置文件在安装前、后的处理也没有说明,因此安装程序有超过半数的BUG是由于这些问题引起,即使到后来安装程序很稳定之后,配置文件问题还是非常的烦人,最后我索性提出独立设置一些配置文件来完成安装过程需要提供给系统的信息。


总之安装程序由于一开始就根本没有太多文档,而当时另外一个程序员又忙于修改企业服务端的BUG,并没有太多时间向我解析其中的很多细节,因此在处理上有很多忽略的地方,所以造成安装程序BUG很多,在发放到市场人员那边的时候,骂声一片。


可以说,在NT的这一年中,我有半年左右的时间是耗在安装程序上,并且为了解决安装程序的问题,我还编写了大量的工具,其中包括MSDE卸载工具、安装环境检测工具、企业端服务卸载工具、安装过程错误日志及相关文件的收集工具、MSDE/SQL Server数据库远程/本机备份工具……几乎有10多个工具专门用于应付安装程序的各类问题。


我想现在最有用的就属安装环境检测工具,只要是.NET的应用程序需要部署,在没有经过我的安装程序检测工具检测合格的情况下,部署上去就肯定有问题。


后来该项目落马,接着整个项目组的人大约被闲置了一个多月,后来才上马一个新的项目,在是否选择参加这个项目的时候非常犹豫,因为当时对这个项目的情况已经分析得比较清楚,但是由于心中的某些追求,最后决定跳入这个火坑。


在封闭一周多一些的时间,我就对眼前的情景感到彻底失望,借用《孙子兵法》的这几条:“主孰有道?将孰有能?天地孰得?法令孰行?兵众孰强?士卒孰练?赏罚孰明?”来衡量当时的情况,几乎没有一条符合。

从个人观点来总结整个封闭开发过程,也可以引用《孙子兵法》里面的内容说明:”君之所以患于军者三:不知军之不可以进而谓之进,不知军之不可以退而谓之退,是谓縻军;不知三军之事而同三军之政,则军士惑矣;不知三军之权而同三军之任,则军士疑矣。三军既惑且疑,则诸侯之难至矣。是谓乱军引胜。“


封闭开发中另外一件让人痛苦的事情就是在选择是否离开新项目开发小组,当时的项目经理作了一个让我觉得非常不厚道的行为,即让大家在一块决定谁要离开,这明显是拿气势压人,不过我当时不知道哪来的魄力,在选择留下的人举手的情况下,我当着所有人的面不举手,我想当时很多人也许也想离开,但是没有人拿出足够的勇气,因而当时可谓面对着很大的心理压力,但是我当时仍然相信自己的决定是正确的!


再后来我们项目经理作了一些不太让人认同的事情,因为他向上层主管传递了一些关于我的错误的信息。


在加入现在项目之后,感觉最开心的就是挨了领导的一顿批评,认识到了很多问题,开始从新项目封闭开发中的挫折走了出来。

最后总结这一年中最值得高兴和最让人失望的事情:
最高兴:这一年的发展基本上按照个人的规划在走,总体没有大的偏差。
最失望:没有能够从公司这一方获得对于我这一年的工作情况的评价,无论是书面的、薪金变化等方面。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值