从微软走向开源的5年
                                                                                              刘振飞 / 文
直至2000年初,我在北大计算所硕士毕业留职北大方正已经四年了。期间我一直编写C++代码,主要从事方正RIP相关的软件研发,正考虑换个工作。(详见《程序员》2005年第1、2、3期《Bug管理的经验和实践》)我同时拿到了微软和亚信的录用通知。到亚信是转向Linux平台、去做Internet相关的项目,从个人爱好而言,我非常喜欢这个继续用C++做开发的机会;但我更渴望学习大规模软件研发的管理方法:微软动辄上千人、分布全球各地的Windows、Office研发队伍是怎么有效管理的?怀着这样的疑问,我在2000年4月加盟微软中国研发中心Office组。
我刚去微软的时候担任中文版PowerPoint的PM(Program Manager,程序规划经理),现在PPT中10个非常有中国特色的设计模板(如古瓶荷花、诗情画意等)就是我负责的。但我最初应聘的时候,一直搞不清PM到底是做什么的,因为在国内公司没有听说过。微软早期一位名叫Jabe Blumental的程序员“发明”了软件研发过程这个“程序管理”的角色。简单的说,PM的作用就是把“Idea turns to spec”,用一份份Spec定义软件的详细需求,然后由程序员“turns to code”,经过测试后,最终“turns to product”。设定PM角色是一个很天才的想法,把需求、开发、测试三个环节进行“三权分立”,互相配合又互相制约,最大限度的保证了大规模软件研发的有效进展。大概没有PM这个角色,就没有现在的微软。微软的第3号人物Jeff Raikes曾做过这样评述:“Jabe was my first employee here,and he has made such an incredible impact on Microsoft because he defined the discipline of program management”。很遗憾到目前为止,很多国内的软件企业依然没有这样的职位。另一个让我感觉很震撼的就是微软内部的Bug管理工具Raid,这也是离开微软后我设计BugFree( http://bugfree.1zsoft.com)的发端。
我非常幸运的参与了Office 2003(内部叫Office11)的全程研发。最初设想非常宏伟:以SharePoint技术为支撑建一个Office网站,每个用户将生活在这个“网上Office”社区中,支付月租费。最初读到这个Vision的时候我们都莫名激动,如果真按计划做成了,用户将彻底依赖微软Office了。后来因为各种原因,Office 2003成为大家现在看到的样子,继续在客户端上徘徊。
虽然在微软当PM不写代码了,但我一直没有忘却对C++编程的喜爱。2002年10月底,C++之父Bjarne Stroustrup 来北京访问的那两天,我跑到清华和北大聆听大师的三次讲座。给我最深的印象是,听众席的教授、学者或者众多程序员们只有聆听大师教导的份,没有人能提出让Bjarne需要认真思考后回答的问题,更别说跟人家平等对话了!我们落后的太多了,何时能够赶上?
去年4月份,我决定离开微软去看看外面的世界,尤其是对我一直有很强吸引力的Linux/Internet。当时孤陋寡闻,没有注意到盛大和百度,否则现在也能跟着小富了。这一年多一直在做软件研发管理的事情,把在微软学到的经验用到实践中,也是很有挑战性的工作。(详见《程序员》2005年第8、9期《网站项目成功管理实践》)现在我深怕自己走上“务虚”的管理之路,所以必须要不断地学习新东西、自己动手写代码保持对技术的敏感。我非常看好开源软件的发展前景,计划到年底的时候把自己的日常工作环境切换到Linux上来;另一方面会继续把BugFree做好,将Test Case和Test Result的管理也纳入到BugFree中来,这样Bug、Test Case、Test Result三位一体,涵盖了测试的整个流程,可以让这款开源Bug管理系统更好的服务于IT企业的研发管理。
我相信机器终究也会有智能,尽管到目前AI还很遥远。但从我的好朋友林燕锋历时多年开发的KCOM商业工程( http://www.kcomsoft. com/)上看到了一丝曙光,目前这个KCOM平台已可以做到对管理软件的自动代码生成——换句话说,你只要把需求描述清楚,不需要手工编码,就可直接生成实用的系统!我希望能够有机会好好学习KCOM,研究代码自动化。
现在搜索引擎热火朝天,但搜出来的东西经常离题千里。我想自己写一个这样的“仆人”程序:能够智能化的去互联网上按照“主人”要求智能化的去寻找真正符合要求的信息,综合分析后呈现给“主人”,就像我们看的新闻摘要一样。这种真正“个性化服务”程序一定很有意义。
今天,IT技术正不断丰富并改善着世界和人类的生活,你我的努力或许将会让这个多彩的世界变得更加美好。欢迎《程序员》的读者朋友就项目管理或相关的话题一起交流心得。

程序员的成长故事之 从微软走向开源的5年相关推荐

  1. 一位资深程序员的成长故事

    大学生活对很多人来说都是美好的,可一旦走出校园,就充满了惶恐和不安.记得栀子花开的季节,一位计算机系的学长讲述了自己的求职经历. 结缘与苦学 大学与女友异地四年,原本想着毕业后去女友生活的城市. 慎重 ...

  2. 程序员的成长故事之 袁红岗的程序人生

    程序其实也是一种艺术                                                                                           ...

  3. 程序员的成长故事之 五年技术之路

    五年技术之路                                                                                           章立民 ...

  4. 程序员的成长故事之 我的Borland五年

      我的Borland五年                                                                                        ...

  5. 云栖专辑| 阿里毕玄:程序员的成长路线

    2018年12月20日,云栖社区3周岁生日.阿里巴巴常说"晴天修屋顶",所以我们特别策划了这个专辑--分享给开发者们20个阿里故事,50本书籍.第一位是林昊(毕玄). 在这篇< ...

  6. 致刚入职场的你 - 程序员的成长笔记

    前言 我们经常在网上会看到这样的文章,你的同龄人正在如何.这是典型的贩卖焦虑的文章.的确,现阶段,刚毕业几年的年轻人,面临车,房子等,有时候压力挺大的.但你过度焦虑的话,每天生活在恐慌当中,你会发现你 ...

  7. 一个程序员的成长的六个阶段

    第一阶段 此阶段主要是能熟练地使用某种语言.这就相当于练武中的套路和架式这些表面的东西. 第二阶段 此阶段能精通基于某种平台的接口(例如我们现在常用的Win 32的API函数)以及所对应语言的自身的库 ...

  8. 高甜预警!16个滴滴程序员的爱情故事

    桔妹导读:一年当中的情人节有很多,有七夕,有2.14,有你的生日,有我们的纪念日,还有520."5.20"这一天是告白的日子,也许是羞涩的初次表白,也许是细水长流中的真情流露,也许 ...

  9. 程序员如何成长设计师,软件公司如何成为苹果

    /*************************************************************************************************** ...

最新文章

  1. 写注册机犯法吗_逼着一个受害者去向另一个受害者道歉,不过分吗?
  2. 国际计算机思维比赛,少儿编程领域中,你所不知道的国际计算思维大赛
  3. [Microsoft][SQL Server 2000 Driver for JDBC]Error establishing socket
  4. uuid表示时间的部分_技术译文 | UUID 很火但性能不佳?今天我们细聊一聊
  5. mysql 8 配置参数优化_MySQL性能优化之参数配置
  6. c语言获取Windows缓存,【图片】【C语言】【Windows】--IE缓存提取器【erbi_lucifer吧】_百度贴吧...
  7. 程序员的奋斗史(三十)——近期微信公众平台更新文章集锦
  8. 苹果AirPlay浅析
  9. mysql jdbc密码密文_druid配置数据库连接使用密文密码
  10. ImagePicker 打开前置摄像头
  11. 荒野大镖客2无法连接远程计算机,荒野大镖客2pc版常见问题解决办法_常见问题解决方法汇总...
  12. 更改element-ui中MessageBox弹框的确定和取消位置
  13. Ubuntu Firefox浏览器安装Flash插件
  14. html图片显示详情,纯CSS鼠标经过图片视差弹出层显示详情链接按钮特效代码.html...
  15. java群发邮件_JAVA邮件群发 - Java-Android-jwebee - BlogJava
  16. FTP服务器的搭建与连接
  17. deepstream6.1-YOLOv5部署
  18. php递归函数return问题
  19. activiti适配人大金仓数据库修改方法
  20. 软件测试怎么投简历才会增加面试通过率?

热门文章

  1. 在线数据处理与交易处理(EDI许可证)
  2. 视频教程-赵强老师:大数据从入门到精通(15)Storm-大数据
  3. python爬虫难度排行_【Python爬虫】爬了七天七夜,终于爬出了博客园粉丝数排行榜!...
  4. Latex-期刊模板
  5. https信鸽李雷韩梅梅
  6. Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益
  7. clk为什么要用posedge,而不用negedge呢?(转)
  8. matlab实现肘部法(手肘法)确定kmeans方法k值
  9. Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D
  10. Python 实现股票数据的实时抓取