跳槽前夕的三年总结

从毕业到现在已经三年多了,尽管自己非科班出身,但是三年来还是学到了不少,也即将完成人生第一次跳槽。在这个时刻感觉应该写下些什么,来记录下自己这三年我所经历的风风雨雨,所学所想。

2011年刚毕业那年,凭着自己看过Thinking in JAVA的一瓶底姿势(半瓶绝逼是骄傲的说法)、网上搜罗的一些面试宝典再加上毕业设计超级入门的Mutation Searching DataBase(竟然还发了SCI),找到了这份工作。这也是重要的一年:我拿到了户口本,毕业证,学位证,房产证,结婚证,工作证。。一切好像是万事俱备只欠东风的节奏,可惜当时的技术实在是太渣:基本没用过HashMap,Collection一知半解,算法跟数据结构还稍有了解不过限于书本的前几章,没听过JSON,JS只用来写过onclick="a()"..反正你能想象的要多菜有多菜的状态,就直接进入研发部门了。

刚工作唯一的感觉就是,研发太吊了,貌似我什么都不会啊。老板分配的第一个工作是基于jQuery UI的Portal Widget界面维护,说真的,一点都看不懂。当时把面向对象奉为高于一切理念的我还在JS里庄严的模仿JAVA写着setValue,getValue,现在想想都搞笑。当时的状况:
1.完全不会搭环境
2.完全没接触过jQuery,Ext
3.Java的基础太差,貌似当时还分不清多态跟泛型分别是什么意思。

怎么办内?

学习! 说真的互联网的强大确实给我们这些二把刀带来了福音,网上一些视频教程更似把饥渴的汉子丢进酒桶面包堆里。入门必看--1.7倍速马士兵JAVA基础教学,还有后续的JSP、坦克大战什么的。这种学习和学校里面听课真的是两种感觉,现在的学习是为了生存,为了将来更好地生活。就这样,JAVA基础一点点建立起来。

一个更重要的技能-- Debug。初期跟代码真的挺累的,不过还好,公司没有使用市面上流行的SSH,而是自己一套开发框架。从登陆到认证到每次请求的封装和分发再到后台的业务逻辑。每当这时候我总会感谢当时面试我的老板:
1.非外包性质公司
2.有自己的平台,自己的特性
3.从Applet-->纯BS转变的开发
这三点真的让我获益匪浅。最开始跟代码的时候会拿个本子拿个笔,一点一点的把每个重要的方法,每个重要的初始化的点记录下来(其实就是debug view中的堆栈),也慢慢熟悉了eclipse的调试界面,各种快捷键,各种调试手段(比如如何加断点,如何在成员变量上加断点,如何给断点设置Condition,Drop2Frame是什么意思),Debug窗口里的线程栈是什么结构等等等等。慢慢的,跟代码就不满足于现有平台了,比如Tomcat的源码,比如Struts2的代码,比如JDK一些内部的lib。当然了,Debug是很好的学习代码的方式,但是在这之前,先要了解跟的代码的功能,毕竟先会用功能再看代码才是正常的学习顺序。学会了这些,让我在平台维护的时候能够很快的找到问题原因(洋气点儿叫trouble shooting),并且能学习一些设计模式和开源框架的源码。其实后来跟JS代码就很轻松了。

环境的搭建没有浪费我很多时间,在学校里面用的是j2ee eclipse,说真的就知道Web项目结构了,但是不知道原理。来公司后开始使用Standard eclipse+Tomcat plugin+Tomcat的方式,让我更清楚JAVA项目和JAVA Dynamic Web Project的联系和区别、Tomcat的部署原理(以前根本不知道在tomcat/conf/Catalina/localhost里面加个xml也能部署)等等。所以后来对Maven的使用也上手很快。

小公司毕竟所要做的事情会比较杂,SVN这个必须技能就不详加赘述了,起码基础的check out、update、conflict的解决都应该了如指掌,进阶的分支操作我还没涉及到。Linux也是很重要的技能,两次被叫去客户现场,在redhat下的websphere中部署产品。这里当然要推荐下Ubuntu了,wubi安装,简单快捷,主要是进去之后了解怎么安装软件,别直接sudo apt-get install,尽量自己下安装文件,然后去设置一些环境变量,这样能更快的感受到Linux和windows一些操作的区别。另外写过ant脚本,搞过数据库索引、搭过安卓环境,做过需求,画过流程图,排查过OOM和死锁,部署过集群,优化过代码,搞过Hadoop Hbase,还面试过应届生甚至做了两三年的次新程序猿(对比之下感觉自己牛逼了,于是见感受2.)。尽管可能后面用到的机会不是很大,但是学到了一些技能还是很开心,就像你不仅会开车还会自己换备胎换空调滤芯的赶脚。

