个人觉得学习就像是在修炼武功。
武功分内外
在进入编程行业之前,觉得程序员基本掌握了使用的语言,再学一些比较主流的技术手段,能够参与项目,就能算是合格的程序员了,剩下的就是技术和经验的累积。果然初入江湖的毛头小子就是那么单纯。
回归正题,虽然程序员自嘲是码农,说自己是搬砖的。但是我们还是有一个光鲜的名字:软件工程师或者开发工程师,毕竟也算是工程师。其中涉及到的知识很多,语言、算法、数据结构、编程技巧、编程规范、设计模式、架构、工程化、开发工具、团队协作等等。
内功心法——程序员的根基
在武侠小说中很多主角得到前辈高人毕生的功力,然后学什么招式一看就会,然后天下无敌。那么什么是程序员需要修炼的内功呢?其实就是跳出单个项目或者单种项目,各个项目中都需要的核心知识。
基于一种思想来抽象业务模型、解决问题——编程思想。(心法总纲)
我们需要管理被操作的数据,因为数据与数据之前是相互有关联的。将数据结构化,通常是编程的第一步。关于结构化数据的相关理论以及实践,需要有一个专门的学科分支或者说课题去研究——数据结构。
我们需要解决一个具体的问题,这个具体的问题如何一步步去解决,过程是怎么样子的——算法。
外功招式——程序员能力最明显的体现
空有一身高深的内力,没有外功招式施展,照样不能算高手。
我们需要将解决方案进行自动化,并以代码的形式进行交付——编程语言。(普通招式)
如何将一个抽象的模型进行编码实现,如何实现“这个功能”,如何实现“那个功能”——编程技巧。(进阶招式)
代码量已经到了一个人无法完成的地步了,需要团队分工合作才能完成了——工程化。(合击招式)
你写的代码我看不懂,没法调用或者很难调用,我写的代码你也看不懂,或者很难看懂。还怎么愉快的玩耍——编码风格/编码规范。(招式路数,不按照风格别人会觉得是小门小派,不讲路数逼格不够,也没法交流心得,不能跟大门大派相比)
问题的规模继续扩大,到了系统工程的规模了,之前学的套路已经不管用了!怎么来构建这个系统才能实现正确、安全、高性能、高可用——架构。(能够自创一套武学,开宗立派)
只有内外兼修,练武又练功才能修炼的又快又稳。
这是个人的一些看法,觉得学习就像是修炼,个人的成长也是如此,纯属娱乐。