zoukankan      html  css  js  c++  java
  • 隆中对,程序员修炼之道,技术学习前进之路

         之前写的 一个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欢乐斗地主,老爸多了一点欢乐。
             互联网上可以找到完整的学习资料,一个智力正常的人,好好利用,二十年必成大师!
             
    四、技术清单
     常见的技术,列了一部分自己熟悉的。
     这部分在我看来,就是“细节”了,不在本文详细描述。

    编程语言和框架
    Java
    ApacheCommons:Java语言编写的,一大堆工具类,编程必备,大大提高开发效率
    Freemarker:模版语言,JSP、Freemarker、Velocity等一大堆都是这个“概念”!
    SSM:MVC、IoC等一站式解决方案、持久层-数据访问层

    JS
    语法:基础语法(和静态性编程语言比较接近)、高级语法(原型、闭包、面向对象)
    互联网开发
    分布式事务:
        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年之内,
    一定可以达到较高的水平。

    七、相关文章

    一个非常重要的值得思考的问题
    你学习技术是为了什么呢?成为自己认可或者大家认可的“技术大牛”?还是赚钱多多益善的“财主”呢?还是?
      
  • 相关阅读:
    MySql 踩坑小记
    Redux 实现过程的推演
    正则表达式的一些探索(偏JavaScript)
    [python工具] 如何使用plotly制作散列图
    使用epoll实现一个udp server && client
    python 实现一个简单tcp epoll socket
    [原创]差分放大器阻抗匹配计算+阻抗计算小工具
    将博客搬至CSDN
    [转]谈NAND Flash的底层结构和解析
    [原创]Fashion汽车定位器拆解
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462352.html
Copyright © 2011-2022 走看看