不知不觉已经到了工作的第十个年头,很难想象时间会消逝得这么的快,真是印证了那句成语叫"白驹过隙"。 白驹在不停的向前跑,我也从一个职场菜鸟变成了一名老兵,每当回想起以前的一段段经历时,总觉得自己应该要写点什么回顾一下。
初出茅庐
2009年是不平凡的一年,那会儿 sun 公司被甲骨文收购了。当大家都在津津乐道的讨论着 Java 的未来的时候,我才刚开始我的第一份工作。
那时去的是一家做电信业务的小公司,主要做数据分析管理方面的软件。那会公司在生存方面还没有什么问题,由于老板跟客户高层的关系比较铁,基本上产品都能卖的出去,团队不容易饿死。 但也因为是这样,公司的整个研发氛围比较"浮夸",也就是形式主义上的东西很多,一个开发部差不多四五十来人,几乎每个月都要考一次试,内容就是编码规范、算法题云云。
老员工们对这些是不齿的,所以基本都是一些校招的小兵们会拿个好成绩..其中也包括我。但是大家心里也明白,出了校园就不能再是"高分低能"一族了。何况这种事情根本算不得什么。 所幸是同事都很热情,基本也不会跟我们计较什么。除了工作上的热心帮助之外,时不时也会经常聚餐。而且那时候由于公司还有加班餐券的福利,导致我们晚上个个成了楼下真功夫的常客,就连店里的服务员都爱跟我们调侃:
"你们公司福利那么好阿,收转行的服务员吗?"
在技术方面,由于刚开始什么都不会(学校里真的什么都不会教,或者说自己除了混完学历什么都没学到..),做什么也缺乏自信。于是我偷偷下载了12G的 Java 教学视频,每天晚上看1-2小时...就这样从一个最简单的“鼠标画图” 小程序开始了我的程序开发之旅。
同事老张知道了这事,给我推荐了不少好书,其中就包括《Effective Java》、《Java编程思想》这些,也就是后来,这些书让我对开发语言有了更加深入的掌握。尤其是Effective 系列,到十年后的今天仍然是Java领域的经典必读之作。
团队里一直都喜欢贯彻学习、改进方面的事情,这跟老板的做事风格也有很大关系。我最有印象的是有一次做代码Review时,一哥们的代码被拿出来当典型了,一个if/else 嵌套了十层... 后来这哥们几个月后也离职了。老张感慨说,
"其实写代码也就是 if、else这些东西"..
那会想想也差不多如此,偶尔代码写得糟糕也是常事,只要不伤天害理不就行了。
我所在的小组负责一个了数据抽取软件,就是会将很多异构的数据源进行整合,按一些业务规则做转换处理,然后写入目标数据库。技术上采用的C/S架构,客户端是基于 Eclipse RCP 框架做的界面,后端用 SpringFramework Jetty 定制了一套RPC服务。 那会凭着自己的兴趣深入学了下Swing、JWT/JFace,也做了很多小工具,只是到后来 Java 在小程序、客户端UI方面根本没发展起来,对于这块技术的积累也没有产生更大的意义。 就从 web 前端技术在后来大肆流行的态势来看,当时的技术选择还是"任性"了点。
SpringFramework 是团队里主要用的框架,在那两年主要用的版本还是 2.5,但是关于这块并没有做过多的深入了解,而只是应付一些普通的项目上的使用。为什么?我认为大多数人可能跟我一样,被 SpringFramework 的概念绕的有点玄乎,什么控制反转、依赖注入,这种概念化的东西最终在解释上又好像很简单,甚至都怀疑是不是我根本就理解错了。
到后来发现也就是如此,Spring 框架只是实现了一层简单的对象装载能力,相比那些难懂的 EJB、Web容器来说轻量得多,很容易就被用到项目里头,跟各种开源组件做"胶水式"的整合。所以当时流行的SSH(Struts/Spring/Hibernate)三大框架里头,Spring 更像是一个"拉皮条"的角色:
Struts 做了表示层,搞定了MVC,Hibernate 做了持久层,搞定了ORM,然后 Spring 是..整合你们两个!
这里扯的有点远,只是想表达的一点是:
技术框架本身就是为了解决复杂度而生的,往往并不如想象中那么可怕。
在这个阶段,曾借助框架完成的一件有印象的事情是:
把一个 4000 行的充满 if/else 的类进行了重构,硬生生拆成了20个毫不相干的子模块。最后还受到了领导的表扬..
经历变动
尽管这家公司不大,但我所在的三年里也经历了许多令人意外的变动。
- 第一件事是高层的政治斗争,那会公司的研发副总是新上任的,其性格和做事方式上都非常强势,尤其是对于老员工一些混日子的态度特别看不惯,这点跟他非技术出身应该有很大的关系。于是在任职期间,他在公司里大搞特搞军事化管理,严查考勤,搞野外军训拓展。许多老员工都是敢怒不敢言,但由于老板从态度上更信任这位副总,很多人最终就选择了离职。
- 第二件事是研发总监的出轨,前面那件事里头,因为政治斗争的原因,公司里原来的总监也被离职了。这一位是后补的管理者,我对这个人的印象不深,只记得比较爱开玩笑,喜欢搞搞小团体。在公司里头推广了自研的一套web框架,一些核心项目的底层也给换成了这个框架。然后就是突然某一天人就没来上班了,才知道是这破事让许多人给知道了,然后是他带来的核心团队也一并走掉了,留下了一堆烂摊子。
- 第三件事跟管理层就没有什么关系,主要是公司业务的发展遇到了瓶颈,由于互联网的冲击,那会传统的软件厂商都是不好受的。在2010年底,当时华为想搞云计算大范围开放了社招,公司里头能干的人基本都跳槽过去了。而我呢,就在一次次的送别后自然而然的成为了项目组的骨干。 当然除了人员离职的原因之外,我自身的成长也还是比较明显的。
这里提到了成长,一方面是对于企业而言,我的岗位能力提升了,对于公司的许多项目、流程机制都非常了解,已经具备带新人的条件。 另一方面,在个人技能上,对于Java开发的能力有了相对全面的掌握,包括不限于多线程并发、网络编程、JVM结构这些东西。 而在 Web 开发方面,基本上用SSH 做出一个网站项目也不是什么难事。得益于数据处理软件开发的特点,因此对各种关系型数据库都有涉猎。 关于这些点,我都给写到了我后来求职的简历里面。
那么之所以后来离开,也是因为觉得在那里的成长已经停滞了。当时有个说法叫
"程序员,三年跳一跳,越来越美妙"
“当我在谈论 jvm结构和 rmi 技术时,身边的同事只会聊起八卦和体育彩票的事情,而我压根也不喜欢博彩类的东西。” 当然另外一个原因是觉得薪资太低,觉得自己应该出去看一看新机会了。
接下来,在移动互联网的大潮中,我选择了一家处于上升期的企业,开始了另一段职业上的旅程。
(未完待续)