程序员变成项目经理的背后
2010.01.17
刚刚进入一家网络开发公司,公司里面的人都是一些刚毕业不久的程序员,而我却已经是年近30的人了,在这行工作了也差不多7年了,跟他们一块工作,让我觉得自己都成为了这行里面的“老人家”了。大家对前途抱着的是希望,有的是热情,而我却像是走头无路了,月收入也只不过3000多块,让我怎么干下去呢。
主管对我说:“你刚进来,还没有什么工作分配给你,你先帮帮小陈一块开发吧!”
“好吧!”我无耐地回答。
于是我向小陈问到:“有什么需要帮忙吗?”
“你先开发一个订单模块吧!”她回答道。
我心里不禁在想:这样中小型的企业,这么快就用到微软的MVC来做模块,看起来还挺有前途呢。但是当我把代码拿回来一看,不禁让我失望了。所谓的模块,只不过是一大堆html代码,只是通过某一个函数来获取这些代码,而且还把函数名都放在数据库里面,其开发模式简直可以说一塌糊涂。我不禁地问道:“这是什么样的开发模式呀,怎么以前我没看到过?”她说:“这是我们主管决定的,我也不知道呀。”我说:“既然这代码经常重复地使用,不如用最简单的用户控件来实现吧!”她的神情有点好奇,望着我说:“用户控件是什么呀?”我可真的有点哭笑不得,怎么我干了这么久,现在还要到这样的公司来干呀!
2010.04.23
不知不觉,在这家公司已经工作了几个月了,工作的时候也算是遇到几个志同道合的朋友,大家都觉得这公司没有发展空间,在这里呆下去,只会耽误了自己的前途。
一个中午,吃完饭以后,我对大家说:“这公司的开发方式实在太差了,你们还好,有的是时间,可我呢,年纪都这么大了,如果再这样呆下去,我可是要转行啦!不如大家找个日子,一块递辞职信吧!”大家都在迟疑,不敢下决定,突然阿峰说道:“我昨天已经递了辞职信啦!”我有点惊喜地问道:“怎么你不先说,辞职这么突然呀!走得比我还快。”阿峰回答道:“上个星期六,主管要我加班,我就是不回来,这时候,我已经知道他们不会再请我了。结果跟我所想一样,今天我已经接到离职信啦!”我说道:“好!不用多久,我也会走的,希望以后我们有机会再合作。”
2010.06.10
在这些日子里面,有空的时候我看了《重构:改善既有代码的设计》、《敏捷软件开发:原则、模式与实践》、《企业应用架构模式》等好几本关于系统开发的名著,我觉得自己简直是获益良多。以前虽然对开发模式也有一定的认识,但毕竟不能完完地了解,也不能灵活运用。
但在这一段日子以来,我开始对设计模式与领域驱动设计等有了更深入的了解,让我有一些跃跃欲试的感觉。可是在这公司里面,简单的网站开发根本用不上这复杂的设计模式,我觉得这简直就是阻碍了我在技术上的发展。
于是我毅然决定,向公司提上我的辞职信。公司也答应了我的请求,在6月23日我终于离开了我的工作岗位。那天早上,我笑着脸到了家附近的麦当劳吃早餐,店里的小静问道:“为什么今天特别地开心呀?”我回答:“因为我失业啦,我已经辞职了。”小静笑着说:“辞职也会这么开心,一定是找了更好的工作啦。”我笑着心里想:因为这时候辞职,可以更有利我的发展,让我学到更多的知识,只要有本领,就不怕找不到好工作。
2010.10.5
我离职已经三个多月了,在这三个月里,我觉得自己学到的东西比这7年来学到的更多。我终于可以更深入地了解到开发模式的真正意义,这开发方式并不是局限于面向对象,面向服务,领域驱动,也不局限于那23种开发方式,这些对于开发模式来说都只是冰山一角。我也知道测试与重构的过程与必要性。“好的代码不是写出来,而是经过不断的测试而重构出来的。”这可是不少名人的座右铭。在很多的程序员眼里,都会忽略了这一点,而要成为一个成功的开发人才,却不能忽略了它的重要性。
在以往的几年,我都是从事B/S开发,对C/S也只是略知一二,但在这三个月,我对C/S的数据传讯和开发方式有了更深入的了解。而且熟悉了TCP、UDP、FTP、 HTTP、SMTP、POP等通讯方式的核心开发。
就在这时候我把自己的简历再次发上了人才网,在一个星期内,就有8家公司要我去面试了。最终我应聘立信集团的.NET高级程序员一职,收入也升已经到了7000元,我开始觉得自己踏上了人生旅途的另一页。
2010.10.24
在立信里干了还不够20天却已经让我有点失望了,我原来只想跟从兴签约,然后踏踏实实地干下去,却不知从兴大多数跟移动合作开发项目,用的大多数是用JAVA开发的,也只跟JAVA开发的人正式签合同。而我们这些干.NET的,只像一个小配角,大大小小的杂务都交给我们,合同也是跟立信旗下的一家外包公司签约,这不禁令我大失所望。
而公司开发所用到的技术却对我有了新的启发,因为接的都是较大型的项目,用到的都是Workflow工作流去实现业务的,而且用到了SOA面向服务的开发模式,这可是近几年来最热门的开发方式,也正是我学习的好时机。可惜,这些开发都是由架构师先设定,然后分配给我们去干的,怎么也不会轮到我们做.NET的人去干,对此我感到深深地不忿。
我觉得这是我学习大中型项目开发的好机会,我可以知道开发的具体流程,系统的分析,工作的分配,所用到的技术等等。但这核心的开发却轮不到我来做,而且自己对Workflow根本是一窍不通,对Web服务也只是懂得最简单的例子,这怎么能开发出一个全面的SOA系统架构。
在国庆节过后,刚好在从兴电子工作了一个月,我毅然提出离职请求。而从兴的项目经理,外包公司的总经理再三的挽留,还是被我拒绝了,我还是觉得干我们这一行的,技术比工资更重要。终于我离开了从兴,继续走自己的路。
2010.10.25
刚离开从兴的第二天,我又收到另一个电话,竟然是神州数码公司的人打给我的,让我去面试。于是我在下午5点就到了中国移动在广州的总部,跟神州数码的人见了面。交谈了还不到10分钟,他已经说要我明天入职,收入8000元,职位是.NET架构师。
我觉得自己好像在做梦,没想到跟大公司合作干.NET架构师这样的职位,既不需要做面试题,更不需要等,10分钟就能通过。进了公司以后,我才知道原来是神州数码跟移动合作,派了一个开发团队在移动的总部负责开发一些小项目。项目经理对我说:“唉,我对代码可是一窍不通,所以才急着请一名架构师,在此之前也不敢接什么大项目。你既然来了,就先帮我看看这个开发项目有没有问题。因为移动定下规矩,数据层要用NHibernate,开发也要用Spring.NET,你做的时候要小心一点。”
我看了看已经的代码,可真地想笑出声来,接口层跟实现层竟然会在同一个程序集里面,为的就是要用Spring.NET来实现绑定,真可以说是主次颠倒,违反了DIP的开发原则。而项目经理却全然不知,这样对程序开发毫无认识的的人也能在神州这些大公司当上项目经理,真是一个笑话。
第二天,经理问我:“怎么啦,看过代码,你觉得没问题吧?”我回答到:“有呀,不过也不是什么大问题,挺容易解决的。”于是我把发现的情况说了一遍,经理问道:“这样子对代码的功能不会有什么影响吧!”我说:“如果是小项目,影响倒不大,如果项目需要不断扩展和重构,那问题可就大啦!”“那你赶快跟那些开发人员说说,叫他们改改吧!”经理开始紧张起来。
我真觉得有些哭笑不得,这样对代码一窍不通的人对也能当上大公司的项目经理,为什么我不行,我开始在想。在以往,我们这些做开发往往都会把技术放在第一位,对我们来说,项目经理也只是从事业务管理的人物,我们往往对这个职位抱着一点歧视的眼光,总觉得架构师,项目总监才是我们开发人员的梦想。但现在,我开始觉得自己的想法有些天真。项目管理其实也是一种专业知识,你既需要对代码,对开发工具有深入的了解,也需要对业务流程,开发事项有经验才能干得好。想进一步提升自己,项目经理似乎是必经之路。
于是在第三天,我终于向神州数码公司递上了辞职信,继续去寻我的路。
2011.02.10
今天已经是正月初八,不知不觉地我已经在家里度过了二个多月,在这些日子以来,我一方面向技术层次发展,深入地学习了WF、WCF等技术,读过《WF高级程序设计》、《WCF核心技术》、《WCF 3.5揭秘》等多本著作,另一方面也向项目管理进发,学习多层次的软件开发管理模式,对Scrum敏捷软件管理,XP极限编程,企业软件开发等管理模式都有进一步的了解。
我对自己建立了自信,觉得无论在哪一个层次,我都有了一定的了解,在开发方面,我可以在B/S、C/S开发方面都能够从容地应对,对数据获取无论原始的ADO.NET还是LINQ和NHibernate映射方式,我都深知其开发模式。对基础的三层开发模式、面向服务开发,领域驱动开发等的架构都可以轻易地建立起来。最重要的是我对开发的管理,需要分析,风险评估,项目重构等等都有了认识,我觉得现在应该是自己“实习”的时候啦。
于是我开发把自己的简历放上了人才网,在2月21日,我终于登上了人生的另一个舞台,当上第一个Project Manager。虽然,我不感说这第一次的尝试自己一定能干得好,但是我还是对自己说:干吧,只要肯努力,前途是光明的,道路是曲折的。
我写这篇文章,目的不是炫耀自己有多少才能,而是想对各位有类似经历的同行说一下:其实工作的位置不是最重要的,只要能坚持自己的信念,不断地努力,大家都可以实现自己的理想。就算今天你只是一个小程序员,只要你努力去拼,不要让环境扰乱了自己的发展方向,可能在几月后,你也可以成为架构师,项目经理,技术总监。
朋友,让咱们为自己的理想一起来奋斗吧!