做一个平庸程序员,are you scared?

背景:

一个平庸程序员的自白。近期看到的少有的好文,细细品味,感触良多,思来想去不知如何与作者交流。无论从工作经验,还是从境界,都与原作与译作有一段差距。但很多人都会有相似的经历,说出自己的故事,彼此交流或许是最好的途径。

题记:


编程在外人看来绝对属于脑力劳动,至少从大学教育来看软件工程、计算机专业都是需要很强的理科功底的。然而看看帝都上地、中关村深夜的壮观景象,你又会觉得编程是体力活,要不怎么会被戏称为“码农”呢(当然我觉得“农”这个字用的有点歧视,诸如农民工,农民,他们都是靠自己双手和劳动生活的、最淳朴的人,比所谓的商人高尚n个数量级。怎奈现实“拜金主义”大肆其道,崇尚金钱至上,我等又能奈何呢)。即使程序员自己,想必都时常迷茫犹豫。下面从一个程序员的角度,谈谈自己的感受,欢迎拍砖!


这里写图片描述

编程与能力:


从小就对数学情有独钟,参加过大大小小无数的竞赛,成绩也都很满意,自然而然也就建立了那份自信。还记得当时初中老师的一句话“学好数理化,走遍天下都不怕”。于是就从数学开始一步一步从容的攻克了物理,化学,还有今天要说的编程(计算机)。

最开始接触计算机(那时还没有编程,或者说自己还没有形成编程的观念)是从背ENIAC开始的,再到指法练习,最后才是“波,啊,丝,一,词”BASIC。还记得当时为了一个“汉诺塔”,整整头痛了一个周,最后磕磕绊绊的写完了。

从起初自己一个人的痛苦训练,到在大家面前的优越感,渐渐的觉得自己就是那电影里的黑客,无所不能。别人在玩windows时,总喜欢dos那黑黑的背景;别人在用IDE时,总特立独行的使用文本编辑。说实话其中大多是装逼的成份(现在来看,无论IDE还是文本编辑,能提高编程效率的就是最好的),总以为要别人玩不了的就是能力。渐渐的接触的越来越多,代码写的越来越长,发现这其中大多是组合拼接别人的代码解决自己的问题,真正掌握的能力是如何快速利用搜索引擎寻找问题的解决方案,与编程自身相关的能力并不多。

所以无论是作为面试者,还是作为面试官,总会有那种疑问“这么多年的工作经验,怎么感觉实力一般呢”,其实道理很简单,你想要的实力在你漫长的工作经验中并未得到多大的提升,自诩为程序员的你并非如你想象中的那样高能,现实的你也并不能像电影中的黑客那样所向披靡。你唯一的能力或许就是比别人多摸了几年电脑,多动了动手指。

【能力】到底为何物?或许你我都迷茫着……

这里写图片描述

编程与算法:


记得第一次深深思考这个问题是在研究生入学面试后,当时有一位老师看了简历后反问我你学了这么多语言(汇编,C,C++)有用么?我做研究,到需要的时候看几本书就好了。第一次被自己曾经向往的最高学府的老师这样打击,还是难过了好一些时间,难过的不是因为打击到了自己,而是自己的确一直对这个问题充满着迷茫。

再后来就是工程与工学的选择,这个在外面来看可能没有区别,但是在学校里还是有分别的,导师的要求就不同,工程往往做的是编程类的工作,工学做的是算法类工作。(注意我这里说的编程类的工作和算法类的工作是不是也让你很迷惑,的确从这里来看编程就是体力活、耗工作量,算法才是脑力活,需要钻研研究)。这里就不在纠结这个字面的问题了,否则我们就绕到了上面“编程与能力”的点上去了,容易鬼打墙。

这个问题想必困扰过好多人,记得在毕业之际导师还专门让我给师弟师妹做了一次报告,讨论的就是“编程与算法”。之所以选我是因为在学校期间我既搞了一些算法,又安心的为项目组做了很多编码类的工作。从我自己的角度看,我是这样理解我的工作的,


—————

编程是基础,算法是补充,两者缺一不可,正所谓“无它,但手熟尔”。熟练是一种经验的积累,是智慧的沉淀与结晶。从短期局部来看,编码工作尝尝是组合拼接,从长远整体来看,是对整个业务需求的把握和掌控。


—————

之所以对当时老师的话失望,是因为他过度的贬低了熟练化工作的重要性,没有量变又怎来的质变,想必等你需要使用的时候光看几本书是肯定没用的,到那时候您的方式估计就是外包,或许还是略带鄙夷的态度看待这份工作(你应该会跟学生说,把算法搞完,其他的没有技术含量的工作外包就可以了)——发几句牢骚而已^_^。

为什么自己一直同时看中并深深纠结于编程和算法之间,可能是自己先对数学有了浓郁的兴趣,而后才接触的计算机。至今自己也希望在工作之余静下心来写写博客,希望能够将看似毫无技术含量的经验也记录下来,以备他用,也为结交同好。重复劳动的经验积累,必然会引发最后理论层级的升华,这就是一个量变到质变的过程。

恰巧近期CSDN也搞了个活动程序员必须要会算法吗?(链接,我觉得这个问题大家可以自述己见,开怀讨论一下,正所谓仁者见仁智者见智,上述也仅是我一家之言而已。

这里写图片描述

学习与放松:

最后说点与博文最相关的,当初之所以选择做技术,而且偏向于互联网,是因为在这样的环境下才能让我永远感到危机感,永远激励自己不断进步,这也就是博文中提到的:

那就是时时刻刻焦虑,害怕掉队。Jacob 在演讲中也说到:

If the only options are to be amazing or terrible, it leads people to believe they must be passionate about their career, that they must think about programming every waking moment of their life. If they take their eye off the ball even for a minute, they will slide right from amazing to terrible again. That leads people to be working crazy hours at work, to be constantly studying programming topics on their own time, and so on.

长此以往,一直担心被落下,而无暇顾及被超越,因为总处在一种负压的状态,从不敢停歇,也就无暇顾及后来者。



● 别人毕业要去旅行,我却选择响应导师的无理要求,整理之前手中项目,与师弟交接工作。

● 别人节假日出去玩,我却每次都选择回家,因为心中总感觉时间不够用。如果自己出去玩了,以后就没有时间回家陪父母了。

● 在家的时刻,你也自然会想到我肯定也会写博文、看技术博客,因为从不敢停歇。


PS:也有着另外一种说法那就是时间观念不同。根据时间观念可以简单的将人群分为“时间超前者VS时间滞后者”两类,长期处于紧张、焦虑或者说饥饿状态的程序员们往往都是前者。所以说不仅仅是在编程的工作中你会如此,你的人生事事都会如此。
Are you scared?







作者:zssure@163.com

时间:2015-07-01