转眼间,从哈尔滨到北京也已经两个月了。这是自己的第一份工作,虽然是实习生,但毕竟是第一次,所以还是有很深的体会。
2009年考上了哈尔滨的一所大学,很普通的一所211大学,虽然学校名不见经传的,但是在找工作的工程中,这个“211”的名号,还是起了挺大的作用。有的单位先不管自己咋样,对学生的要求可是杠杠的,什么只要硕士,必须985,211等等,呵呵,又开始抱怨别人了。大学的专业课是计算机的信息安全方向,呵呵,本科你们都懂的,本来学习计算机专业课的时间就很短了,一般都是大一大二上点基础的理论,大三才开始真正的接触具体的专业课程。现在看来,那些基础的理论还是挺重要的,只是当时什么也不知道,上课基本就是玩玩手机,听听歌,快考试的时候大家一起”努力“,基本上就记住个IP划分。大三的时候,我就已经有点意识到,以我现在的状态去面试找工作完全是扯淡,所以就打算开始自学。
当时根本也不知道应该学什么,虽然是这个专业的,但是,我基本还是一个门外汉。最后,我还是选择了java,因为有一门专业选修课是讲WEB开发的(就是javabean+servlet),我发现同学们做出个漂亮的小网站并不是很费力,而且界面还挺漂亮,感觉应该不难。当时还以为java就做做网站呢,当时真的就是单纯的傻。说干就干,去网上下载了马士兵老师的视频,javase的部分大约看了2个月,视频中涉及的每个小程序都自己背着完成过。基本了解了java的语法,和最基本的几个类库。有时候发现编程还是挺有意思的,尤其是自己完成了功能的时候。后面大约又有两三个月的时间,我自学了基本的web开发,最后自己甚至用struts2写了一个简单的论坛系统。这半年的时间没有荒废,至少可以说,我基本熟悉了java的语法了。
大三很快就过去了,大四暑假开学的时候,就已经有不少的企业过来招人了,这个时候才感觉到压力真的来了。直到我看到企业的要求的那一刻,我才知道自己究竟差的又多远!上面的很多东西,大部分我只是听说过,但是具体一点就蒙了!9,10月份的时候也跑了不少的招聘会,大企业也去笔试过,像华为,中兴,百度,QQ等等。不用说,就凭你一个小屁本科还没技术,还想吃天鹅肉,你太天真!找工作的期间,我不断的总结教训,每天都会在大脑里面模拟面试,试图把自己变得稳重,和有条理,事实证明,这的确对我帮助很大。跌跌撞撞,如履薄冰,经过大约两个月的找工作,我还是获得了三个offer,其中有家开到了6K在深圳,北京的这个在5K,最后考虑到回家的方便,我还是去了北京。我觉得,我还是比较幸运的,而且通过找工作的过程,我也认识到了要想得到一份自己满意的工作是非常非常不容易的!
跟学校打声招呼,我就去了北京。到公司之后,我负责的是服务器端的开发,我终于见识到了企业的应用与学校的小打小闹的多么的不同!在学校的时候,类图很明了,方法调用简单,而且你不会考虑过多的可扩展性的问题,最主要的是代码量比较小。但是在企业里面,我看到DBService的一个类,竟然有8W多行!刚开始的时候真的是无从下手,即使你用debug跟过几个类和方法的时候估计你自己都蒙圈了!这时候,log的作用就显现出来了,我把log4j的显示等级从warn改到了debug,这样每个方法的进入离开,所执行的SQL语句就都会打印出来(这要多谢同事的细心哈)。即使是这样,一个客户端的SOAP请求,服务器需要的响应还是很复杂,包括用户权限的检查,条件的判断,条件的取反等等。光一条SQL语句往往就能有一百行左右,而每一次请求则会包括与数据库的几十次交互!随后,我自己开发了一个帮助性的小工具,就是在日志文件中拿到所有的sql语句并且自动加上参数,然后在对数据库交互进行分析。这样,慢慢的可以了解到整个请求的交互过程了,也顺利的解决了几个小bug,完成几个小function。总的来说还是提高了不少!
我也来谈谈我对技术的认识吧,请大家不要笑我,哈哈。选择那种开发语言不是最重要的,而且哪个高级程序员只会一种?关键的还是对计算机和网络的基本原理的理解。例如,线程,进程,内存划分,硬盘的划分,数据在计算机中的表达。还有就是网络方面的以太网协议,TCP/IP,ICMP,ARP,RARP等等,还有我觉得任何一个程序员都应该学好的C语言。我觉得linux是个比较好的认识OS的一个平台,毕竟开源,所以现在开始没事玩玩linux。还有的就是现在大力宣传的OpenStack,hadoop大数据,这些东西一定要了解一番,不把自己当成井底的青蛙。
有过彷徨,有过迷茫。有的人成功只需要很短的时间就可以了,而有的人则需要比较长的时间,不管怎么样,我现在的机会,都是我努力争取来的!