大一,迷茫:
高考失利,没能去成上海某大学,落到重邮学计算机,那时计算机对我来说是一个完全陌生的东西,上了大学我才学会开机,因为未知,所以迷茫,同时也充满向往。学计算机,完全不知道要学什么。大一下学期终于买了电脑,莫名的兴奋,天天捧着电脑。 因为小时候非常爱好绘画,于是学photoshop,以为学电脑画图就是学计算机,当时还真天真(不过后来还真的有用,之后给老师做项目时所有美工都是我亲手做的,让老师错觉我就是一美工,这是后话)。那时候刚玩,电脑老出问题,每次一出问题就去找隔壁寝室的高手。后来发现高手也只有一个技巧,就是用google,从此我的电脑出问题再也没找过其他人了,因为我也会用google!很快我从电脑白痴变成了帮别人解决电脑问题的“高手”了。。。
后来,对“黑客”感起了兴趣,天天泡在“黑客基地”之类的网站,玩木马,做免杀,盗QQ,控制别人电脑,并以此为乐。弄得自己的电脑每隔一个星期就要重装一次系统。后来学乖了,装虚拟机,自己攻击自己。“黑客精神”、“黑客守则”让我充满了向往,凯文·米特尼克成了我的偶像。
大二,准备:
慢慢地意识到,那时候所谓的玩木马只不过使用别人写的的黑客工具,仅仅是会使用别人的软件而已,当你为自己控制了很多肉鸡而沾沾自喜的时候,殊不知自己已经成了别人(黑客软件的作者)的肉鸡。“我要自己写黑客软件”,开始学编程,并且做了自己第一个网站《轮滑BBS论坛》(那时我的爱好就是玩轮滑)。
一个偶然的机会,软件学院(我是计算机学院)的一个朋友说他们学院有个实验室《重庆重邮软件开发中心》要招人,推荐我去。实验室正好需要做java web项目的,我很幸运的进去了(据说两百多人报名挑选了50个),最初是一个月的模拟项目,要从中淘汰掉一半人,我那时候的想法就是一个,不能让自己淘汰。很快一个月过去,一半人被淘汰了,并且选出了5个人直接参与项目,我很幸运的成为了其中的一个,并且是其中唯一一个大二的。至此,我才真正认识到自己所学的东西是如何投入实际应用并且产生价值的。
我的经历也印证了一个大家有明白的道理,“机会只会青睐那些有准备的人”,如果在此之前我没有自学那些东西,我是不会有机会进入实验室学习的。并且在实验室认识了一个对我影响很大的技术狂人傅鸿城(比我高一届,现也工作于腾讯,QQ音乐部门)。
大三,努力:
大二的暑假,8月1号回家,在傅的盛邀之下,8月10号回到学校,来到熊安萍老师的实验室,和傅一起接手一个报价47W的电信公司的项目,最开始真正做开发的只有我们两个(后来又加入了几个学生),压力都很大,但我们都非常有激情。当时我们的目标只有一个,就是把项目做好,做专业一点,让别人一看就觉得这是公司做的项目,而不是学生作品。我们下载很多开源软件,学习,尽可能地让我们的项目做的专业一点,再专业一点,不仅仅是技术上的,更有用户体验上的,我们都是尽我们的所能把项目做得最好,我们担任的不仅仅是开发的角色,还担当了产品、美工的角色。
要学的要用的东西很多,前台的js、vml,后台的java、jsp,数据库oracle的存储过程、触发器,甚至photoshop美工、css样式都是我们自己写的。那时候总觉得时间不够,要学的东西太多,我们除了吃饭睡觉,其他所有时间都在实验室,中午都很少休息,上课时间成了我最佳充电时间,一般我都不听课,拿着自己的书学习项目需要的知识,几乎每天晚上到12点多才回寝室睡觉。冬天,晚上12点了把已经熟睡了的宿管阿姨叫起来开门,那阿姨的恨不得杀了我 。。。也没有什么周末的概念,以至于我正式工作后,周末还跑公司去,发现周末公司几乎没人加班。
那年寒假,也就是雪灾的那年,同学们都回家了,到后来居然重庆都下雪了,寝室只剩我一个人,都快冻死了。但那时候我们都没有抱怨,也不觉得辛苦,依然激情十足,因为我们觉得自己在做一件比其他同学更有意义的事,我们所学的东西真正投入了应用,我们的劳动在创造价值!临过年的前几天我们才回家,火车因雪灾堵了,根本买不到票,差点就留学校过年了,最后好不容易买到票,还在湖南堵了12小时,还算幸运,听说还有被堵36小时的。
项目整整经历了8个月左右,终于完成,顺利通过验收并交付。
大三整整一年,总共看了两部电影,玩了一次轮滑(我是学校轮滑协会的,大二的时候每周必去)。那时候在我们看来一点都不累,因为兴趣、因为激情。。。
大四,收获:
大四找工作,总共去面试了四家公司,百度、淘宝、网易、腾讯,并且顺利地拿到了其中三家公司的offer,最终选择了非常向往的腾讯!
大四我完全接手负责了一个报价26W的电信公司另一个项目,带领整个团队,责任很大,压力也很大,总不能把一个二十几万的项目在自己手里给弄砸了。尤其去年年末项目初验很不顺利,没有得到客户的认可,当时压力很大,过年也很晚回家,回家后继续写代码,和客户交流联系,我甚至自己提出放弃去腾讯实习的机会,但是老师也非常替我个人发展考虑,还是让我去公司实习。还好后来项目比较顺利,得到了客户的认可。
实习结束后刚回学校,就继续投入了这个项目中,完成最后验收前的收尾工作,在毕业答辩前一周才开始准备毕业论文,并且在毕业答辩(还评上了优秀毕业论文,嘿嘿)之后的第三天就去验收项目,终于把这个项目顺利验收并交付给客户。在回公司的前几天还帮我们老师面试物色了几年级的几个能力不错的学生。
至此我的大学生活终于完满结束。
心得
1、切忌眼高手低
如果你上传一个文件的功能都实现不了,静态成员和非静态成员都区分不开,还谈什么软件工程、设计模式。学软件没有捷径,不要期望只要看软件工程、设计模式的书就能够学好,领略软件设计的精髓。只有写了大量的代码,犯了大量的错误之后,再去看这些书才会有体会,有收获。只有量的积累才能达到质的变化。建议:如果你没有几万到几十万代码量的积累,根本没有必要去看什么设计模式之类的东西,看了也白看。
等你写了很多代码,犯了很多错之后,再去看这些,你会相见恨晚。有些东西你必须去经历,等你经历过,犯了错吃过亏之后才会有体会。不要想着自己可以跳过这些犯错的经历。悄悄的说下:“面试的时候面试官就喜欢听你讲自己吃过哪些亏,没有吃过亏的不要”。犯错吃亏是必须的经历,你之前犯了很多错,那么之后犯错的几率就小了,如果你之前没犯过错,那么你之后的犯错几率就大了。要理解一点,很多人没犯过错,并不是他能力强,而是他没有机会去犯错。
2、积极主动
实习的时候导师跟我说,他有次连续两次考核不好,不服气,就去找leader问原因,后来向leader要了一个项目,结果他非常努力拼命,很多leader、产品经理都没考虑到的问题都被他考虑到了。最后做出来的东西效果非常好,远远超过了leader对他的预期。之后让leader对他大为信任,后来他就成了我们QQ会员门户组的leader。
说实话,在实验室最开始的时候,老师也不是很清楚我的能力,也不敢把项目完全交给我,后来我给老师写邮件,说我要做这个项目主要负责人,让老师信任我。这时我才得到了机会,去带领整个项目的开发。
3、心态要好
不要老觉得别人不看重你,你要先去努力了,别人才会看到你,并看重你。不要等着别人看重你了,你才努力。做任何事要懂得一个道理:先付出,再等收获。做人做事都该如此。
4、认真负责
一旦承诺下来了,就要负责到底。独立负责整个项目有时候压力会很大,因为几十万的项目,不能在你手里给弄砸了。在实验室的两年,除了上课、吃饭、睡觉时间,几乎所有时间我都在实验室写代码。寒暑假回家的时间也就十几天,过年回家了还在写代码。同样你对老板负责,老板一定能看到,也肯定不会亏待你的。很多东西都是相互的,你有多少付出就会有多少回报。
5、超越用户的期望
有些需求虽然用户没有提出来,但你觉得会非常有用,能让用户体验得更好,你就应该去做。不要等用户提出需求,反馈问题你才去做。超越用户的期望,不仅能让用户满意,也能让自己学到更多的东西。
6、适当地拒绝用户的需求
有些需求是用户一时想起,没有经过考虑就提出的,这时候你就要适当的去拒绝,因为很可能没过多久他就会又来一个新的主意,推翻之前的想法。用户的需求一定要等他考虑成熟后才接受。
7、不要小看维护工作
其实维护工作比开发更能让人学到东西。在维护的时候你才会发现当因为设计不足而带来为维护困难。你会真正意识到,当时为了赶进度或者其他原因拷贝黏贴的工作让你现在的维护成本大大提高。在维护过程中你会发现当时设计中的种种不足。现在就是你总结的最好机会了,你会真正切身地体会到应用软件工程、设计模式思想的重要性,这个时候如果你去看看设计模式之类的关于软件架构思想的书,你会不禁拍板叫好“呀,要是我当时这么做多好啊!”。
最后推荐几本书,非技术的,《人性的弱点》、《影响力》,人活在世上,不仅仅是技术的,为人处事同样重要,这两本书都给我带来了很大帮助。
大学四年,很感谢几个人,熊安萍老师、傅鸿城、还有我的两个辅导员对我一直都非常支持。