从技术体系的角度来看,程序员的技能树应该分为三大部分,其一是基础学科知识,重点在于数学和物理,因为软件问题说到底就是数学问题,硬件问题说到底就是物理问题,所以数学和物理的掌握情况,能够决定程序员是否能够在技术领域走得更远。
其二是计算机基础知识,涉及到操作系统、计算机网络、数据库、算法设计、编译原理等内容,这部分内容对于程序员的学习能力和工作能力有非常大的影响。
这些科目虽然称为计算机基础知识,但是内容却很有深度,以操作系统为例,如果想搞清楚操作系统的体系结构,比较常见的方式是读一下Linux操作系统的源代码,这个过程还是具有较大难度的,往往初期难度要更大一些。
基础学科和计算机基础知识的掌握情况,对于程序员能够获得持续的能力提升具有重要的意义,所以计算机专业研究生的入学考试,往往也主要考察这两部分知识的掌握情况,有了这两部分知识,才能够具备在技术领域进行创新的基础。
程序员技能树的第三部分是具体的开发技术,这与程序员的具体岗位有比较密切的关系,比如Web开发岗位、Android开发岗位、大数据开发岗位等都需要掌握不同的知识结构,而且不同的开发团队在技术选型上也有一定的区别。
当前在大数据、云计算的推动下,程序员的技能树也产生了较为明显的变化,未来更多的程序员需要掌握大数据和云计算技术。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以