开发没有直径,但也要避免走弯路

        接触开发,从大学开始算,已经整整5年了。从最开始的c,到数据结构,到java,到数据库,到javascript,html,css,到android。作为一个开发者,大家都知道一句名言,那就是唯一不变的就是变化。需求变,技术变,公司变,各种变。这里面,我们开发更加关心的是技术的变化,以及如何去掌握新技术。

    从事java后台开发的,很多程序员对于javascript,css,html不熟悉,写着半吊子的javascript,只要能完成工作,基本都不深究javascript的相关技术。最近参与面试,面试了好几个工作1-3年的程序员,但是却对相关技术非常陌生,给人感觉就是:工作N年,为什么这么基本的知识都不明白呢,深深感到惋惜。所以最近这个问题也困扰着我,为什么工作了这么久,却还是如同一个刚接触开发的新手呢?在这里,一方面是希望给自己的学习历程一个总结,同事也希望给读者一些帮助,少走一些弯路。

在别人的框架下写代码

    进入一个公司,想必都会遇到一个框架,比如java中常见的Spring+hibernate,Spring+mybatis等,然后每个公司的架构师,也都会对这些开源技术进行集成与封装。于是每个开发者,加入一个新公司,基本流程都是:熟悉框架,写demo,进入项目组。由于项目中本身已经有相关的代码可以参考了,所以该流程一般都不会有什么问题。但是很多开发者,有个非常大的误区,就是能在框架下写代码,就以为自己掌握了该框架的相关技术了。比如面试时,面试者一般都会说,我会spring,我会hibernate,我会mybatis,但是只要稍稍询问相关知识,却答不出所以然来。其实每一个成熟的架构,都是经过多个人,费了很大的一段心血才整出来的一套完整体系的代码。虽然可能有些使用的技术不是那么的新潮,可能有些技术已经被淘汰,但是里面的一些设计思想却不会过时。
    甚至有些开发者,更会产生一种不耐烦的情绪,感觉自己每天的工作都是在copy代码。在面试时,不乏面试者说:“我在上一家公司中学习不到技术,框架怎么怎么了,用的技术怎么怎么了”。每个开发者都非常渴望学习新技术,掌握新技能,但是工作中,哪有那么多新技术供你学习,公司也不可能让你在工作时间内,花大量时间在学习技术上。
    对于在别人的框架下开发,本人从来不反对,也不反感,甚至每次接触到新框架时,都兴奋不已。因为每次接触一个新框架,都是一个极好的学习机会。最开始可能只是简单的搭建一个demo,但是只要把demo的原理摸透,那么就可以给自己的架构能力以及视野提供一个新的视觉,为自己的技术选型能力提供更多的参考。比如熟悉ssh的开发者,熟悉下ssm,才能对比出hibernate与mybatis的差异。熟悉struts的程序员,熟悉下spring mvc,才会明白spring mvc的优雅以及struts的优缺点。所以关键点就是要抱着一颗学习的心去学习,去工作,而不是仅仅局限于“可以在别人的框架下写代码,就以为自己掌握了该技术”。

忽略文档的重要性

    面试时,发现不少开发者对于一些常用的api都不熟悉,甚至离开eclipse都不能工作的情况。熟话说,工若善其事,必先利其器。这些文档,就像是我们的基本工作,我们应该熟读于心,需要使用时,快速选择,做到游刃有余。
    比如对java集合框架没有一个整体的把握,对java io没有整体把握,甚至连java lang常用的类都不清楚。实际上这些常用的api,以及相关文档,对我们开发者而言都是极其重要的。比如集合框架中,我们什么时候用LinkedList,什么时候用ArrayList,很多开发者都不知道,每次都是用同一个,问其原因,也回答不出来。比如要对集合进行一个排序,都足以让他们头疼。这类现象,就是对文档不熟悉。所以这里面,笔者强烈建议平时要多翻翻文档,多看看相关的源码。在查看文档时,推荐看英文原版。

熟悉常用的技术

    DRY原则告诉我们,不要造重复的轮子。世界上那么多的开发者,肯定有着非常多各种各种的轮子,我们要学习借助别人的轮子,让自己走的更快。
    比如大名鼎鼎的apache commons项目,比如spring,比如mybatis等,都是我们应该熟悉的轮子。笔者也并没有使用过apache commons中的所有项目,但是apache commons提供了哪些组件,还是比较熟悉的。所以在平时的工作中,都会偶尔浏览下一些常用的社区,看看每个技术的一些特性,查看时,主要关注:该组件能做什么,适合做什么,相关文档是否完善等。具体到api细节,一般都是需要使用时,才会深入学习。

阅读开源代码

    想要提高自己的编码水平,有多种途径。查阅优秀的开源代码,是一种非常好的学习方式。程序是外国人开发的,所以他们的母语非常适合开发,命名起来也更是手到擒来。我们在阅读的过程中,可以学习他人如何命名变量,如何设计类,如何设计方法等。
    当然,有时候,看开源代码也是一种挑战,因为一般开源项目涉及的类非常多,有时候会让我们无从下手。特别是一些开发经验略少的开发者,看到一大堆的类,甚是恐惧。我在大学期间,也尝试阅读spring的代码,压根看不懂!但是不要放弃,后面经过多番尝试,才算是能勉强一读。下面是我阅读代码的一些小技巧,希望对大家有所帮助。
        1.去该技术的官方,查看相关技术介绍,一般会介绍:能做什么,适合做什么,以及一些example
        2.使用构建工具,将源码下载下来,并且将该项目的example跑一跑(推荐使用maven)
        3.从example入手,配合着debug,看看那些类是核心,然后沿着这些类发散出去
        4.查看整个项目的源码包结构,猜测下每个包的作用,然后再猜测每个类的作用
        5.google该技术的源码分析,一般都会找到一些相关的源码分析文章
    经过这些步骤的折腾,基本上就足以掌握如何使用一门技术了。

阅读基础书籍

    基础的重要性不言而喻。比如我们搞java的,如果没有掌握java基础知识,想要学习spring等框架,自然是事倍功半,费力不讨好。当然,这里面的基础书籍,并不仅仅是某一门语言的基础语法。还包括:数据库理论知识,操作系统理论知识,数据结构理论知识,网络协议理论知识等。以前上大学时,这些课程学的枯燥无味,因为没有实际代码作为支持,纯理论的东西让人消化。后面随着代码的累计,以及阅读一些相关书籍,慢慢的发现,原来大学设立的课程,是非常有远见的,只是在执行力度上,有所欠缺。所以这里面,建议大家业务时间,可以看看操作系统、数据库原理、网络协议等相关知识,提高自己的内功。

总结

    1.善于利用下班时间,学习新技术
    2.挖掘能接触到的每一个架构的技术
    3.多阅读开源社区的相关技术文档
    4.多看看基础书籍,将编程知识体系化
    5.多些代码,多看代码,多重构自己的代码
    6.坚持阅读英文文档

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值