心净则明,心诚则灵
如果你想要一个月速成程序员,那么这篇文章不适合,如果你仅想要在IT圈“耍酷”,那你也不需要研读,如果你执着询问“退化”成为一名程序猿有啥捷径,那我只能告诉你,此路不通!
不可否认,这是个浮躁的社会,程序猿干的是个专注活,这是个多元化的社会,程序猿面对的却是枯燥、单一的界面。所以,当你踏进这个行业,就注定要“看破红尘”、“一心皈依”,一步一个脚印地走完。
开发者的几个成长阶段
在聊聊软件开发人员如何进阶之前,我们先看看作为软件开发人员的几个成长阶段,咱不分很细致的,就按常规的方法分,那就是初级软件开发工程师,中级软件开发工程师和高级软件开发工程师。对于它们各自的职责划分和定义,简单说下:
初级软件开发工程师,他们考虑的是“怎么做”
初级软件开发工程师大都是刚步入这个行业,对于编程来说,理论大于实际,由于缺乏实际操作经验,他们注重的是代码,而不是开发,也就是说他们心中没有任何架构和框架模式,只是单纯的考虑实现某项功能,用陶渊明先生的话说就是“好读书,不求甚解;每有会意,便欣然忘食”。初级程序员需要监管和督促,需要有长着地提醒和带领,再加上勤学善思,初级程序员会随着时间的推移成长,成长时间段因人而异,一旦打开思路,就会思如泉涌,进步神速。
中级软件开发工程师,他们考虑的是“为什么”
随着开发的项目越来越多,中级的软件开发工程师经验会越来越丰富,他们一般是项目开发的中坚力量,接手项目后,能对项目有一个大概的把握,能将整个项目“解剖”,迅速理清问题的关键点和难点。会用方法去构建,去解决问题。一个优秀的中级开发人员懂得使用代码来解决问题只是一种手段而不是目的,然而,他们仍然深爱着纯粹的设计,仍然渴望寻求所谓“正确的方式”来构建软件。他们有了一定的设计基础,但是对于整个项目的把握和推进 程度还不太成熟。随着时间的推移,中级开发者会陷入技术瓶颈,虽然项目不同,却感觉整天在做重复的事情。
高级软件开发工程师,他们考虑的是“是什么”
高级的软件开发人员,可谓是身经百战,浴火重生。他们在失败中总结,在成功中汲取涵养,所以他们成熟,高级开发人员已经跳出了中级开发人员深爱的复杂性,开始热衷于简单,他们制定标准,描绘出蓝图,用具体的数据告诉我们到底“是什么”。高级开发人员深知理论联系实际的重要。他们明白,世上没有所谓的构建软件的“正确方式”,建立良好软件的唯一途径是要将理论适应客户、代码库、团队、工具和组织的需求。高级开发人员理解并权衡领域涉及的一切,同时会思考如何去支持设计模式、库、框架和流程。他更像是一个领导。
进阶秘籍:学习+实践
关于如何进阶,这个问题说起来很简单,但是却很抽象,没发具体严明,需要时间的推进、需要项目的锤炼、更需要切身地感悟和交流。进阶学习的书籍很多,全部涉猎不现实,作为一个初级开发人员,那些基础课程是必知的,虽然随着开发软件升级,一些基础、底层的东西用不太上,但是这些是基础,底子搭不牢,容易出稀奇古怪的Bug,比如对于Android开发人员来说,对于像java、android相关的数据库书籍必须学深学透,比如一般的算法(算法一般情况下用处不多,一旦用到就能发挥大作用,大公司面试比较注重算法),数据结构,网络工程等这些也是基础课程,可能用不到,但是心中必须存在概念,如果忘了,拿出书来,翻翻。打牢基础后,再加上一些项目的经验,多研究和多学习一些开源项目,成长成一名中级的开发人员不难。作为一个中级的开发人员要想成长为一个高级的开发人员,要不仅仅会学习一些架构模式,还需要看 一些人文科技类和技术管理类的书籍来丰富自己的一些思想,提高自己的想象力和创造力(说的有点文艺哈),在实践中把复杂的架构模式变得简单,实用。
进阶到高级,那该怎么学习?我想大概就是用经验驾驭项目(小编不是高级,所以只能靠想了哈哈哈),在项目中丰富经验,并不断的思考技术,学习技术。到了高级阶段,你基本就不用敲代码了,中级程序员才是敲代码的中坚力量,你只需要把复杂的变简单,把简单的变具体就可以啦,说的是不是很神奇。
记住:活到老,学到老,你才不会被淘汰,谁说程序员过了35就不能干了(我想说这句话的人大概都是不爱学习的人),那是假的,因为有能力的开发者到了50也是宝贝。