合格的程序员是怎样炼成的

合格的程序员是怎样炼成的



心净则明,心诚则灵

如果你想要一个月速成程序员,那么这篇文章不适合,如果你仅想要在IT圈“耍酷”,那你也不需要研读,如果你执着询问“退化”成为一名程序猿有啥捷径,那我只能告诉你,此路不通!

不可否认,这是个浮躁的社会,程序猿干的是个专注活,这是个多元化的社会,程序猿面对的却是枯燥、单一的界面。所以,当你踏进这个行业,就注定要“看破红尘”、“一心皈依”,一步一个脚印地走完。经过简单了解,群里大都是初级开发者,上周发布了一篇文章《「能写代码」是愚公移山,「会写代码」是女娲补天》的感悟,事后有很多读者询问,如何才能从「能写代码」进阶到「会写代码」的境界,今天我们就来讲讲如何从愚公「变性」到女娲,噢,不对是「进阶」到女娲。

开发者的几个成长阶段

在聊聊软件开发人员如何进阶之前,我们先看看作为软件开发人员的几个成长阶段,咱不分很细致的,就按常规的方法分,那就是初级软件开发工程师,中级软件开发工程师和高级软件开发工程师。对于它们各自的职责划分和定义,简单说下:

初级软件开发工程师,他们考虑的是“怎么做”

初级软件开发工程师大都是刚步入这个行业,对于编程来说,理论大于实际,由于缺乏实际操作经验,他们注重的是代码,而不是开发,也就是说他们心中没有任何架构和框架模式,只是单纯的考虑实现某项功能,用陶渊明先生的话说就是“好读书,不求甚解;每有会意,便欣然忘食”。初级程序员需要监管和督促,需要有长着地提醒和带领,再加上勤学善思,初级程序员会随着时间的推移成长,成长时间段因人而异,一旦打开思路,就会思如泉涌,进步神速。

中级软件开发工程师,他们考虑的是“为什么”

随着开发的项目越来越多,中级的软件开发工程师经验会越来越丰富,他们一般是项目开发的中坚力量,接手项目后,能对项目有一个大概的把握,能将整个项目“解剖”,迅速理清问题的关键点和难点。会用方法去构建,去解决问题。一个优秀的中级开发人员懂得使用代码来解决问题只是一种手段而不是目的,然而,他们仍然深爱着纯粹的设计,仍然渴望寻求所谓“正确的方式”来构建软件。他们有了一定的设计基础,但是对于整个项目的把握和推进 程度还不太成熟。随着时间的推移,中级开发者会陷入技术瓶颈,虽然项目不同,却感觉整天在做重复的事情。

高级软件开发工程师,他们考虑的是“是什么”

高级的软件开发人员,可谓是身经百战,浴火重生。他们在失败中总结,在成功中汲取涵养,所以他们成熟,高级开发人员已经跳出了中级开发人员深爱的复杂性,开始热衷于简单,他们制定标准,描绘出蓝图,用具体的数据告诉我们到底“是什么”。高级开发人员深知理论联系实际的重要。他们明白,世上没有所谓的构建软件的“正确方式”,建立良好软件的唯一途径是要将理论适应客户、代码库、团队、工具和组织的需求。高级开发人员理解并权衡领域涉及的一切,同时会思考如何去支持设计模式、库、框架和流程。他更像是一个领导。

进阶秘籍:学习+实践

关于如何进阶,这个问题说起来很简单,但是却很抽象,没发具体严明,需要时间的推进、需要项目的锤炼、更需要切身地感悟和交流。进阶学习的书籍很多,全部涉猎不现实,作为一个初级开发人员,那些基础课程是必知的,虽然随着开发软件升级,一些基础、底层的东西用不太上,但是这些是基础,底子搭不牢,容易出稀奇古怪的Bug,比如对于Android开发人员来说,对于像java、android相关的数据库书籍必须学深学透,比如一般的算法(算法一般情况下用处不多,一旦用到就能发挥大作用,大公司面试比较注重算法),数据结构,网络工程等这些也是基础课程,可能用不到,但是心中必须存在概念,如果忘了,拿出书来,翻翻。打牢基础后,再加上一些项目的经验,多研究和多学习一些开源项目,成长成一名中级的开发人员不难。作为一个中级的开发人员要想成长为一个高级的开发人员,要不仅仅会学习一些架构模式,还需要看 一些人文科技类和技术管理类的书籍来丰富自己的一些思想,提高自己的想象力和创造力(说的有点文艺哈),在实践中把复杂的架构模式变得简单,实用。

