很久以前我就在想,我们这种程序员是属于理科还是文科。
写程序,当然这里只是指普通的工程开发,不涉及研究,我知道研究有很多数学。那么如果普通开发的话,文科是不是也能做,是不是做起来更有优势。
我们知道程序其实就是逻辑,那么有没有逻辑就决定了能不能做开发。从这个角度来讲,我觉得文科生是很有逻辑的,可能比理科生还有逻辑。
文科生写文章,文章是什么,其实也就是逻辑。一篇文章文笔通顺,有条理,让人看了觉得写的好,就说明其逻辑很好很容易被人接受,即便是鸡汤文其内在文本的组织结构肯定也是很有逻辑的,论点展开的逻辑肯定能让你感到很舒服,不然也不会有人买账,尽管鸡汤文的观点禁不起推敲。
所以写文章其实和写代码是一样一样的,都是逻辑。如果再放大一点去思考文学作品,那些文学作品之所以成为经典或者经久不衰,靠的是什么呢,靠的是它讲了一个复杂的好故事,好故事肯定是很有逻辑的,要讲一个好故事所需要的逻辑真的是超难的,你需要把整个世界,整个世界观,人与人的生存状态心理活动,环境变化等等全部呈现给读者,这里面把这些东西全部综合在一起还能自圆其说又不出问题,这里面的逻辑思考可以说已经登峰造极了。
好的文学作品到并不一定需要很好的文笔,比如说《三体》,其实文笔一般,但主要是想象力然后再用很精妙的逻辑把想像写出来串起来,所以一个好的故事的情节设定比文字功底要重要的多,而情节的设定和推敲就需要很强的逻辑。
还有文科生很多都有很好的沟通能力,这是比理科生的一大优势,理科生很容易陷入一个人的空间中钻研,但程序开发也是多人合作的过程,沟通也很重要。
还有文科生一般思考问题都非常全面,可以举出一二三来并且无一泄露。联想到现在的政治,语文考试,都是按点给分,答到一个点就给这个点的分数,所以思考的越全面得分越高。这在写程序的时候也是一个很大的优势,思考的越完全越不会遗漏某些功能点,这样写出来的程序bug就少。相反理科生可能是一条直线的思维,很多旁支分路他可能考虑不足。
文科生的想象力也很重要,在写程序中如果发挥想象力,往往可以出其不意提出一些精妙的方法来提高工作效率。
所以我认为,如果文科生能过了一开始的编程语言学习这个槛,以后写代码应该至少不会逊于理科生。