圆桌问答 (2017 第二季)
文章转载自「开发者圆桌」一个关于开发者入门、进阶、踩坑的微信公众号
在QQ群交流中大家提出了很多关于如何进阶的问题,这里总结一下,分享出来,希望可以帮助要进阶的你。
问:设计模式必会吗?
答:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
正如设计模式的定义那样,应用好的设计模式可以让代码更加健壮、可靠且易于维护,从更长远来看要不断学习和总结设计模式在自己代码中的应用。
当然,没有应用设计模式的代码也可以正常运行,但是在后期的维护中会带来很大的工作量,设计模式的应用是一个逐步的过程,你的代码写到一定的量之后,自然而然就会接触到设计模式,并体会到设计模式带来的好处和效率提升。
国内大部分公司都是要求尽快实现业务功能,而不是实现好的代码设计,很少有人去真正关注设计模式,但是要获得长足的进步,就需要在平时的开发中不断开展设计模式的应用实践。
要全方位看待设计模式,不要陷入设计模式的怪圈,有些场景不需要考虑设计模式,简单的实现可能更好,应用设计模式可能会画蛇添足。
你可能在大部分的项目中都看不到设计模式的影子,因为大部分的业务软件都是根据模块进行的划分,一般的web系统在架构整个项目骨架的时候会用到设计模式,多采用MVC模式进行开发,单独的功能模块很少会用到设计模式。
哪里可以看到设计模式的具体应用代码呢?比如Java的JDK源码、Apache开源项目这些都会涉及到设计模式的应用,如果你感兴趣,不妨阅读几个项目的源码,你会看到设计模式在这些项目里面应用的非常频繁。阅读源码可以增加你的代码能力和解决问题的思路。
可能有的开发者要问,为啥这些项目里面的设计模式应用的比较多呢?JDK也好Apache开源项目也好都是非常通用的软件产品,非常注重代码的架构和设计,为后期的维护和发展预留必要的空间,所以从设计到编码整个过程都会特别注重设计模式的应用。
问:怎么突破自身的瓶颈?
答:首先,我们要明白啥是瓶颈?事物在变化发展过程中遇到了一些困难(障碍),进入一个艰难时期。跨过它,就能更上一层楼;反之,可能停滞不前。
其次,如何知道自己遇到了瓶颈呢?如果你做事很熟练顺手,没有任何的障碍,可能你正在处于停滞强化期,这个时期不会有大的进步,而是不断强化已得技能,成为一种熟练工;如果你做事困难重重,总是不顺,感觉自己无所适从,这个时期可能就是你的瓶颈期,如果你能通过不断的学习和技能增长度过这个时期,那么恭喜你,你已经突破了自己的瓶颈,进入一个新的强化期。
我们讲了这么多关于瓶颈期和强化期的概念,那么如何才能突破自身的瓶颈呢?
我们从横向和纵向两个方向来阐述如何突破自身瓶颈。所谓的横向突破,就是在工作一段时间以后,换个工作的方向,比如你可能做了几年的开发,不想写代码了,那么可以转向做软件设计或者需求设计;所谓的纵向突破就是向深度发展已得技能,虽然做了几年的开发,但是还是对编码比较感兴趣,那么你可以继续做下去,但是这个时期你不是简单的开发业务功能,而是转向项目架构、重构代码、阅读开源项目等更深入的方向。
无论是横向还是纵向,都可以实现自身的突破,选择哪个方向还是看个人的性格和爱好,有些人天生就是技术控,而有些人可能更擅长人际沟通,这个要因人而异。
问:如何进阶?比如Java进阶或者PHP进阶
答:做开发一段时间以后,业务功能的实现已经不成问题,业务需求过来以后基本上可以独立实现,这个时期你已经可以编写功能性代码,但是还不能编写优秀的代码,那么该如何进阶呢?
阅读源码是快速进阶的一个方法,尤其是优秀的开源项目,这些源码项目从设计到成品都是严格按照设计来完成的,而且一个开源项目的成品是众多开发高手共同完成的,代码本身就已经非常优秀了。不仅仅是开源项目,你接触到的项目源代码都可以拿来学习。
把阅读源码获取的经验和心得再次不断的应用到你自己的业务代码中,经过反复的学习和应用,你就会成为开发高手,进阶自然完成。
比如Java的JDK就是一个非常好的源码项目,可以拿来慢慢品读。还有就是Apache这类的开源组织有很多的开源项目,可以拿来阅读。不用太多,两三个项目阅读下来,你的开发水平已经不可同日而语了。PHP也有很多可以阅读的东西,PHP的很多框架如Zend、ThinkPHP等都是非常好的学习资源。
阅读源码是一个非常艰苦和枯燥的事情,只要你坚持下去,开发能力会进步的很快。
问:源码有推荐源码查看器么?
答:开源的项目都是有源代码的,不需要特殊的查看器,只需要把项目下载导入到你平时使用的IDE即可。
如果实在无法获取源码,也没关系,可以采用一些反编译工具进行查看,比如Java语言的jd反编译器等。
问:小白怎么提问?
答:首先你必须明白,大牛们只偏爱艰巨的任务,或者能激发他们思维的好问题,对大牛而言,“问得好!”是发自内心的大力称赞。
尽管大牛们有蔑视简单问题和不友善的坏名声,有时看起来似乎对新手,对知识贫乏者怀有敌意,但其实不是那样的。
在你决定向大牛们求助前,先来阅读一下「如何请教别人问题?」吧。