你的位置:首页 > Java教程

[Java教程]旧历程的总结,新起点的开始


          终于决定开始用博客的方式给自己这些年的经历和教训做一个回顾和总结。虽然也已年过而立,直奔四十而去,看似有些过于太晚,但是我还是需要将自己之前9年工作经验和一些技术积累做一个梳理,也为了自己下一阶段的职业生涯的发展,也给他人分享一下其中的经验,希望能带来一些帮助吧.

          从我的大学说起,因为种种原因,我选择在苏州本地读大学,没有去上海。从现在的发展路线上来看,这个几乎就是我人生中最大的一个错误选择,直接导致我现在的各个方面都落后于自己的预期。我觉得一个更好的学校,或者一个更大的舞台对于自己今后的发展太重要了,职业生涯的起点,还是越高越好。如果你是个学生,很有能力,现在在一个并不出名的学校,但是有很强烈的意愿想做些大事,实现一下自己的价值,一个路子就是再上一个名校的研究生,虽然现在研究生扩招了,有些水,虽然第一学历更重要,但是一个名校的硕士,还是可以保证你在职业生涯的起点上,获得一个不错的位置。

         其实这些东西,应该在大学里由大学老师来教授,或者由辅导员来告诉你给你定位,在中国父母这一辈经历过高等教育的并不多,所以有时父母并不一定能很好地替子女讲清这些道理,让子女在大学中更有目的性地去学习,去成长,所以学校应该肩负起这块责任,但是能做到的很少,所以我觉得这方面中国大学教育缺失了很多。缺少了这个早期提点,那只能寄希望于学生本人的成长和领悟了,这个相对来说会比较晚。

          07年7月,我开始正式工作,在编程这方面,我其实可以算是培训出身。因为之前是数学专业,并不好找到相关的工作,所以想培训一下,至少找个编程的工作,并且培训机构可以推荐就业,其实当时,这个是主要抓住我的点。所以我报了个课程,Java学习,现在看来选择Java倒是挺正确的。培训内容我觉得很简单,我都是提前自学好,上课时确认一下老师讲课的内容,所以学得比较轻松,也得心应手。现在回看这段经历,其实还是对外面的世界了解太少,才有这样的想法和行动。现在有很多企业,在各个时间段都提供了很多的实习岗位,哪怕虽然你不是软件开发相关的专业,但是只要有这个基本技能,企业一般都很乐意给你提供实习的岗位,并且都给胜任的实习生提供了转正继续工作的机会。所以只要自己先把开发基础学好了,专业无关紧要,找工作并不难。

          第一份工作是在苏州(就是推荐的。。),在一家做移动互联网搜索引擎的公司,做一些内部系统的开发,在我看来这都是一些很简单的小系统,难度并不大。不过在那时也显示出了自己学生气的一面,我觉得那个系统用的技术比较旧,或者说没有那么旧,但是和我所学的并不相符,所以心里很别扭。10个月之后,我提出要离职,一方面和这个有些许关系,另一方面,我想去上海,去更大的舞台试试。

         这次离职还有个小插曲,我提出要走,不过公司还是想留我的,给我提出可以换到另一个组,做一些和搜索引擎更相关的,更底层的内容,以及大数据相关的(Hadoop)。我当时拒绝了,原因是我觉得自己不是科班专业出身,基础不好,怕做不来。回看这个选择,当时真是因为自己无知(其实也和非计算机专业有关,毕竟见识太少,当然现在通过各种学习已经补课回来了…),失去了一个了解一些前沿技术的机会。当时是08年初,要知道Hadoop在国内要到三四年之后才开始被接受并且火爆起来,错失了一个可以在一个点上深入发展的机会。现在想来还是有些遗憾的。

         来到上海,第一份工作其实是个外包工作,和Vendor签约,去电信工作。刚进去两周,就把我派到江西出差了。项目经理人挺不错的,带着我做做一些本地化的改动,当时条件简陋,开发流程也没有那么规范,可以直接接触到生产环境,不过每次操作都是要小心翼翼的。这个生产环境,可是和江西全省114话务平台相关的,有一点问题会影响很大。这让我从此对于生产环境都抱有了极大的警惕性。

         做了大概一个月,然后被派去江苏出差,作为实施人员,去当地支持项目的上线。不过可惜不是苏州,而是去连云港。在那边是一段挺奇妙的经历,我觉得自己是不断在放心安稳和担心受怕两种状态间切换。比如说刚去第一天,说明天,某某功能就搞定了,可以上线了,如此我的心会安稳些了。第二天突然又发现这个还有问题,或者说又出了新的问题,又开始担心,不知道什么时候才能真正搞定,如此往复循环不断,从我来到离开,2个月都是如此,这种心理状态很不好受。不过我在这里还是有收获的,搞清楚了这套系统。不过就是搞清楚了,所以自己心里更有一些担心,因为我觉得我们的系统做得没有之前的老的好。虽然替换的原因多种多样,但我只是简单理解话务员使用起来会没有以前的那么顺手,所以我和那边话务班长表达了我的担心,她倒是挺看得开,还在安慰我,她们只是使用这些系统来提供服务,系统变了,她们也相应地变换一下工作方式而已,这个并没有什么需要担心的。这点给我了一些感悟:有时环境无法改变,但是需要改变的是自己的做事方式;在这种环境下,用最好的方式把事情做好。这才是一个企业要做的事情。这一点和在学校,在研究所,是不太相同的。

         两个月之后,我回到江西,身份变成了项目经理,因为之前的项目经理被调去海南了,可能我在江苏这边做得还不错,所以让我来带江西的项目了。我第一个反应是拒绝,我还没有这方面经验,我怕做得不好,给系统和公司带来不好的结果。不过公司已经决定了,我也只能赶鸭子上架,一方面先带着,另一方面和公司说是赶快再派新项目经理来。这段时间我只是简单维持着这边的系统运转,同时有些全局性质的系统更新会从总部拿到代码合并到这边,做一下系统升级,并没有接受太多客户的新需求。提起这段是我觉得自己,当时比较倾向于做自己有把握的事情(其实现在也是,我做的事情要让我可以看透,有了认同感之后,我才能发挥自己更大的潜力去完成),能做得了的事情,对于新角色,有些抗拒,这点并不一定是好的。如果现在让我去承担新角色的话,我会在把风险控制在一定范围内,然后尽可能发挥,来把这个事情做好,这点我觉得很重要,不论对谁来说,都要勇于发挥,但是要懂得度。

         到了09年下半年,我觉得在这边对于自己技术方面的发展是个瓶颈了,并且也向往着去其他行业发展,决定换个工作。当时拿到两个offer,不过也都还是外包,一个去国内一家很大的金融集团,另一个是去一家外企金融集团的上海研发中心。这里说下我对外包的看法,其实对于外包,需要鉴别,不必对所有外包都有很强的抗拒心理,外包就一定不去。在个人某个发展阶段,外包是可以考虑的,环境是外在的,真正有利于自己成长的还是项目中能带给你的,一般成熟的企业,包括外企,都使用外包上面比较有经验,工作内容都相似,不会只让外包做些脏活累活,并且也都提供了途径可以转入,所以我的看法是,正规外包不用抗拒,还是以看是否能符合自己的发展规划来定。

         换了新工作,算是对金融入了行,不过也只是一部分。广义的金融太大了,银行券商保险,还有其他一大堆,我接触到的只是投资银行(对应国内是券商),所以这块也决定了我现在还从事着相关的内容(行业经验不太舍得扔)。

         在这边,接触到了比较规范的开发环境,和比较规范的开发流程,这对开发者来说比较重要,特别是对于刚毕业生来说。在学校里自己写程序可以随意所欲,但是作为软件工程,编写企业应用一定要有一个规范和流程,包括源码管理,开发流程,测试,部署上线,运维等,否则以后的可维护性会大大降低。对于业务知识也了解一些,这里有一个统一的e-learning的系统,可以方便地学习各种业务领域知识,对于行业新人来说是个很好的了解和熟悉的机会,不过更加深入的业务知识还需要自己不断找资料,深入学习。开发方面,自己的技术能力只是有了一定的提升,因为所用技术比较老旧,并且对于新技术的接受程度没有那么快,所以并没有能够在项目中实际多接触新的技术点。不过自己从一个比较junior的开发者升级到了比较senior的开发者,不仅仅包括编码,也会自己开始独立进行一些设计和架构工作了,还负责了java方面的一些部署管理的工作。

         在这边的工作算是持续了挺长时间,将近4年,是我至今最长的一段经历,后来还是离开了,原因有两个:一是这里我找不到适合自己更好发展的角色,二是因为自己经验有限,有些不规范的地方,无从下手来改善,让我觉得有心无力。最终还是离职去了另一家外企投行的IT部门。

         在这家外企投行的IT,虽然我只做了一年半不到,但是对我现在的生涯影响却很大。我在这里体验到了完全规范,敏捷的开发环境和流程,这里有着完善的系统技术架构和体系,在开发过程中,整体的流程非常顺畅,从这里学习到了很多。任何时候我对这段经历都还是抱着感激的态度。在开发者的成长经历过程中,最好还是要经过一下类似的规范流程的洗礼,而且越早越好,我很羡慕当时其他进来的一些毕业生,从开始工作之初就能有这么一个很好的地方。经历过这些,以后不论在什么地方,你至少知道了一个很具体,可参照,可操作的标准规范和流程。其他地方也有,则可以进行优化对比,如果没有,那自己也可以建立这些,这对企业开发都是很有好处的。如我之前的项目组,我虽然觉得很多地方不好不是那么规范,但是就是有心无力,没有办法解决这些问题,这就是这方面经验缺失的表现。

         一年半之后,我还是离职,去了一家国内券商的IT部门。原因其实和大多数外企类似,技术提升不大,以及自己从事的是非核心业务系统,而且比较熟悉,按部就班的我不太喜欢。我自己总想去一个更有挑战性的地方。

         在这家国内的券商中,虽然其排名很高,而且在国内券商IT中投入与表现均在前列,但是对比国外投行的IT,这里还有很大不足。首先就是大量的供应商系统,极少的自主研发。带来的问题就是系统质量并不高,同时非常依赖厂商,业务的实现与厂商极度绑定,并且业务的保密性无从谈起。最终如果想要在国际金融市场要分一杯羹,靠厂商实现系统肯定不现实,还是需要进行自主研发,特别是核心业务系统。另外的不足就是IT基础设施的建设比较薄弱,各个项目组得需要自行负责数据库,中间件,消息总线等等其实可以统一管理的东西,当然这个和供应商系统多也有很大的关系。

         我所在的组至少还好些,算是完全自主开发,厂商只是提供人力资源外包。不过之前系统的各种坑,已经让业务部门吃了不少亏了。我到了之后就是开始在业务部门指导下,对一些核心模块进行改造优化,我自认为这块完成得还是不错的,新模块的稳定性和性能均有了很大的提升,自己也深入思考了一些架构设计,业务设计以及技术实现等等,收获还是挺大的。本来以为自己就是做做架构设计和具体开发的工作了,能把这边系统旧貌换新颜,做得更好些。不过之后前leader离职了,所以得由我接手了团队,继续进行项目的开发和发布。在变换了角色之后,其实应该是新增了(因为我自己还要做架构和开发),思考问题的角度需要更高一层,从整体上进行开发规划。虽然带领团队交付版本这整理过程中琐事不少,不过自己也接触到了一些团队管理经验,手中的权限也会更大一些,可以将之前的一些想法实践一下。一切看起来都挺好,项目计划做得也挺长远,规划了未来1年,3年,乃至5年的,不过种种原因,现在无法继续进行了,这也算是我人生中的一大憾事了。

          所以至此,经历了Java开发9年,C#开发3年,架构也做过,开发也做过,团队管理也做过,业务上经历有移动互联网,电信,金融券商,公司类型上也经历了民企,国企,外企各个类型,也是比较丰富的一段经历了。虽然跳槽次数不少,但其实我都是朝着一个更大目标而去,都是因为我希望找到更大的挑战而去。现在,我需要好好总结思考自己从业这些年来的经历,希望在这个经历基础上,让自己能更好地思考一下未来的发展路线。这些经历如果有其他人看到,能从中借鉴收获一些,那也是更好了。

          以下是自己这些年来一些感悟点,以后可能就这些再展开一下:

                  明确自己的职业发展路线规划,可以不断调整(越早开始越好)

                  合适的技术最高效地实现业务(技术新旧不是标准,高效合理实现业务才是)

                  专精一门,适当扩展(语言精深入一门之后,再扩展到其他的会很有收获)

                  对于生产环境需要有一定的戒心,在此之上的操作一定要谨慎

                  遵守规范,优化规范,制定规范(也是开发者的成长过程,也是开发的自然规律)

         这只是一个开始,今后还会将开发过程中的一些知识点写于此,希望给自己的开发生涯做一个不断的积累总结,好鞭策自己不断前行。