当然存在。
据我所知,什么样的人最不适合学编程呢?
就是同时满足以下几点:
同时满足这四点的话,基本可以认为是不适合学编程了。
反过来,如果这四点都好的话,绝对适合学编程。
为什么呢?
其实第四点最重要。
存在,而且不少。编程看似要求不高,但属于全方位的。认为编程简单、傻子都能学都能做的,还是有点太偏颇。类似于某些落后地区初中毕业就能当老师教小朋友,但不代表教小朋友是个简单人人都能做的活,因为仅仅能去教,不代表能教好。
我以前有个室友,很聪明,英语非常好,理工科出身,但非常不适合编程。原因是没有耐性。他的原话说:“我学过,一旦不编译我就会非常抓狂,很快就生气火大,然后就放下了”。他是我见过的少有的明知道CS好也不去改行的,我也非常赞同他的选择,因为他确实耐性较同龄人差。
所以我认为最关键的一个特质其实就是耐性。耐性在一开始学连括号都数错的时候最关键。当然你也可以说任何工作都需要耐性去磨,但计算机的枯燥的确需要不少的耐性来中和和适应。
我学计算机的早期,因为个人原因耐性也很差,所以效果其实不佳。后来经验多了也可能耐性增长了,效率就提高了很多。
另外一个能力是读书和应试的能力。计算机的知识大部分看起来不那么困难,但细节极多,知识量非常大。这时候读书的速度和效果就决定一个人在计算机行业的发展速度了。计算机为什么是寒门的首选,就是因为寒门大概率都是死读书向上爬的,所以读书和应试能力一流,这对学计算机是最好的支撑。
以上两个能力是我认为的必须的:耐性和学习能力。下面是一些“没有也能活但走不远”的能力。毕竟当码工也分三六九等,人人都想出头是吧。
英语当然重要。英语是区分一个码工是否国际化的关键能力。英语不行,不能阅读英文文档,基本上只能靠公司和汉文资料,学习后劲不足,也缺乏去国外当码工的机会了。如果只当一个普通的底层码工,可能用到的英文的确不多;但越往上走越需要。
智力。智力不高的人学计算机如果刻苦努力认真,效果还是很好的。但是随着经验的增长,会不断跳槽到更好的公司,会发现周围的人的智力越来越高。如果自己智力不行,会感觉很累的,因为一个公司的气氛和效率归根结底是人带来的。
记忆力。记忆力强的人学计算机很有优势。我个人甚至认为记忆力的作用远远大于逻辑和数理能力。本质上,计算机科学和工程是纯人类发明的、非自然的,所以人工的痕迹很重(类似于会计等专业),所以记忆力强可以记住很多东西,直接用。逻辑和数理是可以慢慢加强的,这方面资质弱的人也可以在工作中逐渐理解,但记忆力是直接派上用场的,很多时候“我知道这是正确的解法, 但不知道为什么”其实更有效。
最后,“不适合编程”某种程度上是个伪话题。很多所谓不适合编程的人实际上是技能更适合做其他事情,有更高的收益。