冥想编程

让我问你一个问题吧:你上次回家时,大概是一个什么景象,不用太长,只要讲一下进家门前5分钟就好。

你可能会说,这……没什么特别的,我先是右转进入通向我家小区的路,路两旁是常年经营的水果摊,还有一个最近才出现的烤肉摊。路上人很多,经常需要左躲右闪的,沿着路大约走50米,右手边就是小区门口,黑色的铁门还是只开一边,穿过铁门后就到了小区的主路上,因为是个旧小区所以还是水泥地,路两旁的灌木还是没有人修剪,已经超过了大多数小朋友的身高,小区里面的车辆紧紧的挨着灌木,几乎占据了一半的路。再往前走20米就是一个路口,向左转,但必须要走快一点,因为路口旁边的垃圾桶常年都不怎么好闻。再往前走就是小区的自行车棚,我家就在自行车棚旁边的楼里,一单元的入口很好找,因为家住一楼的奶奶把自己的盆栽放在入口的旁边。我家在二楼,也就是说只要上够5+8+8=21级台阶就好了,右手边贴对联的就是我家,开门的时候需要稍微把钥匙抬高一点,这样更容易把门打开。

好吧,其实这是我回家前5分钟的景象,我几乎可以闭着眼睛把上述文字写出来,我相信只要你愿意,你也可以。

那么,我再问另一个问题,如何将你的工作效率提高3倍?

两个问题看起来没什么关联性,但如果你能以回答第一个问题的状态用在工作上,我保证你一定会轻松提高3倍效率。也就是说,你可以尝试一下像描述你回家一样把你要写的代码描述出来,或者说在脑海里面想象出来,然后只要坐在电脑前,把刚才想好的代码“抄一遍”,duang,完成!如果你可以,那恭喜你,你已经掌握了一种特殊技能,也就是我要说的“冥想编程”——在“冥想”状态下完成“编程”,当一切都准备好时,你要做的只是把你想好的代码“抄一遍”而已。

如果你在尝试“冥想编程”时遇到了困难,别灰心,因为至少你可以轻松的描述回家的景象。那为什么你可以容易的描述出回家的场景呢?原因很简答,你非常熟悉你家周围的环境,起码一周五天,一天两次,你瞬间就可以脑补整个过程,一幅一幅流动的画面,帮助你更加流畅的描述整个过程,一切都非常自然,就好像你真的回了一趟家一样。那我们来尝试总结成三点吧(不要问我为什么是三点)

1. 你很熟悉

2. 你很会想象

3. 你很专注

这就是“冥想编程”的三要素!

你很熟悉

对,你必须要非常熟悉,熟悉到每一个细节,就像你闭着眼睛都能记得你家周边的环境一样。项目背景,典型用户,业务逻辑,项目代码结构,模块之间的关系,每个文件的大体内容,设置包括一些繁琐的细节,比如开发常用命令行,IDE快捷键等。这是“冥想编程”的基础,这会帮助你把“冥想”变得更加真实,更多的细节会激发你更加深入的思考,让你专注于当前上下文,否则你会因为某些缺失的东西而停止前进,无法继续冥想。不过这样也好,你可以更准确的发现自己不熟悉的东西,接下来只要尽可能的烂熟于心就好了。

你很会想象

如果我像乔布斯一样有才,那我就……

如果我昨天把手机的电充满,那也许……

如果我没有读研究生就参加工作,那可能……

其实你很会想象,只是你没有发现而已,你的大脑无时无刻不在接受信息的刺激,想象随时随刻都会发生。一句话,一个表情,一种声音,一种感觉,有时只是一个简单的刺激,都可能会引发无限的连锁反应,“脑洞大开”也许就是这个道理。有了想象,静态的图片开始变得鲜活,不连续的记忆片段变得流畅,一切都像被插了电一样。想象是你宝贵的工具,你要做的只是把它用在工作上而已。烂熟于心的细节,加上逼真的想象,会让“冥想变成”更加流畅,更加容易发生。

你很专注

重要的事情说三遍,要专注,要专注,要专注。想象固然很重要,但也经常跑偏,你可能会从今天的早餐想到卖煎饼的阿姨,再想到提着煎饼挤公交被偷钱包的悲惨经历。想象很难控制,就好像你在看这篇文章的时候可能已经开始想象自己用了“冥想编程”之后变得多么牛逼。在“冥想编程”时,不会被打断的想象是最后一步,你需要把整个过程串起来,所以你要专注,而且是异常专注。这通常很难做到,原因很简单:

1. 突然想看看微信朋友圈

2. 接到了诈骗短信或者电话

3. 已经有半个小时没有看公司邮箱了,也许有什么有趣的事情发生

4. 能叫醒装睡的人的快递小哥开始约你

5. 项目组的人突然开始聊些劲爆的八卦

6. ……

这一切都有可能打断你的想象,就好像小心翼翼垒的积木突然倒塌一样,你会突然感到迷茫,之前的想象也许会一股脑的烟消云散。你只能从中断的地方重新开始,甚至从头开始,别无他法。这是“冥想编程”中最困难的一部分,你需要专注,用力抓住你的想象,保证它按照你设计好的方向继续进行下去。努力营造一个安静的环境(或者对别人说我想静静),或者可以小声的重复你想象的事情,声音一方面可以屏蔽一些外界的噪声,另一方面又继续刺激你的想象继续前进,保证整个“冥想”过程的顺利完成。

