本文,单独针对“程序员”等IT互联网技术人员,提出自己比较认可的“技术学习路线”。
美其名曰:隆中对,技术人员心中的“隆中对”!
网上,也有很多类似“Java学习7步走”,“Android学习路线图”等某个技术领域的“技术学习路线”,写得非常好。
不过,在我看来,过于“细节”了,细节,永远也写不完!
人的一生是很有限的,不过短短百年!
回顾自己的技术学习之路,得出如下结论:技术学习是有规律可循的。
一、技术学习路线
1.从有编程经验的人员角度
第1步:计算机原理,从全局角度,了解计算机这个“硬件平台”和“软件平台”,核心部件之间的关系。
第2步:操作系统,在计算机硬件和软件之上,构建自己的“软件平台”,Windows和Mac、Android和iOS。
第3步:算法,在硬件和软件平台上,能够把现实中的问题,用计算机语言解决它。
第4步:网络和协议(底层+应用层),计算机不是孤立存在的,软件也是可以互相交流的。
第5步:编程语言(C++、Java、PHP等)。
用具体的语言,具体的算法,解决具体的问题。
数学问题、画图、游戏、任务调度、AI等。
第6步:面向对象、软件工程、设计模式,理论上的升华。
第7步:广度优先(看个人),学习多种操作系统、多种编程语言、多种协议。
第8步:框架、中间件、云平台。一个具体的问题,有多种技术参考。
理想境界:研发一个大型项目,可以画出全局图。项目进度路线图、技术架构图、任务分配图。
重在全局!
2.从初学者角度
第1步:初步浏览计算机原理、操作系统、编程语言等,不求一次搞懂,能懂多少就懂多少。
第2步:会使用操作系统的各种功能,能使用IDE。
第3步:深入学习一门编程语言。
只要能够使用一种编程语言,独自搞定1个项目,其它就都不是问题了。
第4步:学习面向对象等理论,使用编程语言的官方和第三方框架。
第5步:参照“从有编程经验的人员角度”,重新规划自己的学习路线。
理想境界:信心很重要!不要被当前阶段无法理解的技术吓住了!
3.补充说明
本文针对“所有程序员”,而非Java程序员或者Android程序员。
本文仅提出“技术学习路线”,不包括管理、职业发展等其它话题。
Java程序员,Android程序员等,可以有自己某个领域的路线图,比如“Java学习7步走“,”Android学习路线图“。
二、技术全局观
学习技术时,最迟也要在学完后,对它应该有个“全局”的认识。这项技术,出现的背景是啥,解决了什么问题,和其它技术的关系是啥。
计算机原理:CPU、内存、IO、
操作系统:线程、线程调度、网络
Linux:各种命令,Shell脚本
Windows:各种功能,很多功能,不去研究,根本不知道Mac:不怎么好用,还在熟悉中
Android:分分钟就会用了
网络协议:TCP/IP、HTTP协议
编程基础:语法、数据类型(int,string,double)、语句(顺序、选择、循环)、函数,引用和指针
编程语言:编程基础、基础语法、高级语法、官方API文档、官方框架、第三方框架
编程工具:IDE(Eclipse、AndroidStudio、HBuilder、VisiualStudio等)、记事本、
算法:排序、查找,具体领域的算法(网页搜索、AI、交通调度)
面向对象:对象、类、多态
设计模式:23+
软件工程:项目开发等理论,工期管理,质量控制等方方面面
三、技术平台和解决的问题
PC:Windows编程、Mac编程
Web:
前端:JavaScript、HTML、CSS
后端:Java、PHP、.Net、Nodejs、Python等
Mobile:手机、平板电脑(Android、iOS)
其它:嵌入式设备、冰箱和机器人等各种硬件平台,硬件平台之上往往都有个软件平台
解决的问题:
数学问题:算数求解、公式论证等
信息检索:查找论文、查找信息等
网络聊天:文字聊天、语音聊天等
网络游戏:斗地主、中国象棋、Dota等
其它:...
技术带给我们的现代文明:
千里之外,可以和老妈视频聊天。
教会了老爸QQ欢乐斗地主,老爸多了一点欢乐。
互联网上可以找到完整的学习资料,一个智力正常的人,好好利用,二十年必成大师!
四、技术清单
常见的技术,列了一部分自己熟悉的。
这部分在我看来,就是“细节”了,不在本文详细描述。
编程语言和框架
Java
ApacheCommons:Java语言编写的,一大堆工具类,编程必备,大大提高开发效率
Freemarker:模版语言,JSP、Freemarker、Velocity等一大堆都是这个“概念”!
SSM:MVC、IoC等一站式解决方案、持久层-数据访问层
JS
语法:基础语法(和静态性编程语言比较接近)、高级语法(原型、闭包、面向对象)
框架:一站式解决方案,JQuery,AngularJS,JqueryEasyUI
组件:第三方+自己实现
验证:jquery验证
表格:用自己的fupage
Ajax:Jquery Ajax,跨域,jsonp
互联网开发
分布式事务:
Base:只有思路
分布式锁:Zookeeper、Redis、Memcache
分布式Session:Cookie+Redis,Tomcat Session+Redis
服务化/SOA:Dubbo、WebService,其它框架
运维和自动化及基础服务
Jekins、Linux-Shell脚本、Maven
Nginx:服务端代理
Zookeeper:注册中心
Redis:缓存
缓存:Memcache
云服务
阿里云、腾讯云,基础硬件服务IaaS、平台服务PaaS、应用服务Saas
其它
PHP:基础语法,IDE,ThinkPHP
Node.js:异步编程,Express
Windows编程,MFC,WindowsAPI
Android:Java基础、4大组件、IDE
CSS:Bootstrap
Object-C,Python
数据库:MySQL、Mongodb
大数据:Hadoop、HBase之类的
......
五、技术太多怎么办
推荐3个方法
提前学习: 提前了解互联网上较为流行的技术,论坛博客中提到的技术,有人正在用的技术通常是值得了解的
延迟学习:不求一次性把一项技术搞明白,了解大概就可以了,实际中需要的时候,再深入学习
快读学习:读书-看博客,重点看 上下文背景+目录,而不是“正文”。
六、小结,全局观和执行力
技术学习路线,技术全局观和技术清单。
这些技术的学习顺序,他们之间的关系和重要性,是需要思考和选择的。
只要对技术学习有了个全局的认识,理清了技术所能够解决的问题。按照我们自己的目标,坚持学习下去,10年之内,
一定可以达到较高的水平。
七、相关文章
一个非常重要的值得思考的问题:
你学习技术是为了什么呢?成为自己认可或者大家认可的“技术大牛”?还是赚钱多多益善的“财主”呢?还是?