今天来分享一下研发人员怎么专注, 直至达到心流的状态:
- 系统环境的专注: 研发人员的系统除了能编程和网上查资料以外最好不要能做别的事情, 特别是当我们要研究一项深入技术的时候, 需要几天甚至几个月的潜意识分析才有可能取得最终的一点成果, 而打游戏是最佳劝退研发人员的方式, 总是还没开始研究就觉得打游戏多舒服呀? 游戏是一种即时满足, 而长期研究后获得成长的满足是延迟满足, 延迟满足锻炼久了, 人会更加耐心、 思考更系统化, 以后做什么事情都会做的很好。 回到标题, 我推荐大家用 Linux 开发, Linux 是想打游戏都很难打的;
- 编程环境的专注: 编程环境的专注主要有两个方面, 一是避免环境打断思路, 一会键盘一会鼠标的操作会因为大脑去思考下一步点界面的什么按钮而容易打断真正重要的逻辑思考, 记住我们的大脑其实是协程思路, 切换上下文后容易忘记上一件事情的细节; 二是环境插件的稳定性, 平常折腾一个插件提升效率后, 插件环境应该有长期累积效率提升, 不要因为编辑器 或 IDE 发行商发新版本引入新的 API, 导致我们定期要从头折腾一遍插件环境配置, 这么多年我觉得符合专注的编程环境只有全键盘操作的 Vim 和 Emacs;
- 新闻获取的专注: 除了看书查手册以外, 研发人员也需要上网了解业界动态, 我推荐的方式是 ’用最少数量’ 的新闻网站和博客去了解最新技术, 我发现很多研发人员, 每天去看国内外大事和各种新闻网站杜撰的标题党新闻, 缺少社会经验和定力的年轻人最容易受这些负面的新闻影响心情, 或者把新闻当谈资, 我想的说是, 很多远在天边的人都和我们没关系, 我们每天要做的就是专注提升自己, 关心身边的人和真正的朋友。 心态一旦被各种猎奇信息干扰, 就很难保持对思考的专注。 回到标题, 我常年只看 solidot.org, 对于 IT 大事足够了, 最新的技术会订阅一些技术博客和每天浏览一次 Twitter 就好了;
- 日常专注的习惯: 简单来说就是 ‘一次只做一件事’, 你们有没有这样的体验, 听着音乐思绪飘向远方? 写着代码却在想着未来飞黄腾达以后要怎么样? 吃着美味的一餐却在想着我的那个编程难点要怎么解? … 很多人会说, 我这是在利用所有时间成长, 我把碎片时间都利用起来了, 干活的时间多了我不就成长快了吗? 时间看起来是多了, 但是我们利用时间的效率是否真的好呢? 我们总是做着这件事情时候去‘担心’别的事情的结果, 而不享受这件事的‘过程’, 研发人员总是把自己当芯片来使, 芯片有多核可以并发或并行的跑, 芯片有强大的存储空间, 可以保证切换多件事情的时候状态不会丢, 而我们人脑是推理和直觉一流但存储空间很小的结构。 所以, 我们只有做到 ‘一次只做一件事’ 才能保持我们宝贵的 ‘人脑 CPU 计算资源’ 时间不会因为来回切换上下文而浪费掉;
- 系统化思考的专注: 我总是给年轻的工程师说, 一定要把项目从头到尾自己做一遍, 忘记你是前端工程师还是后端工程师吧, 我们每个人都是全栈工程师, 这个世界上有两种工程师, 一种是每天对着编程细节如数家珍的‘存储器’工程师, 一种是拥有全局视野的‘系统’ 工程师, 如果要研究细节随时又可以钻进去的人。 从头到尾实现一款产品的经历对工程师的 ‘系统化思考’ 的建立非常有帮助;
- 系统读书的专注: 如果要研究一项技术, 我建议大家一定要系统的读书, 了解一个陌生的技术从头到尾的原理是什么, 如果不知道一件事从里到外的脉络, 不知道整个系统的逻辑和数据流向, 就没法做架构设计和需求转换, 更多的是在写 bug。 而每个系统架构师都是在系统性的读了很多很多书以后才能得到这些能力的;
上面只说到专注练习的剑法, 其实最难练的是心法:
我们吃饭的时候就要想今天的饭菜真好吃呀, 我们走路的时候就看看身边的花草树木想大自然真美呀, 我们睡觉的时候就想床真舒服我太放松啦, 学习的时候就想每个参数和书中的话什么意思, 和别人交流的时候就完全放松想怎么做到沟通顺畅同时尊重别人…
这就是佛家说的不要有杂念, 我这么多年看到太多天赋非常好的工程师心念不专注, 被比较之心、 膨胀之心、 贪念之心、 执着之心分走太多能量, 表面看起来很努力很勤奋, 实际内心的能量并没有专注在当前的过程中, 消耗很多能量却没有专注做事情是一个人最大的浪费呀。 所以, 专心吃饭、 专心走路、 专心做家务这些看似最和工程师无关的事情, 反而最容易锻炼我们专注当下的心念。