您的位置:首页 > 职场人生

隆中对,程序员修炼之道,技术学习前进之路

2016-07-16 09:58 393 查看
之前写的 一个IT工薪族的4年奋斗成果 这篇文章,更多针对白领、互联网从业者、技术人员等广泛人群提出来的“职业发展路线”,更准确的说法应该是“能力模型”。

本文,单独针对“程序员”等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欢乐斗地主,老爸多了一点欢乐。 互联网上可以找到完整的学习资料,一个智力正常的人,好好利用,二十年必成大师! 四、技术清单
常见的技术,列了一部分自己熟悉的。 这部分在我看来,就是“细节”了,不在本文详细描述。
编程语言和框架JavaApacheCommons:Java语言编写的,一大堆工具类,编程必备,大大提高开发效率Freemarker:模版语言,JSP、Freemarker、Velocity等一大堆都是这个“概念”!SSM:MVC、IoC等一站式解决方案、持久层-数据访问层

JS语法:基础语法(和静态性编程语言比较接近)、高级语法(原型、闭包、面向对象)
框架:一站式解决方案,JQuery,AngularJS,JqueryEasyUIhttp://bbs.jeasyuicn.com/forum.phphttp://www.kendoui.com/http://jqueryui.com/demos/http://www.jeasyui.com/download/index.php
组件:第三方+自己实现 验证:jquery验证
富文本:http://kindeditor.net/index.php 图片上传: http://fex-team.github.io/webuploader/对话框:https://github.com/aui/artDialog日历:http://www.my97.net/表格:用自己的fupage
树:http://www.ztree.me/v3/main.php#_zTreeInfo轮播图:http://www.lanrentuku.com/down/js/jiaodiantu-989/api.html#sub_table_01Ajax:Jquery Ajax,跨域,jsonp
互联网开发分布式事务: TCC:Java框架 https://github.com/changmingxie/tcc-transaction Base:只有思路
分布式锁:Zookeeper、Redis、Memcache
分布式Session:Cookie+Redis,Tomcat Session+Redis
服务化/SOA:Dubbo、WebService,其它框架

运维和自动化及基础服务Jekins、Linux-Shell脚本、MavenNginx:服务端代理Zookeeper:注册中心Redis:缓存缓存:Memcache
云服务 阿里云、腾讯云,基础硬件服务IaaS、平台服务PaaS、应用服务Saas 其它PHP:基础语法,IDE,ThinkPHP
Node.js:异步编程,ExpressWindows编程,MFC,WindowsAPI
Android:Java基础、4大组件、IDECSS:Bootstrap
Object-C,Python
数据库:MySQL、Mongodb大数据:Hadoop、HBase之类的
......
五、技术太多怎么办 推荐3个方法 提前学习: 提前了解互联网上较为流行的技术,论坛博客中提到的技术,有人正在用的技术通常是值得了解的 延迟学习:不求一次性把一项技术搞明白,了解大概就可以了,实际中需要的时候,再深入学习 快读学习:读书-看博客,重点看 上下文背景+目录,而不是“正文”。
六、小结,全局观和执行力 技术学习路线,技术全局观和技术清单。 这些技术的学习顺序,他们之间的关系和重要性,是需要思考和选择的。 只要对技术学习有了个全局的认识,理清了技术所能够解决的问题。按照我们自己的目标,坚持学习下去,10年之内,一定可以达到较高的水平。
七、相关文章
1. 一个IT工薪族的4年奋斗成果2.定义和分析问题,往往比解决具体问题更重要3.如何在三个月内获得三年的工作经验4.考上好大学,然后进入IT行业是穷人孩子晋级中产的唯一出路?5.技术兴衰与开发者的技术发展路线
一个非常重要的值得思考的问题:你学习技术是为了什么呢?成为自己认可或者大家认可的“技术大牛”?还是赚钱多多益善的“财主”呢?还是?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: