现在已经快10月了,除去在嘉兴培训的日子,进Infosys工作已经一年了。就这一年里的感受做一些回顾和总结。我会以客观、公正的角度描述这一年的事情,给想要进Infosys的毕业生做一个参考。

1.刚毕业的人不要抱怨工资问题,首先要学会做事

我和我同学比较特殊,是毕业前就来公司的,这可能是学校为了提高就业率而计划的,所以我们是和别的学校的同学一起从嘉兴培训中心毕业到公司的,但转正比他们要晚一年,之前均算作实习。

在Infosys实习,工作时间和内容和正式员工是一样的。实习工资是1800,转正以后是3300(税前)。不少人抱怨工资低,其实我认为,实习的工资不算低,而且说句公道话,刚大学毕业的学生,有几个会做事的?特别是眼高手低的尤其让人讨厌。不谦虚学习,还经常请假,甚至旷工,这态度就不让人喜欢。我本人,不谦虚的说,一样刚大学毕业,但我能做的事很多,但我在态度上不那么娇惯。我想,公司付你钱,不管多少,都不是义务给你的,要做的事还是必须做的。一个刚毕业的大学生,如果整天浮躁,在公司都没给公司赚钱,还好意思抱怨工资,实在是羞耻。转正以后的工资确实低,如果你本身没有技术的话,那也就别抱怨了,跳槽到同行业说不定面试都过不了的。没本事还天天讨论跳槽的人,实在是让我非常鄙视。

刚从嘉兴培训中心毕业的,通常不会直接进项目,而是先“On bench”,在这段时间里,公司会安排一些技术或领域方面的培训,平常没什么事,你可以利用这点时间学习。

2.技术就像内裤,要有,但不能逢人就证明你有

我和我们这批同学接到的第一个项目,是公司给我们锻炼用的内部项目,人家可能根本不打算用,只是为了锻炼我们。公司很清楚刚毕业的大学生是什么水平,尤其是在现在这种计算机专业泛滥,世风日下,学生素质又不好的时代。对于我来说,这确实有点浪费时间,也学不到什么,但我还是抱着谦虚谨慎的态度和同学们一起做项目,人家不会的我也尽量帮忙。我这样做,一方面是可以装逼,装给同事和领导看,是有一定好处的。另一方面,教别人的同时也是对自己技术的巩固。

对于装逼,要把握一个度。虽然大部分人毕业之后就像小白一样,但有技术的人也不少。这些有技术的人刚到公司,可能为了博得领导的赏识而显露自己。这无可厚非,我就是这样的,为了能证明自己的才能,证明自己与众不同,必须做一点事出来。但如果把握的不聪明,就很可能让自己变成苦逼了。我作为一个计算机爱好者,我有很多书,家里书架上3层都是我的技术书,但我带到公司看的,每次就一两本,并且我不会故意“看给别人看”。如果你很不幸,把自己的技术书都带来,在桌上叠的很高,那恭喜你,你一定成功引起了领导的注意:“这个刚毕业的大学生肯定不一般,一定要重用。”于是,就算你在实习期内,也会让你去正式的项目组“帮个小忙”,弄的不好就经常加班了,而且实习生加班是没有任何福利的。并且,转正之后工资也是和别人一样的。所以说,展现才华要有技巧,要懂得收敛。

3.发掘自己的特长

我的第一个项目是一个ASP.NET WebForm的实验性质的内部项目,PM很厉害,但他也是刚进Infosys的,对我们很好。他也知道他带的都是刚毕业的学生,所以一开始就要摸摸底,我们的第一个任务是设计UI,考察的是网页制作和设计能力,这方面我还是比较熟练的,所以很快也很优质的完成了任务,并且在后来的架构设计以及编程方面也比较出色。毕竟这种小项目的难度还不如大学里的毕业设计。也是那时候,我的PM对我有了比较好的印象。

