没有这些能力能做好程序员吗?

经常想的一个问题,在我审核代码的时候,一般程序员都或多或少的犯了一些毛病,而这些毛病的根本原因是因为缺少了某些能力导致的,到底原因是什么?下面我做了一个初步的总结。

识别

识别包含几个概念: discover,identify,naming。首先你需要在混沌中发现有用的东西,明确识别它,并赋予它一个准确的名字,以区分开不同的概念。识别能力是下面其他能力的基础。

没有这些能力能做好程序员吗?_第1张图片

归类

当你能在混沌中识别到很多不同的东西以后,你需要把东西归类(classify),作初步简化。什么东西应该放在一起,什么东西绝对不能放在一起,就好像垃圾分类。实际上归类需要看你需要达到什么目标,归类方式和结果会截然不同。通过归类,可以形成一定的知识体系,简化一些本来复杂的东西。
没有这些能力能做好程序员吗?_第2张图片

抽象

从多个实例中,能够识别出当中的普遍性,就是抽象(abstraction)。抽象能进一步简化你的东西,适当的抽象不至于信息大量失真,影响其实用性。

没有这些能力能做好程序员吗?_第3张图片

预判

对未来发展有一定的逻辑推敲能力(prediction),并非盲目猜测。对于未来可能发生的改变能有识别能力,并有所计划和准备。有可能发生的事情,简单的是能否概括所有出现的情况,复杂的甚至可以扯上统计学。一副扑克抽一张,这大家都知道可能的结果,但若调用一个函数,有多少人认真的分析过(或者认真看过文档)会有什么可能的结果呢?

没有这些能力能做好程序员吗?_第4张图片

总结

程序员本质是要理解这个复杂的世界,并作出适当的简化,以程序的方式表现出来。

以上所描述的能力,都是基础教育的一部分。在儿童时期没学好这些能力,长大后再学习不知道会不会比较困难呢?

你可能感兴趣的:(笔记,杂谈)