进阶到高级,那该怎么学习?我想大概就是用经验驾驭项目(小编不是高级,所以只能靠想了哈哈哈),在项目中丰富经验,并不断的思考技术,学习技术。到了高级阶段,你基本就不用敲代码了,中级程序员才是敲代码的中坚力量,你只需要把复杂的变简单,把简单的变具体就可以啦,说的是不是很神奇。

记住:活到老,学到老,你才不会被淘汰,谁说程序员过了35就不能干了(我想说这句话的人大概都是不爱学习的人),那是假的,因为有能力的开发者到了50也是宝贝。

“进阶宝典”目录

通用书籍:

《程序是怎样跑起来的》

《深入理解计算机系统》  

《算法(第四版)》

《编程珠玑》

《设计模式之禅》 

《大话设计模式》,《大话数据结构》   

《Head first 设计模式》 

《构建之法》

《代码大全》

《代码整洁之道》

《图解http》 

《单元测试的艺术》  

《修改代码的艺术》

Android开发书籍:

《第一行代码》  

《App研发录》 

《Embedded Android》 

《Java并发编程实战》 

《Android.C++.with.the.NDK》 

《Android开发艺术与探索》  

《深入了解JVM虚拟机》 

《Java编程思想》 

人文科技类的书籍:

《黑客与画家》

《程序员的职业素养》

《重新定义公司 How Google Works》 

《Rework》 

《Getting Real》 

《代码的未来》

《GEB》

技术管理类的书籍

《门后的秘密》 

《人月神话》 

《人件》 
Java全能学习面试手册——Java架构师进阶资料面试资料.zip 01 7道消息队列ActiveMQ面试题!.pdf 02 10道Java高级必备的Netty面试题!.pdf 03 10道Java面试必备的设计模式面试题!.pdf 04 10个Java经典的List面试题!.pdf 05 10个Java经典的Main方法面试题!.pdf 06 10个Java经典的String面试题!.pdf 07 15道经典的Tomcat面试题!.pdf 08 15道面试常问的Java多线程面试题!.pdf 09 17道消息队列Kafka面试题!.pdf 10 18道非常牛逼的Nginx面试题!.pdf 11 20道顶尖的Spring Boot面试题!.pdf 12 20道面试官常问的JVM面试题!.pdf 13 22道面试常问的SpringMVC面试题!.pdf 14 24道经典的英语面试题!.pdf 15 24道消息队列RabbitMQ面试题!.pdf 16 27道顶尖的Java多线程、锁、内存模型面试题!.pdf 17 29道常见的Spring面试题!.pdf 18 30个Java经典的集合面试题!.pdf 19 36道面试常问的MyBatis面试题!.pdf 20 40道常问的Java多线程面试题!.pdf 21 55道BAT精选的Mysql面试题!.pdf 22 60道必备的Java核心技术面试题!.pdf 23 70道阿里巴巴高级Java面试题!.pdf 24 Java 面试题经典 77 问!.pdf 25 分布式缓存 Redis + Memcached 经典面试题!.pdf 26 搞定 HR 面试的 40 个必备问题!.pdf 27 精选7道Elastic Search面试题!.pdf 28 精选8道Dubbo面试题!.pdf 29 精选17道海量数量处理面试题!.pdf 30 史上最全40道Dubbo面试题!.pdf 31 史上最全50道Redis面试题!.pdf 32 史上最全70道Spring面试题!.pdf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值