JS永远是个伤,基本从0开始(尽管去w3cschool学过JS了,蛋战斗力依然不会超过5)看Ext还是太吃力了,要学习原型链、学习JSON结构、学习call apply(这俩到现在我自己也没用过)、学习jQuery,到这里,基本JS就可以算入门了,可以看看jQuery的源码,看看Ext的isIE是怎么回事儿,看看jQuery的事件是怎么搞得,再广度的看看jQueryUI jQueryMobile BootStrap。伤的原因是,我始终觉着JS这种前端技术对于做美工的人是如虎添翼,对我这种尽管能欣赏美但是不会设计美的屌丝程序猿帮助不大,当然有志走这条路的建议看看http://developer.51cto.com/art/201103/250777.htm Web前端研发工程师编程能力飞升之路 应该会很有帮助。不过我将来还是希望能做后台。

写了半天感觉有点像是写给小白的入门之旅了=。=

写点自己的疑惑和感受:
  • 1.每次遇到问题去google baidu的时候都发现别人可棱在上个年代甚至上个世纪就已经解决了的。这点打击挺大,想我辛辛苦苦看了学了这么多东西,蛋始终只是在追赶别人的脚步的时候,总归会有点不适应,也对自己挺打击的,无论技术再怎么样,也不可能达到全通的境界,还是得在某一两个层面上精通。
  • 2.没事儿感觉自己牛逼的时候真的可以去投投简历面试一把,找找刺激顺便被打击一下,当然BAT之流的就别去了(可以看面经),省的你这次的菜逼表现影响你牛逼时候的面试。每次面试后,都能让我感受到自己在哪些方面还有不足,比如HashMap原理,非科班出身没系统的看过书学习过 等等问题,因此最近恶补了一下深入JAVA虚拟机第二版,还找同事借过来一些大学的计算机课程书籍,尽管真的看不进去,还是硬着头皮看看。
  • 3.理论和实践查询还是很大,比如只看了SSH一些简单的源码(其实我还没接触Spring),但是跟生产环境的使用还是差太远了,具体应用场景也差的很多,这点永远是自己的硬伤,也是HR压薪资的重要来源,认了,基础好才是真的好,工作中实在涉及不到也没办法。
  • 4.英文很重要。前段时间妄图挑战自己,应下了MorgenStanley的纯英文电面,那家伙。。如果主人公换作读者,场景大家自己想象吧。我自认为英文还可以,尽管三年没用,美剧倒是没少看,表达和听力还行,就是专业术语差劲了,有志进外企的少年们从现在就努力吧。古训:MS telephone interview just reminds me how far i am from nubility!


其实自己一直在走弯路,从大学到研究生,毕业后这三年我感觉是往正途(我所向往的方向)在走,但是这次跳槽仍旧没能跳到正途,应该会到外企,答应了对方的offer,也不想再反悔了,毕竟影响自己职业操守,影响雇主的工作安排,尽管我时刻告诉自己,你的总Boss永远都是作为剥削者存在的。

有了家人,有了孩子,考虑的就多了:薪资、加班、上班地点。猎头打来菜鸟网络的机会真的很好,但是已经放不下魔都的这些,没办法离开。BAT也没有好的内推机会,哎。。

未来的三年应该不会再跳,当然如果公司真的很水,说不定就裸辞,非BAT不去了,宁可降薪;如果还可以的话,就考虑安稳下来, 学学业务,争取一下 职位的晋升,可能就直接做下去了。技术上应该会在 JAVA Web这块继续努力,底层的什么电路什么16进制内存地址真的很难理解,难道真的老了?

希望再三年后回来看今天的选择,我不会后悔。路漫漫其修远兮,吾将上下而求索。

PS1:一直也没写跳槽的原因,其实大家跳槽的原因就是发现不如自己牛逼的人跳槽之后挣得比自己多了/自己感觉自己的能力和付出非常高于当前自己的薪资水平了。当然了,公司的代码封闭机制、公司不全额交金却全额缴税、公司的发展、公司的薪酬制度(额度),各方各面,只要你想跳,就没有找不出的原因。当然对于我,是比较渴望金融/互联网领域,能接触火热的业务/大数据高并发。蛋最终竟然没有选择某中度火的电商offer,是不是又暴露了我的什么特性(薪资、加班、上班地点)。。。选Offer,工资or发展 这是个问题。

PS2:刚给我进公司时候手把手教我的并且也即将离开公司的同事看了下这篇文章,修正了非故意的错字,告诉我说写的不够详细。其实写的目的是记录下这三年我大概干了些什么,未来三年有什么打算。如果面面俱到估计得写个半个月。这里也由衷的对他,对帮助过我的同事,对我的老板表示感谢,没有你们,我不可能达到现在这种水平。

猜你喜欢

转载自wwwcomy.iteye.com/blog/2078818