本文是工作两年总结(上) | 子龙山人 的续,主要介绍我这两年经历的教训。

不够专注

实际上,打从我开始学习计算机的时候,我便立志要学习游戏开发。读完研究生以后,我也是立马就投身了游戏行业。虽然,我不是参与实际的游戏开发,但是我做的是游戏引擎开发,也算是与游戏密不可分。不过,有时候,我会偶尔想离开游戏行业。至于原因,知乎大神有回答:你为什么会离开游戏行业? - 知乎

但是后来,我们老大跟我讲了一个故事。说他以前玩传奇的时候,玩了一个战士,玩到 50 级了,但是它发现战士特别吃装备,而且练级困难,也特别烧钱。而有一些小法师和小道士则活得很滋润。后来他便又练了一个法师,练到 50 级的时候,他发现法师血特别少,很容易被秒。后来,他又玩了一把道士,也练到了 50 级,同样也是感觉不给力。于是,这个游戏就放弃了。后面,他有一个朋友,一直在玩这个游戏,也没花太多钱,但是等级很高。跟他的小战士 PK,直接秒杀。他说他从这件事情明白了一个道理,人做事情一定要专注。他从毕业后就一直在从事与手机相关的行业,从未变过。

再说说我自己吧,玩刀塔传奇的时候,也是刚开始冲了 1000 多,一度有玩到全服前 10 名。 后来 3 个月没玩,再想玩的时候,发现以前的月卡党都可以虐自己了。

心态很重要。对于以后的手游,如果好玩,首冲 6 块,玩一周看看。如果还想玩,买张月卡,玩一个月看看。如果没意思,立马卸载。如果好玩,再买月卡即可。如果一开始就花大手笔(太认真你就输了),这个游戏更容易放弃。因为你会想花更多的时间,同时也会浪费更多的精力和金钱。玩游戏嘛,轻松一下,消遣而已。

不够专注,除了不能坚持做好一件事情以外,还经常体现在贪多上面。尤其是对于技术的学习,我是一个特别喜欢学习新技术的人。但是技术的学习一定不能盲目贪多,一定要构建自己的知识体系和一技之长。每一项技术的学习都是为了更好地解决你手上的问题和你将要面对的问题(这些问题是你可以预见的,在你的当前项目和职业生涯中肯定会用到的技能)。比如我现在在做引擎开发,那么学好图形学,学好 OpenGL,学好 C++等都是很重要的技能。

不够专注,最后还体现在是否每件事情都善始善终。读书要读经典,但是更要有始有终,写代码也是如此,不能写需要人擦屁股的代码。

不够关心细节

乔帮主有句名言“把篱笆的背面也刷好”,虽然别人不容易看到篱笆墙的背面,但是它会每天都出现在自己的眼里。把篱笆的背面也刷好是一个大师级工匠的态度,体现在我们码农的工作中,可以表现为:为你的 API 编写清楚的注释,按照规范为每一个 Commit 写历史,同时发送 Pull Request 之前整理 Commit,遵守编码规范,注重代码风格统一,经常更新文档等。虽然这些细节不会影响软件代码的最终功能,但是,如果所有人都不 Care 这些东西,软件就会慢慢腐败。而且会给人一种感觉,你写的代码品质不高。虽然你的逻辑可能天衣无缝,你的设计可能精妙无比,但是,当别人看到你的注释没有,命名很烂,版本历史很混乱,估计也没心情去认真阅读你的代码了。

不够主动争取

  • 清楚团队的对自己的期望,主动争取资源。