很快,一个月后我们就接到了一个正式的项目,也是公司内部的。是基于SharePoint 2010开发的,我们和我们的PM都没这方面的经验,所以请了几个很牛逼的老员工来带我们。我主要负责的是前台,也就是HTML、CSS、JS,当然,也参与了部分后台程序的编写。PM让我做前端的原因也不是说我在这方面非常优秀,而是在这个项目组里,只有我是能够做出“上的了台面”的网页的。也就是这个时候,我发现Infosys中国真的是没有UED部门的,许多项目的美工设计都要程序员自己来搞。我认为这是比较傻逼的,在这个注重用户体验的年代,没有一个专业的UI设计师很难搞出用户喜欢的软件。后来我想到,Infosys是做软件外包的,而不是做产品的。UI的影响和重要性应该没那么大,所以它才敢省下请美工的钱,让C#或Java程序员来做HTML、JS已经CSS,甚至连图片都有。给我的感觉就是堂堂一个“500强”公司居然如此不专业。

4.学习态度

这个SharePoint项目持续了很长时间,中间也有人员进出。许多都是我的同学。因为没有信心也没有能力胜任开发工作而去转测试,或去别的部门。剩下的和我一起做开发的队友,在态度上都挺不错的。这是值得我们上海同学学习的地方。外地的毕业生来上海工作,非常懂得珍惜。不是因为他们是正式员工所以才认真工作。他们中间也有实习生,和我们一样的实习生。而我们上海本地的许多同学因为家里条件好,也不肯吃苦,根本就没毅力去坚持搞IT。我本人是因为兴趣驱使而最终成为苦逼程序员的。但现在当兴趣成了压力,也就没那份热情了。

项目组里的老员工是值得切磋的对象。我经常和他们讨论问题,从他们那里学到了不少实用的经验。这要比我从前自己埋头在学校研究要快的多。这也是IT公司的好处。如果你想在IT技术方面有长进,去普通公司做个小网管是不行的,只有IT公司有这个氛围和条件。

公司的规章制度有时候很死板,可能大公司就是这样的,对于进项目的人来说,经常会有碰到问题需要上网查资料的时候。而这时,如果你的Job Level没有4,就不可以在10点到17点之间上网。刚进公司的毕业生Job Level都是3。Job level的直接影响除了工资以为,第二位重要的就是上网权限。所以就只能自己看一下了。在没有解决上网问题的时候,只能自己掏钱用手机或iPad查。那段时间我是常带iPad和3G上网卡的。碰到外地人来上海的,条件没那么好的,就真的只能自己看一下了。

进公司以后,在技术上的长进,100%都是要靠自己的。这不像大学里,还能有老师教。公司里没人有这个义务去帮你。每个人都忙着自己的事。如果你不是妹子,别人也没那么多好心情去认真帮你。真的只能自己看一下了。所以要懂得积累。如果知道自己技不如人,平时回家又只想着玩游戏,真的是很难有出头之日的。我观察发现,有许多外地毕业生,都会准备一本笔记本,把别人教他的,哪怕是一两句话,都记在本子上。这是非常细心的。成功就是得靠这样的积累。

5.学好英语,尤其是口语,并且注重交流。一只成功的程序猿不仅要懂得与机器交流,更要与人交流

除了技术以外,我体会到的另外两点就是英语和交流能力。英语对于上海同学来说非常有优势,但口语怎么样呢?虽然印度人的口语也不好,经常被笑话,但如果我们自己连说都说不出来,那就很难出头了。我在前半年里收获最大的就是表达与写信的能力。

SharePoint的这个项目,唯一坑爹的地方就是如何跟另一个在印度的团队交流。起初我们以为印度那边的编程水平很高,充满仰慕的进入项目后才发现,他们写的代码真的是不堪入目,可以当反面教材用。毫不夸张的说,这些代码的水平,和我大一时候是一样的。很难想象这居然是软件公司的代码。因此,我们产生了很多交流上的问题。我们需要让印度团队明白许多错误不是我们的责任,这通常需要PM在内的好几个人几天的邮件来回。

让我最无语的一次,是有个浏览器兼容问题。测试团队发现某个页面不兼容IE7,然后我改好了,但我用的是虚拟机(XP+IE7)做的测试,结果印度那边说,虚拟机测试的不算,直接把我和我队友以及我PM直接雷暴,最后费了起码一周的时间,通过远程会议才当面演示,才最终关闭了这个bug……

