我依然记得点亮开发板上第一颗LED灯的惊艳,打印出第一句“Hello World”的欣喜。编程就像是“我的世界”这样的沙盒游戏,你可以去不断开拓新地图,创造新事物。

上帝赋予人类生命,人类赋予了计算机灵魂。
编程迷人之处不是敲键盘打几行字母,而是探索,是创造。

为了让学习到的技能更有价值,通常我们都会为自己设定一个目标,作为学成后检验的标准。这些目标都是以探索和创造为主题,可能是“短时间之内掌握某某技术”,“熟悉某个领域的方向”,也可能是“实现某某功能”,“制作一个什么设备”。

但这样的目标远远不够,这个目标,这份成果,要具体,要详细,要伴随整个学习过程。

  1. 拒绝模糊的表达
  2. 展开憧憬,描述细节
  3. 把成果当作手段

拒绝模糊

如果在简历上看到"掌握"C++11,"熟悉"C++标准库,"了解"多线程机制这样的句式,我会直接略过,去找项目经验这一栏,看看这个人都做过哪些项目,再重新衡量“掌握”、“熟悉”这些词在这份简历里的含金量。
相信很多人都将“熟悉”,“了解”,“掌握”这样的词放在简历上,问题不大,毕竟简历还要附上项目经验,面试官可以从项目经验入手评估面试者的水平。
但在工作和学习中,尤其是自我提升上,要拒绝这类定义模糊不清的词,
“了解多线程”这句话的模糊程度等同于“我不会做饭,但会煮面条”,你到底是会还是不会?煮面条算不算做饭?
当你的思路无法被语言准确表达,表示这个想法还没准备好,在你的大脑里它还不够成熟,不够完整,也不成体系。思路的不清晰导致表达的不完整,一个不能完整传达给其他人的想法,意义不大。
设定学习目标时,要将这些概念抻开拉平,来详细描述你想要达到的画面。

描述细节

每当我接触某个未知的领域,心中总会有一瞬间的念头:“我能做出一个xxx”,“我能实现一个xxx”,心中燃起热情和希望,这是探索和创造的开始,也是学习的动力。
抓住那个心动的瞬间,展开心中的蓝图详细描述它,将细节不断展开,展开到自己的能力范围之内。

一份牛肉汉堡,面包胚要松软带点甜味,生菜要新鲜脆爽,蛋黄酱和沙拉酱不要太浓稠,芝士片要淡黄色,烤成焦糖色,搭在牛肉饼上,牛肉饼最好带一点点筋,烤的鲜嫩多汁,汁水稍稍渗透到面包胚上最好。一口下去,柔软的面包,爽快的生菜,酸黄瓜特有的酸和脆,芝士的香和牛肉的焦完美汇合,你只会遗憾汉堡太小,而胃口太大,还没反应过来就只剩了满手的滑腻。
有了这样一份愿景,你大概就能了解,做一份牛肉汉堡,要选择微甜的面包胚,新鲜的生菜,某个品牌的蛋黄酱和芝士片,有嚼劲的牛肉饼,肉饼的火候....

一个由OpenGL渲染的3D场景,确定场景的内容以及细节后,基本上就能够了解使用什么样的模型,做什么样的光,物体的材质如何确定。性能上要足够轻,能够在嵌入式软件上运行,占用内存小,CPU占有率低。能够处理大量实时数据并转换成3D场景的一部分,并且保证刷新频率。

描述的每个细节都关乎最终结果是否符合心中的期待,将细节不断展开到可行的地步,有时候抽象和具体会混合在一起,需要你耐心将抽象概念变得具体可行,摆脱学习过程中的空洞和浮躁。
当细心琢磨这些细节,寻找每一份解决方案时,思想的变化发生得悄然无声,一份美味的牛肉芝士汉堡,已经在未来的等待了。

把成果当作手段

细节展开的前提是,对自己要学习的领域有一定的了解。很多时候受限于知识面,无法很好的描述心中的想法。

通常学院派的学习流程是:

  1. 收集几个不错的教程帖子,跟着从头走到尾学习基础操作;
  2. 设定一个计划,按照教程开始学习;
  3. 坚持一段时间后,热度耗尽,放弃;
  4. 或者学完基础操作之后依旧无从下手,不知道如何实现自己的目的。

自学和学校上课是完全不一样的流程,学校是先将概念逻辑教给你,期末再给你一份卷子,你所有的努力就是为了给这个卷子一个交代。如果没有这份卷子,就会在学完教程之后感觉迷惑:自己似乎拥有一个巨大的工具箱,但面对眼前这颗小小的螺丝钉,依然手忙脚乱,找不到入口。  

其实你完全可以先做出汉堡,再搞懂原理。

所以,需要借助点产品开发的思路:竞品分析,边干边学。
新的流程是这样的:

  1. 设定蓝图,敲定自己能够说清楚的细节;
  2. 寻找已有的材料,下载开源项目,分析和研究它们的代码结构和逻辑;
  3. 记录看不懂的部分;
  4. 带着疑惑再去学习教程,解决疑惑;
  5. 反复研究开源代码;
  6. 丰富自己的细节描述,同时思考要怎样设计自己的结构;
  7. 重复研究材料,学习教程,丰富自我结构;

关键在于,所谓的成果不仅仅是一个目的,还是一个过程,是维持我们学习热情的手段。
没有必要在一开始就要求一个十分具体的目标,没有必要学完一整个教程再去做自己想做的事,现在立刻就去实现,有结论就补充,有问题就去查,去学习,然后解决。
两手空空就走入学习教程,当学完一份长得令人头皮发麻的教程之后,就会变成,学了后面忘了前面,对技术和知识内部的联系一无所知,大部分的内容都没有体系结构支撑,一团散沙,风一吹就散了,相当浪费时间。

 

补充:心灵鸡汤

通常到了学习阶段,会遇到各种问题,经常卡在bug上好些天,产生很多负面情绪。

其实,每一份成功都是一次可能失败的尝试,请把焦虑和挫败感都当作成功的过程,相信自己的坚持一定会有回报。正向的信念往往听起来很鸡汤,但选择积极的面对困难是一种生活态度,它没有深层次的利益原因,仅仅源于对未来生活的期待。

在探索和创造这条路上,作为非天赋型选手,我每一次都变着花样失败,从这个坑出来又跳进另外一个坑。但只要有一次成功,就证明一切的努力都并非徒劳无功,全部的坚持都因为这一次的成功更有意义,希望所有技术人都能够在自己的技术之路上找到乐趣所在,找到这份坚持的意义。