记一次观念的改变

写作背景

这两天对于如何学习编程的认识有了很大的改变,对于人生规划也发生了变化。

如何学习编程

编程能力可分为两种

  • 内功包括

    编程通用性的知识:

    算法
    编译原理
    数据结构
    设计模式
    重构
    性能优化
    面向对象编程
    数据库
    抽象化

    语言内部的共性:

    字符串处理
    正则表达式
    变量与常量
    控制语句if-else
    循环
    函数/方法
    类/对象/接口
    递归
    哈希表
    数组

    还有工具类的内功:

    构建工具 (通用知识)
    单元测试 (通用知识)
    依赖包管理 (通用知识)
    MVC 框架 (通用知识)
    代码质量检测 (通用知识)
    JSON 和 XML 设计 (通用知识)
    代码控制 (通用知识)

    IT外的相关知识:

    数学(离散数学,几何学)
    物理
    图形处理
    图形/UI设计

  • 外功包括

    各种编程语言包括C++,javascript,java,php,C#,perl,python等
    各种编程环境,.NET, WAMP/LAMP,node.js 等
    各种IDE和编辑器,notepad++,vim,Visual Studio,Sublime等
    各种快捷键,
    各种包依赖管理器,npm,composer,Nuget
    各种版本管理器:git,svn,cvs
    各种单元测试工具
    各种构建工具
    各种MVC框架

来源:知乎

以前的想法

以为学编程就是学一门编程语言,根本不知道原来需要掌握那么多的知识。

走过的弯路

从C语言到JAVA,我都非常的浮躁,因为错误的观念,导致我总急着做出一些作品来。而没有好好打基础,万幸的是,后来觉得数据结构重要,不得不去好好学C语言。

现状

C语言学了大半,剩下的等老师讲。数据结构学到堆栈部分,但仍然对如何学习数据结构一头雾水,不知道怎么才能达到要求。

暂时的想法

先把数据结构学完,再把《计算机科学导论》看一遍(要做笔记),然后再去看其他该看的书,对具体编程语言的学习可能会很慢。

人生规划

技术人的未来在哪里
这是stormzhang的一篇文章,对我的思维的确有所启发。

不能一辈子光靠coding谋生

技术发展迅速,一门语言流行时间不确定,一旦技术过时,技术人很可能面临失业,尽管他曾经工作待遇优厚。

不要拒绝新技术

这个行业不需要过时的技术。

培养多维度的能力

极少有光靠编程成功的人,那些出名的技术人大多有其他与技术无关方面的优势,比如推广自己的产品等等,所以说非常有必要培养多维度的能力。

培养可持续的技能

一门语言过时,那么对这门语言的经验也就基本没用了。为了不至于有一天优势全无,培养自己可持续的技能是个不错的选择。可持续指的是越做越好的事情,比如写作,以及其他不会过时的技能。

总结

今时不同往日,整个行业的水平提升了,混口饭吃也不再那么容易了。大公司不缺有技术的人,幻想有技术就有工作不太现实了。为了毕业能找到份工作,剩下的大学时光,我得修炼好内功,同时培养自己其他的能力,争取大学不留遗憾。