当然,不是所有的印度人都水。只是厉害的印度人没有安排在这个项目里。公司不会把投入放在刚毕业的SE身上的。

6.要适应外包公司的工作性质,它可能不管你会不会,让你做什么你就得做什么

今年六月,我离开了SharePoint项目。和之前离开的同事一样,我感到的是解脱。然而,离开之后我们的命运就各不相同了,更大的一个坑在等着我。新接手的是Silverlight项目,这是我比较讨厌的一个技术,当然我也没有任何Silverlight的经验。好在第一个任务是做一个WCF数据导入导出的Service,这和前台技术没什么关系了,还是比较顺手的。新项目的代码尽管也都是坑,但至少比之前那个好的多,毕竟这是公司真正用来卖给客户赚钱的项目,不能乱搞。然而,在搞完WCF以后,我突然接到要求,还要在Silverlight的应用上做相应的开发,并且是在没有培训过Silverlight的情况下直接上手,不仅有RadControl,还有MVVM架构等Silverlight方向里常用的东西。对于连hello world都没写过的我来说,我表示压力山大。好在有TL会写详细文档告诉我怎么去做。但终究还是自己不会的技术,总有爆掉的时候。所以加班也就是经常的了。对于这样的加班,我不太抱怨,因为毕竟是我自己的问题。但对于公司给我分配任务的方法,我实在有点觉得不专业。

我认为,能让公司和员工的利益都得到最大化的,是给员工安排适合自己的工作。不能因为你会.NET,就要让你包揽.NET平台下所有的技术。这是很愚蠢的,就像请个兽医给人看病一样。然而,不知道是不是公司对刚毕业的大学生一视同仁,觉得我们“反正是一群什么都不会的菜鸟,做什么都一样”,就让我们从数据库到service、web、设计什么都做了。当时签的合同上也没写具体的岗位。

而据我所知,就算是国内的IT企业,员工也都是有明确分工的。比如前端工程师、美工设计,他们在自己的领域非常熟悉,但未必要会后台语言和数据库。所谓术业有专攻就是这个意思,这样才能最高效的运作。我也不知道为什么,在外包公司事情不是这样进行的。

既然无力改变,就只能适应了。反正多学点东西也没什么坏处,最多就是浪费时间。但我觉得一定得有一方面特别突出,才能站稳脚跟。这就是下面要说的内容。

7.明确目标

现在工作一年了,各方面的东西多多少少都接触了。但我不能样样会而没一样精,我感觉自己还是最适合Web方向的开发工作。所以我给自己定的目标就是做到精通ASP.NET及相关web技术。在业余时间,我总是学习最新最前沿的web技术,并运用到实践中,不断给自己的博客升级。以后如果要跳槽,有一门看家本领应该是非常管用的。

8.要有读别人代码的能力,不要沉浸于自己的世界中

我现在的项目中所作的工作,基本都是在修复前人留下的bug。所以阅读及分析别人代码的能力是非常重要的。这倒不是说非得有多高深的水平,因为我所面对的都是垃圾,代码越垃圾,就越难让人看懂,尽管VS自带了很多分析功能,但要能完整的弄清别人的意思还是要费功夫的。和垃圾代码打交道,最重要的就是耐心。你得顺着别人的思路。尽管别人是披着面向对象的皮,干着面向过程的事。但作为一个阅读者,必须适应。有时候我都想一怒之下给他重构了,但这是政策上不允许的,工作量上也不是明智之举。另外,对于没有注释的代码,更需要耐心。这是在锻炼心理素质而非技术。如果你是个耐心的读者,那面对现实生活中的许多事,也会更加沉稳。

读优秀的代码像与一位伟人交谈,读垃圾的代码就像在屎坑里前进。平时有空多读读优秀的开源项目,对自己帮助非常大,我的博客很多地方是参考BlogEngine设计的。如果不幸在项目中踩到屎,那就提醒自己不要在相同的地方犯错。我想,《重构》这本书的作者就是因为踩了许多屎而总结出来的经验。所以踩屎也是非常宝贵的,不要抱怨。

以上是我一年工作的感悟,欢迎大家留言讨论,也可以Email联系我:Edi_Wang@outlook.com