首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

程序员的生长启示

2012-06-20 
程序员的成长启示在我从工作开始到工作后的四年里,只认准一件事:做程序员,技术才是硬道理。实习在我的实习

程序员的成长启示
在我从工作开始到工作后的四年里,只认准一件事:做程序员,技术才是硬道理。

实习

在我的实习公司里(虽然是实习公司,但是我在那里做了接近一年的时间,而且是全职),我接触到了第一个框架:MFC,那时已经快2008年,MFC也是一项濒临灭绝的技术,大概也只有那些不重视技术创新的小公司才会用它,我的实习公司就是其中之一,但是使用MFC还是让我收获匪浅,因为对于一个刚从校们出来的学生,外面世界的一花一草都是很新奇的,在那时,我乐此不疲的操纵着句柄,为了能在一个按钮上显示三维程序而欣然不已,而且还绕有兴致的把孙鑫的Visual C++技术详解的书和视频都看了一遍,那时的乐趣在于用Visual C++做一些新奇的东西,最后的结果是项目在客户的不断修改中一团混乱,bug成倍的增加,最后明白一个道理,自己懂得语言,却不懂得软件设计。

微软外包

后来在我快毕业的时候为了追寻更好的技术目标,我离开了实习公司,去了微软做外包,而且一做就是接近两年,起初我根本不懂什么叫外包,不懂为什么在微软工作却还是另一个公司给我发工资,总之,就是好奇微软才进入这个领域的。

当时是好几个人来应聘这个职位,之所以最后我得到了这个职位是因为面试我的人(也是我后来的Lead)也是做MFC出身的,所以面试的都是MFC,面试的时候我们从窗口过程问到Hook,还有什么现在也记不得了,我都如鱼得水的一一作答,最后像聊天一样特别投机,那是啊,那年头还有几个做MFC的呀。

去了之后我就蒙了,因为我以前的知识在这里是零,我的职位是SDET,是要做自动化测试的,而且用的是C#,幸好我们那个组的压力不是很大,每天工作两个来小时足够了,所以我们的Lead基本上都是下午两三点钟上班,于是我开始疯狂的看书:21天学通C#,Microsoft.NET框架开发,Head First设计模式,Gof设计模式,由于我们组是做Web的,还看了HTML/CSS。JavaScript,AJAX,ASP.NET,总之看了很多很多的书,反正工作清闲嘛。

其实在那个组里并没有在工作学习到什么,毕竟不是做真正的开发,但是在书里我却学到了很多很多,而且,组里确实有很多技术牛人,他们技术都很好也很爱技术,这些人后来有去微软的,有去IBM的,有去Yahoo的,发展的都还不错。

不到一年,这个组解散了,做外包的就这样,合同到期,你可能就要换地方了。

凭借微软的外包经验我很容易的进入到了另一家外包公司,还是做微软外包,这次是在微软的Exchange项目组,虽然还是在做外包,但是在这个组让我学习到了很多有实在意义的东西,Exchange是微软很重要的产品,他的开发流程都非常正规,这是我直到现在都没看到过任何一个项目组,有如此正规的开发流程。在这里修改代码后要向美国那面申请Code Review,Code Review会非常细致,如果你的代码命名不规范或者代码不简介不优化那会是很糟糕的,Code Review通过后要做Smoke Test,这个Smoke Test是一个内部工具,它能够将你的check out的code和服务器上的code合并到一起做build,做完build后系统自动安装部署build环境,然后运行服务器上的Function Test(注意所有这一切都是全自动的,而且此时的build是在你check in代码之前的buid,而且Exchange的测试自动化程度是百分之九十多,所以服务器上的自动化case,足以测试出你这个build的问题),Smoke Test的结果决定了你的代码能不能check in,如果你导致了哪个case fail,你得有足够的理由去说明这个case 不是因为你的代码导致的,总之你可能要号上一两天时间来做Smoke Test和运行结果分析,如果你不做Smoke Test导致了问题,那你会死得很惨,整个Exchange组的人包括Manager、Director都会收到你没做Smoke Test导致什么什么问题的邮件,如果你的code造成了build失败,那你会死得更惨,因为这种事情的发生不会超过三次。

在Exchange组,准备Lab完全是自动化的,你只需要在网站上选择你需要的模板,过两三个小时,一套Lab就给你分配好了,要知道,Exchange可是一个分布式环境,而且依赖AD,包括操作系统,这些全部都是给你自动化部署好的,而且里面装了足够的调试软件,还有符号文件,所以,不得不说Exchange的开发流程正规而高效。

在Exchange组里,我看了很多C#的书,包括CLR via C#,还包括.NET Remoting,我在C#语言的掌握上已经开始是Team里的高手了,而且Team里只有我熟悉.NET Remoting技术,所以这方面的开发问题都会问我,感觉自己还是小有成就的。

好景不长,同样的原因,合同到期,我们的这个Team又要解散了,我不得不面临我重新的选择,我新的选择目标是第一、不再做外包,因为我已经知道微软在做什么了,我受不了这种做个半年一年的就要重新选择;第二、做开发,因为我以前是做SDET的,虽然也是写代码的,但却是测试代码。

外企

我的目标实现了,我之后开始在一个外企做企业级.NET开发,也是我现在的公司,虽然这里用C#,但是C#在这里只是一部分,这里要用到的技术很多很多,任何一项.NET技术都可能随时用到,于是在这里刚开始的一年时间里,我又开始了疯狂的学习,我学习了WCF,WPF,WF,Enterprise Library,AppFabric,ASP.NET,CAB,Prism,Unity,企业架构模式,Best Practice等等很多,而且在Exchange的时候是用.NET 2.0开发 ,我还要学习很多3.0和4.0的语法,像LINK,TPL等等,总之,在这里学的越来越多,也学得越来越快,到现在的感觉是,任何一个新的框架都没有什么特别的,留在脑海里最受益的永远是那些架构/设计模式和解决问题的思路。


总结: 经历过不同的环境让我感觉到,不管你在哪工作,不管你是做外包还是Fulltime,不管别人是赞成外包还是批判外包,这些都不重要,重要的是看你需要什么,看现在的工作能不能满足你的需要,外包或许是一个过程,或许是在你的过程中帮助你得到你所需的一个过程,但是这个过程多长,你是不是需要这个过程,别人不会知道,因为只有你才知道。

2楼wangchongcy5天前 14:45
还可以吧,至少英语还不是工作上的障碍。
1楼hxl1943185天前 14:23
楼主目前英语怎么样?

热点排行