一转眼工作已有 8 年,前两天公司一位初入职场的同事希望我给一些建议与经验。我觉得这个话题很有价值,这里以个人的想法与经历写成此文,希望给年轻的开发者们一些启发。
我工作过的公司有 4 家,NVIDIA, Google, Slide 和 Glow。其中两家是知名的大公司,Slide 我是D轮过后加入的,那时约 150 人。Glow 则是从它第一天创立,一直走到现在。个人的工作也从 Developer,Tech Lead,Engineering Manager 到 CTO。这些经历使我对程序员的个人发展之路有比较全面的看法。
如果你问一个年轻的前端开发人员,你在今后的 3 年内如何提升自己的能力?他可能会说“我现在对 Web 前端比较熟悉,但我想深入了解 AngularJS,另外 React 现在发展的很快我也想看一下。之后,我会花时间去学习 iOS 和 Android 开发。”看上去不错,但缺乏系统性的目标。或者说,他制定了学什么,但对为什么要学这些并没有仔细的思考。
在技术领域,有太多的东西会迅速的过时,如何利用有限时间,最大化你的长期收益?这里我可以给出几条建议
工欲善其事,必先利其器。每个开发者都应该有一把自己的瑞士军刀,在将来漫长的职业生涯中,这些工具可以为你省下宝贵的时间,并帮助你更好的组织个人知识库。举两个例子
我们可以从编缉器谈起,这里有 IDE vs Text Editor,有 Vim vs Emacs,有 Sublime vs Atom,那该如何选择呢?在做选择之前,我们先想想自己的目标。我们希望这是一个长期的投资,这款编缉器能被长期使用,在这个过程不断的打磨,使其能完 全适合自己的习惯,最大化编缉效率。如果程序员是侠客,编缉器则是他手中的剑。
虽然我是 Vim 的重度用户,但我觉得当年选择 Vim 时有欠考虑。如果让我重选一次,我的第一选择会是 Emacs,第二选择会是 Atom。Emacs 已存在 30 年,社区仍然活跃,其可扩展性在编缉器中无人能出其右。Emacs 的脚本语言 elisp 又是 lisp 的一种 dialect,我觉得对 lisp 的学习可以提升程序员对编程核心思想的理解。另一个加分点是 Emacs 由于其本身的高门槛及 lisp 特质,吸引了大批高质素的程序员,其社区可谓藏龙卧虎,更诞生了像 Org-mode 这样神级的插件。反观 Vim,Vim 的精髓在于 Mode editing,这是值得学习的,可以极大提高文本编缉的效率。但当你熟悉了这一理念后,我觉得可以转投其他编缉器,因为 Vim 的架构与 Vimscript 限制了其扩展性。Emacs 通过 Evil 插件非常完整的支持了 Mode editing,其他主流的编辑器也有类似插件,所以你一旦掌握了这个理念,在别的编辑器中也可以发挥作用。可能有人会说没有一个 Vim emulator 能做到 Vim 100% 的功能,但重点不在于某条指令是否被移植,而是 mode editing 思想的精髓能否被移植,我觉得答案是肯定的。
再看 Atom vs Sublime,Atom 的可扩展性非常好,它的大部分核心功能也是以插件的方式实现,这点与 Emacs 有异曲同工之妙。并且其开源的特性,使我相信它有比 Sublime 更持久的生命力。
关于 IDE,我的看法是,我不排斥 IDE,但每个 IDE 都是为了某个特定的任务或是编程语言服务的。做为一个有追求的程序员,可以用 IDE,但依然需要精通一个强大的通用编缉器。
类似编缉器,高效的开发环境还包括 Shell,Launcher,窗口管理器,文档阅读器等等。其中有一部分只需要你化很少的时间就可以完成配置,它们的投资回报率是非常高。
前者是用来收集别人产生的信息,后者则是收集自己产生的信息。前者一个简单的例子就是浏览器的 Bookmark。你需要能随时将一组有用的信息归档,并在未来的某个时刻快速找到它。后者最直观的例子则是 Mac OS 或是 iOS 自带的笔记本,这里的目的是能随时随地记录你自己的想法。从本质上讲,就是你需要有一套好用的工具来做你的知识库管理(Knowledge management),也可以说是你知识和思想的外部备份。我个人现在是用 Evernote 同时来做信息采集与笔记的。如果有一个好的流程,你也完全可以用两个工具来分别把这两件事做好。但我建议你花足够多的时间来思考如何组织你的个人知识库。
以上只是两个典型的例子,你需要做的是发现那些你要长期从事的任务(往往不随技术而改变,也不随公司而改变),将完成这些任务所需的工具调整至 最优。再举一个例子,我会留意身边的程序员所用的键盘。只有少部分的程序员会买高端的静电容键盘,比如 HHKB。而在我看来,这明显是一笔很划得来的投资,程序员在工作的大部分时间里都需要和键盘打交道,一个舒适的打字体验是非常有收益的,更何况这类高品 质的键盘都非常的耐用。