大四找工作的时候,本来谈好去北京一家做外包的公司,总工是天大的师兄。后来中科红旗来学校招聘,负责招聘的恰好也是天大的师兄,和实验室的老师相熟,我被推荐了去,因为是做linux方面的开发,而我本身对linux又很感兴趣,所以就定下来去红旗了。当时红旗还没有正式挂牌成立,没有人事权,是中科院与NEC的合资公司恩益禧给我们办理的进京指标。我们是红旗招聘的第一批员工,本人还是公司的第25号员工呢…
00年的6月底,我们几个同学租了一辆大面包车,从学校把计算机、书、行李直接拉到了北京,在巴沟一处平房的集体宿舍中安顿下来。我和一个同学被分配到了嵌入式产品部,我的第一份任务是,分析和优化MicroWindows/Nano-X,以及fltk在Nano-X上的porting。算是对嵌入式GUI系统有了些了解,写了份很详尽的文档,以及一些试验性的代码。后来因为可移植性的考虑,部门逐渐将重心转移到了X11平台,我的任务是修改一个基于fltk的窗口管理器,并为其加入桌面背景/快捷图标、程序菜单等功能。因为窗口管理器很多时候需要和X11的API打交道,而且还要将这些API和fltk本身的事件机制(event loop)结合起来,从中学习了不少。我用了两周,基本完成了主体功能。因为对X11 API使用的比较熟练,等第二年的新员工入职时,还是由我来培训X11编程呢。
我的部门经理觉得我比较好学肯干,在我入职半年的时候,开始让我带一个小的团队(大概4、5个人)负责应用程序的开发;半年间也给我涨了两次工资,从3300涨到了4200左右(具体数字我记不清了)。虽然那个时候,写网站的实习生都可以开出7/8000的价码。刚开始带团队时,我对项目管理一窍不通,最开始我都是自己绞尽脑汁的想,该如何划分任务,按自己的经验来估计每个成员的effort。后来的体会是,项目管理应该是一个,在符合整体利益的前提下、自底向上的过程,应该充分考虑个人的偏好和工作量估计,发挥个人的主观能动性。自己后来也买了许多软件项目管理的书,学习揣摩。
公司刚开始是准备到纳斯达克上市圈钱的,总体的氛围不是很扎实。后来因为有国有资本成份,无法将公司的全部资本转移到某个国外的小岛上借壳上市而搁置。再后来,又赶上2000年底网络经济泡沫的破灭,赴美上市是再无可能了。嵌入式部门前期投入的一些项目,也都因为自身技术积累的欠缺,以及其他的种种原因,遇到了很大的困难,基本都以失败而告终了。后来公司从蓝点请来了MiniGUI的创始人魏永明,执掌嵌入式部门,跟随他也来了几位经验丰富的工程师。那个时期,我也被借调到公司的软件工程过程组(SEPG,因为公司想过CMM2,去揽一些政府或国外的项目),所以暂时也离开了开发一线。
我原本对项目管理只有一个很粗浅的认识,通过在SEPG组的工作、学习,慢慢对项目管理有了一个比较系统的认识。我当时负责的是SPP(软件项目计划)这个KPA,写了很多的文档和模版,可惜后来CMM2的认证计划也不了了之了。其间也粗浅的接触了一些XP,RUP等观念。
从SEPG回到开发团队后,调研了一段时间的组件模型(COM/XPCOM/KParts)。又去调研了一段时间的J2ME/KVM,准备将KVM移植到Qt/Embedded上。这些浅浅的调研,都因为没有项目上的需求,就停掉了。也有一段时间,去帮助浏览器组,改善他们基于Mozilla(最初开源版本)的fltk前端。再后来,老板让我组建了一个小组,和另外两个同事调研Konquer/Embedded,准备将其移植到MiniGUI平台上,后来也无疾而终,只留下了几篇分析的文档,在公司的允许下开放了出来,美其名曰不仅要开放代码,更要开放思想。其中《Konqueror-Embedded 之结构分析》是我的拙作,现在还可以通过google检索到。
浏览器组解散之后,我参与到一个电子书的项目,是基于Intel的xscale处理器的。现在看起来有点MID的意思。我重新回归到了团队的普通一员,负责QT/Embedded的本地化和优化,以及部分小应用程序的开发。随着嵌入式部门生存环境的逐步恶化,人员的流失也越来越严重,人员的士气都很低落。随着电子书项目的草草结束,我慢慢陷入一种无事可做的境地,每天在公司里晃。我对自己和部门都很失望,有点想换换环境。桌面部门的老板本来希望我内部transfer,我那时天真的觉得会折自己老板的面子,所以就最终决定离开了。
我当时也是犹豫了很久,毕竟那是毕业之后的第一份工作,其中浸透了自己的很多努力(虽然基本上我接触的所有项目都失败了),对公司有很深的感情。那时候生活简单,女朋友也不在身边,经常晚上10点多才和一起租房子的同事从公司离开;有时会甚至连续一两个月住在公司里,看书查资料。一开始只是铺张床单睡在地毯上,或者睡在会议桌上,可能我的过敏性鼻炎就是那时候落下的。后来,我买了张行军床放在桌子下面,晚上睡觉时舒服多了。公司里的卫生间还有淋浴,HR一度想给我们买一台洗衣机。那些年也因此看了不少书,特别是C++类的,effective/exceptional系列,设计模式,COM,STL等等;还有linux kernel,我买了当时市面上几乎所有的kernel分析书籍,也读了些代码、做过些调试(主要基于UML,user-mode-linux)。因而对操作系统的各个子系统有一个粗浅的认识,不过一直没有机会从事kernel的开发,虽然曾经短时间的维护过一个单工串口驱动。
我发现程序员都有受虐的倾向,喜欢复杂的东西,并乐于将其拆解清楚,呵呵…
总之,在03年的非典时期,我离开了红旗公司,去了西门子中国的手机软件开发部门。而5个月后,在试用期内,我又离开了西门子,有幸加入了Sun中国工程研究院。其中一个原因是,我那时准备和老婆结婚,买了清河附近的房子,做班车去望京实在是太不便了;更重要的原因是,Sun一直是我最向往的技术型公司(没有之一),虽然03年的时候,已经风光不在了。不夸张的说,Sun公司改变了我的职业轨迹,让我真正成长为一个专业程序员;而在Sun公司工作的6年,是我从业以来最快乐的时光...
待续 ...
前辈啊,每个奋斗的人回顾自己走过的路,估计都能把自己给感动了
我到是想前辈写写x11的文章,这方面中文的资料实在太少了。
要是有出版社愿意引进的OReilly的Xlib Programming Manual,我倒真的很想去翻译一下 ...
@kfihihc,@cloudzhou,前辈可不敢当 ...
持续关注中⋯⋯
牛人都有共同的特点,那就是对自己的产品,不是喜欢,不是欣赏,也不是认同,而是着迷。
另外,你大二的恋爱确实是场胜利啊,我都要拖到大四了,感到挺悲剧的。
持续关注。
@Brooklyn,牛人可不敢当,我只是千千万万普通程序员的一员 ... 关于恋爱,坚持到底就是胜利!:)
老孙啊,这么年轻就学别人写回忆录了?哈哈,我觉得你的轨迹太单调了,应该更加跌宕起伏,峰回路转!
@Xue,是从业十年的总结而已,哪里敢称是回忆录啊,呵呵,我的轨迹的确相当单调,和本人缺乏魄力有关,呵呵
你接触的项目技术繁杂,可以以此为主线,写出来的东西就可以包罗万象,能出书了。
是很繁杂,但是都不深入,不敢妄语啊,呵呵 ...
稍微调查深入一下,可以写本大全,我看好你。我又拿你的留言聊天了。罪过!
前辈的经历真是丰富,关注下文...
很奇怪,现在的提交按钮可以选择图案,是咋个弄的?