我的软件开发之路(二)

来源:互联网 发布:谷歌语音搜索软件 编辑:程序博客网 时间:2024/05/01 08:01

在我研究生提前毕业之后, 只有一个想法,就是快点把工作定下来了,女朋友就可以一心一意来我工作的城市找工作了.所以当时也没怎么认真找, 傻乎乎的就去了一家上海的外包软件公司. 虽然是家外包公司,但公司有很好的培训. 从进公司开始进行为期三个月的培训.培训的内容还是蛮广的, 从基本的C++, STL, COM/ATL, 还有英语和其它编程之外的东西. 

因为我是提前毕业,提前工作的, 所以当时跟我一起来工作的,只有10个人,大部分都还没毕业. 而我在培训两个月之后,就因为项目需要,直接加入项目组开始干活了.有的人还在继续培训, 直到公司的形势突然发生变化, 开始陆陆续续的裁掉一些人, 很不幸有两个兄弟就在试用期满还差两天的时候被公司裁掉了! 而我所在的部门是当时公司的核心部门,所以从来没有担心过被裁掉的问题. 每天按部就班的干活. 

虽然在学校的时候已经有一些编程经验,还在公司接受了两个月的培训,但在刚开始做第一个项目的时候,还是发现自己很多地方都不懂, 从源代码管理软件的使用,到所开发软件的框架体系. 还有我的老大是那种知不无言,言无不尽的人, 我没事就过去问他, 自已也看一些开发文档, 两个月之后,我终于大概搞清楚了我们这个项目的框架设计,并且慢慢上手完成了自己的第一个任务. 接下来算是依葫芦画瓢, 完成了好几个类似的任务.  

那时候年少轻狂,心比天高, 总想干个年把就当个小组长领导一个小组. 有没有过这样的机会, 有! 在第一个项目做到快尾声的时候, 美国的老大要从我们组抽一个人去另一个跟我们相关的项目组去当组长. 我和另一个人是候选人, 但可能是因为我刚来公司不久,  还嫩了点. 终于选择了另一个比我早来公司几个月的兄弟去当了.  做完第一个项目, 我开始觉得我对软件框架很感兴趣, 在做项目的时候总是想从框架的角度是想解决方案. 


短短一年不到的时候,我的这个项目做了两个发布版本. 公司也在这个时候被收购了. 于是公司的人员,组织结构开始洗牌. 一部分人主动或者被动的离开公司, 一部分人主动或者被动的调离原来的项目组. 而我,选择了主动的加入另一个新的项目组,去做一个全新的项目. 这个决定对我后面的职业生涯影响很大. 因为老大换了, 做事情的风格跟原来的老大完全不一样.但有一点是幸运的,这个老大在技术上更牛B, 对于整个软件框架了解的更清楚, 而我也如愿以偿的选择了这个新项目的框架设计工作. 其实也谈不上设计, 是公司的一些人写了一个框架的原型,我基于这个原型写了后来这个新项目的框架. 原来那个原型的很多代码级的错误, 设计上也有一些不足, 而我结合我做的第一个项目所用的框架, 借鉴了一些东西到新做的这个项目上来. 后来发现,效果还是不错的. 第二个项目的技术老大真的是个非常牛B的人, C++, C#, 算法,COM, windows编程,以及解决问题的技术, 样样都比我比我强 - 当时确实也有一种较劲的心态, 毕竟刚工作,年少轻狂.  他对我影响最深的一点是,凡是遇到问题,解决问题,一定要找到问题的根本原因 - 很多软件开发者可能都知道一个功能如何实现出来,或者发现怎么修改一个代码就可以解决一个问题,但却从来没有想过这个功能实现背后的机制, 为什么修改以后的代码就可以修好一个问题.  几年以后的现在,在我面试别人的时候, 也喜欢问面试者一些原理性方面的东西, 发现对于刚工作一两年的人来说, 鲜有人在这方面下过很深的功夫. 


第二个项目很大, 四个国家,七个世界各地办公室的人一起工作, 居然用的是敏捷开发! 七个不同地方的人一起工作用敏捷开发, 其实是非常不合适的. 我们这个项目也算是公司第一个用敏捷开发的,所以流程上可能也跟真正的敏捷开发有所出入. 而结果就是兄弟们每天都敏捷的上班,迟纯的下班. 有差不多一年的时候,我每天早上八点到公司, 晚上八点离开公司, 每天离开公司的时候脑袋都是木的, 我头痛的毛病就是那个时候加班导致的. 整个项目过程中, 至少有一半的时候是在跟世界各地的不同组员讨论问题,每天邮件来邮件去, 会议无数. 不过那个时候英语比较烂. 电话会议的时候一很多时候听不懂对方说的英语,特别是捷克人的. 讨论问题什么的全靠老大罩着.  


这个项目给我的收获的,我有幸接手一个项目的客户端的框架, 基本上掌握了所有功能的布局和大概的实现, 当然,中间老大给我了不少帮助, 他也承担了这个框架中最难的,也是最重要的系统同步与更新的框架. 框架中其它部分我也没有参与到, 比如说多线程的任务设计, 服务器端与客户端的通讯, 操作的撤消与重做等等. 原因有二, 一是当时客户端的框架设计任务就是重, 在搭框架的初期,经常一改就要改一百多个文件, 再加上所有与框架相关的问题,都塞给我还修,所以我当时就是个万精油,哪里有问题修哪里; 二是当时的知识水平有限, COM基本上是半懂不懂, 多线程也没多少实际编程经验, COM的多线程就更不懂的,什么散集列集,以前没接触过. 不过在项目的后期,我还是花了很多时间去看了整个项目所有与框架相关的代码, 再加上后来公司让我参加了一个设计模式的培训, 让我在软件框架设计的认识提升到了一定的理论高度. 


这个项目差不多完成了之后, 公司收购了一个跟我们项目相关的产品,之后的差不多一年的时间,  做了一些与这两个产品相关的一些项目. 也看了一下新收购软件的一些代码和框设计, 总体来说,增长了一些软件设计方面的见识, 但项目纯体力活,感觉没太大意思.   于是在我工作了三个半,也就原公司被收购两年半以后,我决定离开这家公司了.


其实离开的想法至从我加入第二个项目组没多久就有了, 项目经理的人品太极品了, 加之他对我们这些被收购时来的员工有歧视, 我感觉受到了很多不公平的待遇. 可以说后面的两年多时间,大部分时间是在郁闷中度过的. 经常问自己是不是得离开了, 然后再问自已如果换份工作再遇到一个极品的上司怎么办! 这个问题想了两年多,也算是锻炼了自已性格上某些方面的能力吧. 在我离开公司前一个月, 我作为第二个项目的框架设计者, 加入到一个新的组, 做了一个把业务逻辑从本地放到云端的项目, 只用了这一个月, 这个产品就上线了. 而我在这个时候, 选择了离开!


因为公司被收购的时候, 新公司以文件的形式告知我们, 在原公司的工作经历与经验等同的新公司的工作经验.  也就是我说在原公司工作的一年,在以后找工作的时候,可以在简历上写这一年是在新公司工作的. 所以我也权当两者是一个公司吧.  我在这家公司总共呆了差不多三年半的时间, 可以说学到了很多,也成长了很多. 虽然三年多的时间里,大部分时间郁郁不得志, 但这些经历为我在下一个公司的工作打下了良好的基础.