对我来说,我可以随时随地开始编程,在公交站等车时,干家务时,洗澡时,蹲厕所时,都可以用来编程(当然,我也会控制自己不在开车,过马路,和老婆聊天时开始冥想),第二天上班时,只要把脑子里想好的敲出来就好了,而且因为已经排除了可能遇到的坑或者雷,所以速度和准确率都会大大提高(正可谓是居家旅行,杀人灭口,必备良药)。其实冥想不应该只用在编程上,理论上来说你可以把它用在任何事情上,BA安排一个迭代的story,UX设计某个角色的用户流程,取悦不怎么喜欢你的丈母娘,做一道色香味俱全的美食,或者像我一样写一篇文章。冥想让你更加熟悉你周围的事物,让你拥有更丰富的想象,让你更加专注的思考。我想已经找到了提升我工作效率的方法,你值得拥有。

时间: 2024-10-12 13:27:03

冥想编程的相关文章

[原创译书] JS函数式编程 2.1 函数式编程语言

?? Functional Programming in Javascript 主目录第二章 函数式编程基础 函数式编程语言 函数式编程语言是那些方便于使用函数式编程范式的语言.简单来说,如果具备函数式编程所需的特征, 它就可以被称为函数式语言.在多数情况下,编程的风格实际上决定了一个程序是否是函数式的. 是什么让一个语言具有函数式特征? 函数式编程无法用C语言来实现.函数式编程也无法用Java来实现(不包括那些通过大量变通手段实现的近似函数式编程). 这些语言不包含支持函数式编程的结构.他们是

为什么我编程的速度越来越慢了

前阵子,同事发现一个我年初写的一个 lib 中有一个 bug,并向我报告了错误现象. 然后我就去修复这个 bug,最后只修改了一行代码便解决了,解决完 bug 发现一上午就这么过去了. 好吧,一上午只修复了一个 bug,而且只改了一行代码,到底发生了什么,时间都去哪里了?回顾下整个过程,由于这个 lib 开发于半年前当我再回去定位 bug 时花了一点时间来回忆整个 lib 的代码结构设计. 然后找到了出问题的代码所在的类,但我没有立刻着手修改代码,而是先在 lib 的单元测试集中新写了一个单元测

Boost.Asio c++ 网络编程翻译(1)

第一次翻译,希望大家多多指正 实战出精华 Boost.Asio C++ 网络编程 用具体的C++网络编程例子来提升你的技能 John Torjan 用具体的C++网络编程例子来提升你的技能 Copyright ? 2013 Packt Publishing 版权所有,除了在鉴定文章或者评论中进行简单引用,如果没有经过出版者事先的书面授权,该书的任何部分都不能被转载.存储在检索系统中.或者以任何形式和方式传阅. 在这本书准备发行之前,我们已经尽我们最大的努力去保证书中信息的准确性.但是,这本书中包

冥想、反思

冥想 1. 你必须知道自己想要什么,并把想要的写下来. 2. 你必须为了你最想要的事情,调整每天的第一件事及每一件事. 3. 充分坚持利用每天早晨和自由时间,你的人生计划,会有更大的机会得到实现. 反思 1. 你的人生规划是什么? 宏观战略层面,是你人生的目标,你需要弄清楚你这一辈子想要什么,想要干嘛. 暂时不设,持续思考中...思考了很多,仍然不是很确定,暂时就是成为一个有人格魅力的leader.其中的人格魅力涵盖比较大,如专业知识储备.书籍文化修养.沟通表达.做事能力等. 微观战术层面,是你

异常笔记--java编程思想

开一个新的系列,主要记一些琐碎的重要的知识点,把书读薄才是目的...特点: 代码少,概念多... 1. 基本概念 异常是在当前环境下无法获得必要的信息来解决这个问题,所以就需要从当前环境跳出,就是抛出异常.抛出异常后发生的几件事: 1.在堆上创建异常对象. 2.当前的执行路径中止                                          3. 当前环境抛出异常对象的引用.                                         4. 异常处理机制接

iOS开发——网络编程OC篇&Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来. 阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接灵活的运用到自己的实际项目中去.

轻松学习C语言编程的秘诀:总结+灵感

目前在准备一套C语言的学习教程,所以我这里就以C语言编程的学习来讲.注意,讲的是"轻松学习",那种不注重方法,拼命玩命的方式也有其效果,但不是我提倡的.我讲究的是在方式方法对头.适合你.减轻你学习负担和心里压力的前提下,才适当的抓紧时间. 因此,探索一种很好的学习方法就是我所研究的主要内容. 众所周知,学习C语言并非易事,要学好它更是难上加难.这和你期末考试背会几个题目的答案考上满分没多大关系,也就是说你考试满分也说明不了你学好.学精通了C语言.那么怎么才算学精通C语言?闭着眼睛对自己

《Java编程思想》第十三章 字符串

<Java编程思想>读书笔记 1.String作为方法的参数时,会复制一份引用,而该引用所指的对象其实一直待在单一的物理位置,从未动过. 2.显式地创建StringBuilder允许预先为他指定大小.如果知道字符串多长,可以预先指定StringBuilder的大小避免多次重新分配的冲突. 1 /** 2 * @author zlz099: 3 * @version 创建时间:2017年9月1日 下午4:03:59 4 */ 5 public class UsingStringBuilder {