Soft Skills Programmers Need

Soft Skills

程序员都需要哪些软技能

在某问答网站看到了一个非常很有意思的问题:程序员都需要哪些软技能?前段时间正好看完了一本神书,稍微归纳出一些不成熟的想法:

  • 持续学习意愿
  • 口头表达和写作能力
  • 建立合理预期的能力
  • 管理事务复杂度的能力
  • 个人品牌建设的能力
  • 财务管理能力

下面一一叙述。

Read More

《暗时间》读后感

很早就拿到这本书了,冲着刘未鹏买的,翻开一看是刘未鹏的博客集。当时有点失望,因为在学校的时候就把mindhack.cn的文章大致读过一下,分享感想的时候也会拿出一些例子来用。不过我觉得有必要重新精读一次,过程中对如何思考、如何解决问题、如何记忆知识等方面的确有了更深刻的体会。建议每个理性的人、想要提高效率的人都读读这本书,这本书总会在某个地方给你当头一棒。 书是在上班的地铁里读的,就算是用碎片时间向作者致敬吧。

在我看来,这本书的最大价值在于告诉读者思考的意义,以及如何更好更高效地学习。在进入大学之前,多数的思考只为给出和标准答案一致的答案,过程公式化,因此往往出现“做题越多,成绩越好”的现象。然而进入大学之后,自由度变大,思考的质量就会对人造成差异巨大的影响, “你比别人看远一年,就多一年的时间去准备,这个差别是巨大的”。假如察觉自己也经常被问题卡住而毫无头绪,那就应该看看这本书,同时推荐《怎样解题》。

我自己的体会就是要主动激发思考,改善思考方法提高产出。

首先是主动性。

其实哪里都有问题可以思考,即使在玩游戏的时候。例如玩魔兽PVP,在游戏的设计和实现中也是有很多事情可以思考的,模型的设计(不知道有多少人会发现搔首弄姿的大树会保持镜头移开之前的姿势),多人对战时的数据传输,各个client如何处理延迟?Replay文件如何设计?多个单位如何同时寻路?友方如何共享单位和视野?高低地的视野如何实现?各个面板可能运用了哪些设计模式?物品的性价比与平衡性等等。这些问题都是很有趣的。甚至只考虑胜负本身,为什么大家初始处于平等的地位,但随着游戏的深入,有一方会取得优势或者胜势?是技巧还是策略?当取得优势后,对手需要多久才能反应过来以及作出应对?我们又可以如何去应对对手的变化?只要不断考虑这些问题,我们就会比其他不善于/勤于思考的玩家更容易赢得游戏。

然后是思考方法。
昨天买了本《Proof from the book》,其中有一个关于抽屉原理的题目,我苦思冥想,不能解得。题目如下:

Read More