|
如果您在【技术道路上】没有困惑、迷茫过,请忽略此文(对你来说,我写的可能太弱了。。)
工作三年左右的时候(无论所在公司大小),公司内部的开发框架已经使用熟练,各种开源框架、开源工具也用了不少,很多技术上的问题不做不了解,做的时候一查就知道(感谢百度,谷歌,和愿意分享的大牛们)。刚毕业入职时,那些前辈差不多手把手的教你写代码、细心的帮你走查代码的事情,在此时已经不复存在了,也许这是你已经成为新人眼中的前辈了,但是自己的技术停滞不前了,广而不精,没有方向了,于是困惑了、迷茫了。。。
三年前,作为菜鸟,脑袋中知识少的可怜,工作中,大量的问题都是新的,源源不断地塞进自己的脑袋,很容易感觉自己在提升。
三年后,自己由菜鸟变成一个可以独挡一面的码农,工作中绝大部分东西都是自己做过的,可能是真的没有提升了,或者提成的很慢,慢到自己无法察觉。在这个竞争激烈的时代,自己开始没有了安全感,看着周围人的不断进步,于是更加困惑、更加迷茫。。。
能有这种感觉,你应该庆幸,因为你是在思考的,思考自己的人生,自己未来,而不是昏昏沉沉的混。
那这个阶段该怎么做呢?
我与大家分享我的切身经历,因从事的行业、工作的具体内容的不同,不可能适合所有人,但是寓意的道理是一样的,希望起到一丝共鸣
因为想继续从事java开发的工作,提高自己的硬技能,于是我问了自己几个问题。
1.既然会了很多各种各样的工具,对这些工具,是否有自己的总结,自己的看法,自己的改进?
于是,我整理自己的开发包,同时开始写博客,记录自己对一些工具的使用,在网上与大家分享自己所学,总结自己遇到的坑。慢慢的发现,在写博客的时候,对工具的使用更加深入理解,对某些感兴趣的点,时而看看源码,对比不同的实现,能学到很对大牛的编程技巧,设计思想。
2.单个工具的使用都整理了,那么是否整合出自己的一套开发框架?
(如果公司的开发框架够好,那么是怎么实现的,源码就放在你眼前,自己看吧,会有不少收获,也许你还能提出改进意见)
记得当年刚入行时,从事JavaWeb开发, 公司使用struts2 + hibernate + mysql,公司对其作了一层封装,当时遇到一些复杂功能,用hql原语真的很痛苦(当年的我确实很弱),需要找前辈别人搞定。
随着技术的发展,我自己偷偷摸摸的整合了velocity + springmvc + spring3 + mybatis(也许现在的你会说,这些我都会,太基础了),
整合的过程中,对框架本身及多框架间的配合使用,有了深层次的理解,而不是停留在使用层面(相信,你懂得!)。
良好的框架整合还要包裹工程代码结构,于是引入了maven,优化打包方式(轻松区分本地、测试、生产环境),
同时引入了eclipse的jetty插件,方便本地开发测试(之前用的是tomcat,不够方便)。
后来又引入了代码检查工具:Findbugs 和CheckStyle(他们很容易集成到eclipse和hudson中),可以做到团队代码风格基本一致。
当我用PPT在团队的分享会议上展示给大家我“偷偷的”学习成果时,小伙伴们都惊呆了(可能是我们公司没那么多大牛)。
3.既然开发框架都搞了,是否能有套生成器,生成基本代码(增删改查)?
于是使用基础的jdbcapi读取数据库表信息,使用velocity 模板引擎,重构了一套,
当我再次用PPT演示给大家时,小伙伴们都惊翻了(之前除了CTO,没人会搞这个,其实一点都不难,就看你是否琢磨)。
4.框架玩的差不多了,它真的够好吗?
于是借鉴很多大牛的经验,将架构中模板引擎部分velocity 去掉,前端使用纯html css js,用js与服务端通信,返回json。部署时,静态的东西都挂在ngix下,动态的东西放在tomcat中。页面开发人员(会css,js)和服务端开人员各司其职,再一次提高了开发效率。
5.当访问量上来的了,发现页面动态数据访问还是有些慢?
于是在不做负载均均衡的情况下, 学了jvm的内存机制和gc调优,最大的优化单机能力。
其实这个时期想提升自己并不难,已经有了一定的技术基础,好多东西就在你身边,只要你留意,“路转溪头 忽见”。
很多人不是从事JavaWeb开发的,不是从事互联网开发的,那么不妨也问问自己一些自己工作领域的问题,找到自己拿手的一点作为切入点,循序渐进,迟早会“豁然开朗”。
在国内做开发,大多数都是为了多赚些生活费,很少是为了爱好而从事这个 "加班没数","调休有限"的工作。
既然不能爱一行干一行,那就干一行爱一行吧,不然身在曹营心在汉,肯定是没心情研究这些的。
我相信:提升自己不一定带来薪水的提高,但是不提升自己薪水一定不会提高(排除拼爹、拼干爹等关系户),在你厚积薄发之时,你会庆幸自己当年不断地积累。
程序猿的技术大观园:www.javathinker.net
|
|