电脑、鼠标、充电器
电脑、鼠标、充电器
电脑、鼠标、充电器,几乎是我书包里不可或缺的三件套。无论学习哪一门课程,处理什么样的琐事,我总是会用到这些。作为计算机专业的学生,这三样东西对我来说,就如同厨师手里的菜刀,司机操纵的方向盘。不仅是日复一日学习的工具,更是将来赖以谋生的伙伴。提前和它们打好交道,摸清它们的脾气和性格,甚至在某种程度上和它们保持默契,才能在今后的工作中得心应手,应用自如。
当然,这些只不过是工具,就像考高分的学霸从不会抱怨笔的款式。工具始终只是工具,一支笔可以在学霸的手里写出满分作文,也可以在差生的课堂上被用来涂鸦打发时间。
我常常在想:“对于程序员来说,最重要的资质是什么?”毫无疑问,当然是学习能力。倘若缺乏自学的能力,无论何等勤奋,恐怕也走不远。与其说这是必要的资质,不如说是进入这个行业(甚至是任何行业)的前提条件。没有燃料,再好的汽车也无法启动。
然而自学首先面临的问题在于:我们往往无法准确预料自己需要掌握哪些知识。中学时代,我们大可按照课本的章节顺序,按部就班地上课听讲、做题刷题、复习总结。不需要太多思考,也没有太多选择,只需拼命地把一路上所有的知识点收入脑中即可。但来到大学,尤其是开始思考职业规划时,情况就完全不同了。倘若继续沿袭高中时期的模式,学校教什么就学什么,考试考什么就练什么,大概率会成为一名好学生,收获诸如奖学金、评奖评优这些荣誉。但能否找到专业对口的程序员工作却是另一回事。写代码时,没有人会考你概念定义或课本习题。它要求的是能把知识灵活地拼接、组合,并用来解决眼前的麻烦。换句话说,学习的目标不再是“把书读完”,而是“能否解决问题”。而这,也正是自学的最大挑战:你必须自己判断该学什么,放弃什么,以及何时该停下,何时该继续。
不同人学习知识有不同的动机。有人为了高分保研,也有人考虑如何实践,还有人只求混个学分。看到课堂上所有学生都被要求学习同样知识的场景,我深感同情:“好可怜啊。”那些丝毫不想研究理论的人,或者根本不打算从事计算机行业的人,不分青红皂白让他们统统去学,这是何等无意义的学习。每个学生有着不同的兴趣和职业方向,却要被堆在一起强行灌输规定的内容,达成同样的目标。我心中理想的大学教育,应该把更多时间交还给学生,让他们根据自己的兴趣和选择来决定学习的内容。当然,我说这种话,肯定无人理会。或许学校就是这样一种地方:我们在学校里学到的最重要的东西,就是“最重要的东西在学校里学不到”这个真理。
自学能力之外,如果再列举程序员的重要资质,我将毫不犹豫地举出逻辑思维来。这是一种把混乱的需求拆解成可执行步骤的能力。遇到复杂的任务时,人们会下意识地寻找熟悉的影子,试图套用过去的模式,或者把它类比成做过的题型。这一思维习惯很大程度上要归结于我们所受的应试教育。老师教导我们要大量做题,从错题中总结套路规律。然而编程上的问题往往没有前例可循。摆在面前的可能只是一行简短的需求。这种情况下,不如索性把假设一一剥离,只留下最确切的条件与事实,在此基础上重新排列组合,一步步推演,直到找到合适的解法。这样的推理过程,大抵近似于所谓“第一性原理”的思考方式。
继逻辑思维之后,必须的是集中力。这是将自己有限的才能汇聚起来,倾注在最为需要之处的能力。没有它,恐怕什么像样的工作都难以完成。若能善用这股力量,甚至能弥补智力的不足与偏颇。我每天会在书桌前坐下来,花上几个小时,将意识全然倾注于眼前的学习内容上。那段时间里,世界被简化成眼前这一件事,其他什么都不考虑。我想,一个人哪怕天赋异禀,哪怕脑中灵感如泉涌,假如牙疼得厉害,恐怕也是写不出半行代码的。因为他的集中力受阻于剧烈的疼痛。
我认为编写程序是一种体力劳动。写几行代码或许属于脑力劳动,但若要完成一个完整的项目或软件,更接近于一场持久的体力消耗。诚然,写程序并不需要举起沉重的物体,也不需要飞快地跑来跑去,高高地蹿上跳下。很多人似乎只看到表面,将程序员的工作视为办公室里舒适体面的劳动,以为有了能够敲击键盘的力量,就能写代码了。试一试立即就会明白,程序员并非那么安逸的工作。坐在电脑前,将神经如同激光束般集中于一点。调动所有的思维,从一团乱麻中找出线索的一端,再耐心地把它一点点理顺。逻辑需要在推敲中保持严密,细节必须在思考里经得起检验。这样一种工作,与一般人想象的相比,更为长久地需要巨大的能量。这固然不必运动身体,劳筋动骨的活动却在体内热火朝天地展开。一天下来,身体被无情地束缚在椅子上动弹不得,累积的疲惫真实而具体。
头脑清晰的程序员似乎对逻辑有一种天然的直觉。他们体内仿佛内置了一套优雅的算法,与机器达成了一种无言的默契,能够轻而易举地赋予代码清晰的灵魂。遗憾的是我并非这种类型。要写出一行像样的代码,便非得实实在在地折磨身体、耗费漫长的时间与精力不可。通过日复一日的训练,像打磨一件工具般,慢慢锤炼自学能力,培养逻辑思维,并试图将飘忽不定的心神凝聚起来。说来有些无奈,我只好将这些后天习得的资质,当作天赋的“代用品”,从各个不同的侧面,去弥补那与生俱来的才华的不足。否则不可能持之以恒,写出多少有点价值的东西。究竟选择何种方法,从哪个方向去填补自己,这选择本身,或许反倒会成为一个程序员的个性所在,变成其工作中独特的“妙味”吧。
原创声明 :本文为作者原创文章,转载请注明出处。