刚进入职场,我对于这一点的领悟还是有点晚。团队并不需要一个什么都会的人,只要你能把老板交待的任务完成,甚至超出他的预期即可。我刚开始到 Cocos2D-X 团队,我被分配了一个没人愿意接的烫手山竽--改进 GUI 框架。当时的 GUI 框架问题特别多,而且本身 GUI 的水也比较深,我对 GUI 框架的设计也没什么经验。再加上,由于,团队人员的变动和各种新任务的接手,让我能够放在 GUI 框架上的精力越来越少,最后的结果是 GUI 发展得非常缓慢。千万不要试图表现得自己无所不知,这样会让很多事情分散自己的注意力。另外,公司内部的资源一定要懂得去索取,否则资源是不会主动送上门的。

  • 要敢于说 NO。

另外,要经常说 NO。不要接太多的活,要把时间放在最重要的事情上。每个人的时间和精力都是有限的,要把有限的精力投入到最有价值的事情上,这样最后的结果才会是价值最大化。不是每做完一件事情都有回报,也不是每一件事情都会被人认可。也不要妄图做个“老好人”,敢于拒绝,才能活得潇洒。

没有按需学习

现在是信息爆炸的时代,微博,知乎,码农周刊,Github 等新玩意儿的出现,让我们眼花缭乱。感觉到处都是干货,但是看完又好像什么也没学会(因为很容易忘记)。获取信息更容易,但是学习的效率却没有明显的提高。比如学个 C++,到现在还是很多知识点搞不清楚。要学的东西太多,要看的书也太多,要读的源码也太多,而自己的时间却越来越少。怎么办?

第一,还是要专注。专注一个领域的深入,比如 3D 渲染,比如 GUI 框架,然后再学习一些能够开拓眼界的东西,比如函数式编程。专注了,自然就可以很容易过滤掉一些自己不需要的信息。

第二,要主动按需去获取信息。每个人的知识结构都有差异,可以采用费曼技巧-- (1 条消息) 号称终极快速学习法的费曼技巧,究竟是什么样的学习方法? - 知乎 建立自己的个人 wiki,然后用它来疏理自己的思路和知识结构,遇到不清楚的,或者很模糊的概念就标记为一个 TODO,等有空的时候就可以通过 Google,Wikipedia 和 stackoverflow 来弥补空白。

第三,对于新知识的学习,要多实践。在看完一本经典的技术书籍或者一个经典的技术教程之后,就应该用 Side Project 来巩固所学。我以前就是动手的少,看得多,导致眼高手低。虽然眼界看似上去了,实则还是不懂。

做正确的事,不要做容易的事

任何时候,做正确的事都很难。因为首先你很难知道当前情形之下,做什么样的事情对你最有价值,因为紧急且不重要的事情太多了。其次,大部分正确的事情都是一些不容易的事情。而人天性就是懒的,喜欢避重就轻。所以,经常会在一些容易的事情上浪费时间。最后,做正确的事情需要勇气和决心,需要不断地挑战自己的极限。

像坚持每天锻炼身体,经常读书,每周写博客这些都是正确的事情,但是坚持做的人很少。

另外,由于我一直在维护开源项目,这里也谈一下自己的几点体会。

  • 开源项目,文档是最重要的。使用文档齐全,开发者就会更容易地使用你的代码,从而给你提供更多的反馈和建议。开发者文档齐全,就会有更多的人愿意花时间给你的项目添砖加瓦。
  • 要多做正确的事,比如完善文档,经常重构,解决重大设计问题和代码缺陷。而像 Typo,测试例的问题,代码风格问题,小 bug。这些要靠平时注意细节来完善之,不要在这个上面花费太多时间,社区会帮助你。
  • 要多写“能给开发者带去灵感”的代码,而不要试图所有事情都给开发者包办。比如你写了一个 iOS/Android 平台的视频播放控件,开发者就可以依样画葫芦,给你贡献一个同样的 Webview 控件。
  • 一定要提供模块化机制,让更多地开发者参与进来。如果所有的代码在杂揉在一起,不仅阅读非常困难,而且也很难吸引外部的开发者来参与。因为成本太高,难度太大。

小结

虽然这些都是“正确的废话”,但是我希望我早点悟道,让自己的工作更有效率,生活更精采,与诸君共勉。