有那么一类程序员,他们的产出总是很高,遇到问题他们就像变戏法一样,能直接找到关键点,而且他们似乎很少加班。另一类程序员,在电脑前坐很久很久,不停的敲着键盘,不停的运行代码,找问题,非常努力,但经常是解决一个问题,引入了更多的问题。
成为一个专业的程序员,不可能有一个万能公式,一般都是很多方面混合出来的,不同的人很可能走了很多不同的路径。但是有一些非常常见的错误,却会极大的阻碍一个程序员的成长。这里边最常见的一个就是写程序不经过大脑。我们一定要记住:
程序是用大脑写的,而不是用手写。
初看这句话简直就是一句废话,根本就是不言自明的嘛。然而,越简单的概念,我们越容易忽视,认为他不重要,实际行事的时候却经常反其道而行。
看一下几种常见的编程方式:拿到任务,马上开写,把功能实现了再说,结果一般是,只实现好了正常流程,失败异常流程往往是在之后再打补丁,不断的修改,结果就是混乱的结构,意大利面条式的代码。还有另一种场景,遇到一个bug,上手就开始试,改改这里,改改那里,然后忽然改好了,提交之后万事大吉,大部分时候这只是修改了一个表层原因。这些行为的主要原因其实都是在用手写代码,而不是大脑。
详细点说,用大脑写代码的意思就是程序应该是在脑袋里成型的。首先,即便是上边那些混乱的写法,也肯定要过大脑的,毕竟不经过大脑,你其实很难下意识打出一行代码的,但问题就是过大脑的部分实在太少了,每次就那么几行上下文。真正高级的做法是,你能够在脑袋里把整套代码的流程推导一遍,让程序在你的大脑里运行一遍,这时候你会发现写下来会是非常轻松的体力活。有那么一些程序员几乎不加班,但是效率还是很高,那就是因为他们其实无时无刻都能在大脑里写程序。成为一个高级程序最重要的就是要有在大脑里完整的写完一段代码的能力。
最重要的编程习惯就是开始真正敲代码之前,在大脑里先把程序写好。
如果接受了大脑写代码的说法,那么你会得到一个非常有意思的结论,
语言不重要,重要的是思想。
这句话也是很多人在说,但其实不知道在说什么。我们先看一个问题,在大脑里写程序的时候,你觉得需要使用某一门专门的语言来思考吗?类比一下,这就如问你,你平时思考的时候,需要用中文来思考吗?这又是一个看起来非常简单,但很多人没有去思考过的概念,结论是不需要。这里就需要个人去深刻的体会一下了,如果你会多门语言,那么会更有能力自省出来,你会更容易发现自己其实并没有总是在用某一门语言思考。
大部分时候,思考会是一些多种东西的混合,比如思考怎么游泳,你脑海里会浮现出一个画面,有一个人在水里游泳,而不会去思考怎么用语言去描述这个游泳的动作。同理到写程序,你其实是在思考的程序逻辑和程序结构,更可能是思考方式会是这样的,你想着这里需要一块东西,里边要存一些信息,然后你会想一些对某些东西要做的操作,有时候你又会想如果处于某种情况,要怎么给出错结果,诸如此类的。
这些东西,其实很少会和具体的语言绑定,你并不太可能去用一门语言的具体语法去思考类怎么写,函数怎么写,更多的会像一种你自己在使用的伪代码。甚至有时候你可能会用图像化的方式去思考,比如一个树状结构的东西,上边挂着些东西,你用什么方式去遍历她的叶子。
不过这里边有个需要注意的,如果你没有学过一些编程的基本概念,那么你就可能无法运用它去思考,比如当你完全不知道函数是什么,那么你在思考程序的时候,就只能一条程序写到底。所以从这个层面来说,语言又很重要,因为你需要他去学得一些编程的基本概念,让你有东西可想。
总结一下:
写程序是用大脑写,而不是用手写。
用大脑写程序指的是,在动手敲代码之前,在大脑里先运行一遍你的程序。
语言不重要,重要的是思想,但你需要学习语言来获得编程的基本概念来让你有东西可想。
想成长为真正的大牛高手,除了养成良好的编程习惯,还必须将自己的视野凌驾于业务需求之上,精简强化核心技能,提升自己对语言和工具的掌握层次,才能提高开发效率,提升技能水平。