自学编程,从此开始

上第2学堂,听有趣的编程课

课文: 《你是程序员》 (点击查看完整内容:视频+评测+讨论+……)

作者:第2学堂

优秀程序员的四个秘诀

课文题图

 

你是程序员

《编程启蒙》马上就要结束了,你坚持到现在,那么恭喜,再过十分钟,你就将成为一名真正的程序员。

但我还想啰嗦几句,在成为程序员之前,你要——

1.勇于苦中作乐

噼噼啪啪地在键盘上敲代码也许是很有成就感的,但代码有问题时要调试,要找出那隐藏在千行万行代码中的错误,就是痛苦的。不说实际工作中,就单是本书中的例子程序,你自己写一遍然后要调到没问题,也需要花大力气。当你屡调不通,你可能会怀疑IDE(代码编写的集成环境)有毛病(会有,不少呢),怀疑编译器有错误(这个极低可能),怀疑调试器是不是抽风了(偶尔),怀疑本课程是不是写错了(会的),甚至开始怀疑人生。但多数时候,还是你自己的错的可能性居多(大概在99%),面对自己的错误要纠出来却有找不到,没有一点苦中作乐的精神和方法,是很难熬的,特别是夜深人静的时候……

怎么作乐法呢?需要毅力也需要想像力。比如,夜深人静,在熟睡的家人一片安宁的呼吸声中,你泡一壶浓茶,或点燃一颗烟,在茶香茵蕴或烟气缭绕中,把查找代码错误的过程当作是你寻道具,斗怪兽,或者找定情物的一个过程……

这不是传说中的“YY”吗?不,这叫“现实主义”与“浪漫主义”的伟大结合:我们要用现实主义来写代码;用浪漫主义去找错误。

2. 乐于自省自嘲

还是找错误的事。软件界有一名言:“不存在没有BUG的程序”,其背后意思摆明就是:“没有不犯错误的程序员”,更通用一点是“是人就会犯错”。

现代的程序员基本是团队作战。一个系统由许多人写许多模块组成,并且还需要以过测试人员检测和实施人员部署上线。当系统出错时,好的程序员应该首先推想是不是自己负责的部分出错了,努力辛苦地重新检查自己的代码。如果你所处的团队每个人都这样做,这个问题往往很容易就被发现了。反过来总是快速断定是别人的错,不想复检自己的工作,或者总等别人检查之后,实在不行了再来查自己的代码,这样的团队最终是人人都累而且工作效率低下。

不仅是在发现错误之后,要总是“枪口对准自己”,在要发布自己所写的程序之前,一定要反复的,地毯式地自我检查过去,而不是看到大致功能已经实现了,就直接了当地扔给其他模块使用,或扔给测试人员检测。程序员对自己写的代码要到一种“洁僻”的程度,而“洁僻”在许多人看来,就是这个人何止是自省,简直是在自孽。

接下来说说“自嘲”。哪怕在代码检查上自省了,但程序仍然还是有可能在发布之后,会有你犯下的错。被人发现,请记住,这是最值得开心的事:别人帮你找出错误。所以不要死要面子觉得对方是在找碴。反过来责难对方是不是“使用方法不对?”。学会自嘲就不会那么累,程序员互相找对方的错是一种很好的工作方法——看自己的代码有时确实是越看越喜欢而已。发现某人的代码犯了个错,并且还是个低级错误,于是一群同事围而观之,无恶意地品头评脚,呵呵一乐,这是一种健康的程序员文化,在这种文化之下曝光自己或他人的代码错误,是其乐融融的事。当然,我强调的是自嘲,而不是嘲笑他人。

3. 惯于理性逻辑

一段程序就是一组指令有逻辑的组合。所以很好理解:做事比较有逻辑的人,写代码也就比较少出错。但我想强调的是:成为程序员之后,长期的编写程序反过来会让一个人的的逻辑性越来越强。编程真是一件神奇的工作,它一方面让程序员变得富有想像力,另一方面又把程序员锻炼得像机器人一样理智,富有逻辑性。

初学程序人,最容易犯的逻辑问题之一,肯定会有一个:那就是前面讲到的怀疑一切:当程序出问题先怀疑别人用法不对头,再怀疑机器有问题或者系统中毒,再怀疑C++标准库有错,再怀疑编译器有问题……最后怀疑是不是今天的黄历上写着不宜编程等等。如果用这些来自嘲,相当好,若是慢慢当真了,那肯定离合格的程序员渐行渐远。

4. 善于表达沟通

有一种见解:程序员是很闷的人(以至于有些女孩子一直在犹豫要不要嫁给程序员呢)。其实,想像一下,一个拥有浪漫主义,乐于自嘲,又理性讲逻辑的人,必然也是一位有良好沟通能力的人。

表达与沟通能力,不仅用于谈恋爱,也用于团队合作。程序员之间,可以通过代码交流,文档交流,但最终还是需要人与人之间直接交流。一个程序员可以在别的场合非常的闷,非常的安静,那是他的性格,但当提到程序,特别是自己的程序,如果说不出个一二三四,别以为你只是成不了团队领导,事实上是你很难在团队中生存。

5. 出发赠言

先送上C++ 之父对程序员的说的一句话,与已经或即将成为同行的您共勉:

“在C++设计中有一条指导原则,那就是,无论做什么事情,都必须相信程序员。与可能出现什么样的错误相比,更重要得多的是能做出什么好事情。C++程序员总被看作是成年人,只需要最少的看护。 ”

所以,课程结束,我想对大家说的一句话就是:

学C++,做成年人。