当前位置: 首页 > 编程日记 > 正文

每天工作4小时的程序员【转】

每个人都熟悉这种作息规律:早上9点去上班,坐在电脑前面,编一天的程序,下午5点下班回家。如今,非常感谢蒂莫西·费里斯 (Timothy Ferriss)的《每周工作4小时》,我开始重新思考应该如何工作,如何让自己变成更有效率的程序员。最近,我把我的从周一到周五的作息规律做了一次较大的调整。很长时间以来,我一直像所有其他程序员那样工作、休息。但就在2011年的下半年,我开始了一项试验,想看看究竟什么样的作息时间能让我更有效率。这项实验目前仍在进行中,我并不是像军人那样严格遵守实验规定——例如,我也想会早20分钟、或晚20分钟起床——但当前制定的作息规律是这样的:

早上4:30 到 7 点:冥想,写作,目标复查,和家人吃早餐

早上4:30起床其实并不是你想象的那么难。每个人的个人情况都多少有些不同,但人的身体基本上需要每天7到9小时的睡眠时间。保证你睡眠充足的一个方法是不用闹钟自然醒。你只需要早点睡觉,你就可以在早上4:30醒来。起床之后,我会马上喝上16盎司的水,不是咖啡!我很长时间都不喝咖啡了,而且也不太想喝。事实上,不喝咖啡我感觉会更好。然后我会冲个澡;这样会让我感觉一个清爽的一天的开始。每天早上我都会冥想30分钟。冥想的最佳时间是在日出之前或日出的过程中,也就是西方世界的早6点之前。我不打算解释为什么冥想会对你有好处;网上对此已经有了大量的研究。如果你想找一个关于冥想的书,我推荐《Meditation for Dummies》。尽管书名很怪,但它是我读过的最好的一本书。
冥想之后,我会花30-45分钟的时间写博客。我一般会写500到800字。我发现,冥想之后立即动笔,通常会一气呵成,写的很顺利。另外,大脑经过了一夜的休整,状态非常好,在注意力转移到其它事务之前,把大脑里堆积的东西都倒出来清理一下是很有好处的。关于写作的一个技巧:把这段时间用作对大脑的初步清理。不要去做研究、编辑等。这些事情放在以后再做。然后是To Do List(待办清单)时间。我会查看邮件,微博,LinkedIn,等等,以及安排下一步要做是任务。说到任务,我遵循GTD做事方法,我用Omnifocus软件来管理我的生活。我在iPad,iPhone和MacBook Air(我是苹果的粉丝)都装了它。不错,作为一个待办事宜管理软件,Omnifocus是有点贵了,但因为我的整个生活都和它有关,这个价格也值了。我通览一下待办清单,想想每个事情上的预期目标——所有的事情,从今天要做的小事情,到长期的目标。清单中的每个条目都设定有一个目标,如果没有目标,我会删除它。
接着是早餐时间。关于应该什么时候吃早餐、应该吃什么的问题上,已经有大量你可以借鉴的养生指导。我尝试过各种不同的东西。我发现那些富含纤维素,低碳,高蛋白质的东西最适合我。你试过燕麦片加花生酱吗?好极了!我还喜欢吃一些水果、喝一点茶。还有,我尽量和家人一起吃早餐。有时事情能按照这种愿望执行,但有时不行。我的目标是今年一年都要按照这个执行下去。

早7点到11点:4个小时的编程时间

这是我用来编程的时间。一天4小时也许你会觉得少的可怜,可是我却发现,在这4小时我做的事情能比大多数人一周干的事情都要多。研究显示,具有固定工作时间表的人比那些随机工作的人更有效率。对于我来说,这个固定时间是早7点到11点,每天。这段时间我要做的事情就是编程,不做其它的。有几个基本的原则:
首先,关掉所有的通信设施——电话,邮件,聊天工具等。没有让你分心的事。你可以给少数几个人保留一个联系到你的方法,以防有紧急事情发生。那些真有紧急事情需要找你的人自有办法联系到你,我还没有碰到过这样的事。我甚至还教育我的妻子,她通常习惯对所有的请求都立即给予回应,我告诉她要尊重我这4个小时的时间。在这段时间里你应该只干一件事。千万不要同时干5、6件事情。
第二,中间不要留下休息时间来查看邮件或上网,或干其它类似的事情。原因是:在一个小时里,我可以开发出x个功能。如果我要是连续工作4小时,我发现我的产量不是4倍,而是8倍或16倍。当你全神贯注的干某项事情时,相信你也经历过这样的体验。这就是我们所说的大脑的Flow(流)状态。在以后的博客里我打算多写一些关于Flow的文章。那为什么不把这样的制度应用到整个8小时的工作时间里呢?这是因为人的有效率的状态是有限度的。人的大脑跟肌肉一样。你可以在跑步机上持续运动8小时吗?就像我们的肌肉,大脑需要时不时的休息。这种限度依据个人的不同而各异。通过尝试和根据犯下的错误,我发现我的极限时间是4小时。
还有一点需要提的是,我并没有在11点设了闹钟提示。当我感觉大脑有些疲倦,工作效率开始下降时,我就停止工作。有些天我只工作3小时,有时我会工作5小时;4小时是平均值。
我在家工作是为了避开打搅。如果你需要在办公室里工作,看看管理部门是否允许你把最有效率的这段时间放在家里工作。你上班途中的折腾会把早上做瑜伽和冥想获得的好处给抵消了。在经过了早高峰的喧闹,还有办公室里的嘈杂,你的神经会变的紧张,冥思带来的效果完全消失。在家工作必定会更有效率的多。

早11点到下午1点:健身,午饭,购物

我每天都要健身。John J. Ratey的书《Spark: The Revolutionary New Science of Exercise and the Brain 》对每天锻炼的好处做了很好的论证,如果你想知道锻炼对大脑功能改进的科学机理,你可以读一下这本书。每天不做相同的运动,甚至不去相同的健身房。我每周在一个瑜伽馆里做3次瑜伽,在一个spinning馆里上两天的spinning课,在健身房里做两天的举重,在健身房里我有个教练。教练帮助了我很多,有人这样督促你会使你具有更大的动力。我喜欢在健身房运动,因为那里有额外的服务。你可以一下用掉5条毛巾而不担心老婆的抱怨。可以花30分钟冲澡而不用担心门外有人叫喊”你还没完吗?“…在家里你经常会遇到这样的事。我还养成了一个习惯就是每天购物,通常是在Whole Foods,一个离我家只有步行距离的超市。为什么每天购物?在很多国家,特别是亚洲,人们每天都去购物,而不是一次买足2个星期的东西储存在家里的冰箱或冷柜里。这种方式,你只买了你需要的东西,避免了浪费。很多时候你会发现冰箱里有些不知是何物的东西,怀疑放在那里有半年之久了。我午饭在外面吃,Whole Foods超市里有不错的沙拉自助。因为我喜欢日本食品,有时我会来一点日本寿司或盒饭。

下午1点到6点:学习和交流时间

我尽量会把一些讨论、约会时间凑到一起,这样不必每天都去公司。通常,这些事情包括会议,面试,做报告,指导开发,代码审查等等。这段时间我不做任何的开发,除非有紧急的bug或特殊情况需要处理。我还用很大比例的一部分时间去学习。我花了很多时间去阅读别人的东西,从书本到博格,大多与编程相关的东西。我每天都要学到新的知识。保持这样的学习劲头的最好的方法是对学到的东西做一些笔记,把相关的知识做写标记。像EverNote这样的软件很适合做这种事情。同时我会看看市场上有没有其它的产品,最有效率的软件开发者是不用写一行代码就能把问题解决。我不想把别人已经做好的东西再做一遍。所以,在CodePlex, GitHub 和 Component Source这些网站上花时间是有好处的。我从妻子的医院实习的经历中得到了一点启示。新入职的大夫每天早上看病,到了下午,他们会聚到一起讨论遇到的各种病症,讨论他们是如何应诊的。对于我,我会事后反省一下自己做过的事,我会重新思考一下早上编程遇到的问题,在什么地方遇到了什么bug,或反省做报告时的表现,或如何主持的会议,等等。我努力从过失中学到教训,避免它们再次出现。

下午6点到晚上8点:家庭时间

我妻子是个医生,工作很忙,但我们尽量一起度过这段时间。我们会一起做饭。然后我会和孩子一起做家庭作业。(一个二年级的学生竟会有这样多的作业,这是另外一个话题,我以后再谈。)

晚8点到8:30:反省和给大脑派活

我晚上不做冥思,而是换成坐下来反省一天的生活。如果你花上15分钟做在一个安静的地方反省你的一天,你会吃惊的发现这一天你学到了这样多的东西,获得了这样大的提高。接下来,我给大脑安排工作。众所周知,当我们睡眠时大脑是在不停工作的。所以,你最好给它安排点工作。对于我,下面这些事情很有效:我把第二天早上要写的东西做了个大纲。就像写便条一样。我发现把它写到纸上比写在电脑里更有效。或者,我会看一些编程/算法问题。同样,会纸上描述下来或写出框架。让人惊奇的是,很多时候早上起来你会发现已经有了解决方案!像这样的事情我是在一个整洁的、没有格线的、信封大小的笔记本上写画的。在空白的白纸上写画会让我更有灵感。我在晚8:30到9点间上床睡觉。越早越好。
这就是我一天的作息时间。当然,当我外出旅行时会有些变化;在途中我会花大量的时间来工作。我还没有告诉你们在周末我都干些什么,我会在以后的文章里讲到这些。我很想听到其他人关于他们的作息时间的故事,以及他们是如何提高工作效率的。

转载于:https://www.cnblogs.com/zziajie/p/10282203.html

相关文章:

ARKIT/ARCore对比分析(一)

ARKit简介 ARkit是什么? 苹果为什么发布ARkit?(6月5日的苹果WWDC 2017全球开发者大会上,苹果发布了AR开发平台ARkit) 1.概述:ARkit应用平台是苹果的首个 AR 产品。iOS 11引入了ARKit应用平台,…

每个程序员必看:如何在40岁后继续做软件开发?

导读: 这是一个 42 岁的开发者所写经验分享文章.并且列出一些他 18 年多身为软件开发者的经验谈.许多部分看完后都会希望自己当时就能够了解,所以很推荐不论是新手或是老手都要好好阅读这一篇文章。 故事很长,一切从 1997 年开始讲…

【ACM】杭电OJ 1009 (FatMouse' Trade)。

两个条件貌似缺一不可 不明白为什么不能是sum&#xff08;s[i].value*s[i].cat_food&#xff09;&#xff1b; #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std;const int maxn 1010;typedef …

Java图形化:布局方式

布局方式 FlowLayout:流布局 BorderLayout:边框布局 GridLayout:网格布局FlowLayout&#xff08;流布局&#xff09; 像Word打字&#xff0c;组件从左向右排列&#xff0c;一列排满后自动换下一行。组件默认居中对齐&#xff0c;可以设置左/右对齐。流布局会维持组件的原始大小…

ARKIT/ARCore对比分析(二)

ARKit(2) ARCore 和 ARKit平台特点比对 曾与一家最大的 IMU OEM 交谈过&#xff0c;为了节省成本&#xff0c;他们的智能机IMU 在工厂中只是在单一温度下进行标定。这意味着 IMU 硬件在某一指定的温度下&#xff0c;误差被调节到最低。但当手机发热的时候&#xff0c;IMU 就不…

【ACM】杭电OJ 1789(Doing Homework again)

http://acm.hdu.edu.cn/showproblem.php?pid1789 cmp函数&#xff1a; 先按扣分由多到少进行排序&#xff0c;然后如果遇到扣分一样的&#xff0c;则先做时间少的。 vis数组&#xff1a; 最要的事&#xff0c;放在它的截至日期那一天去做&#xff0c;然后&#xff0c;之后…

推荐使用的几款Java常用基础工具库

通用工具类(字符串、时间格式化、BeanUtils、IO)1. commons-lang3库1.1. org.apache.commons.lang3.StringUtils类日常代码中&#xff0c;我们经常和String字符串打交道&#xff0c;经常对字符串进行处理&#xff0c;稍微不注意的话&#xff0c;很容易出现类似NullPointerExcep…

ARKit 与 ARCore比对(三)

ARKit 和 ARCore剖析、结构、原理介绍 ARKit 和 ARCore 都是三部分&#xff1a;相机姿态估计&#xff0c; 环境感知&#xff08;平面估计&#xff09;及光源感知。 ARCore 的部分源码&#xff1a;https://github.com/google-ar/arcore-unity-sdk/tree/master/Assets/GoogleARCo…

前端开发之retina屏幕

像素 && ppi 首先先说一下pixel(picture element)&#xff0c;显示图像的最小单位&#xff0c;有多个带色彩的像素点组成的整体就是一张图像。然后再说一下ppi(pixel per inch)这个概念&#xff0c;其实就是在每英寸显示的像素数。 设备像素 && 逻辑像素 &…

【ACM】Uva 1152 (4 Values whose Sum is 0) 二分查找lower_bound() 和upper_bound()的使用

【问题描述】 The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how many quadruplet (a, b, c, d) ∈ A B C D are such that a b c d 0. In the following, we assume that all lists have the same size n. …

广东“基因编辑婴儿事件”调查组:将对贺建奎依法依规严肃处理

雷锋网(公众号&#xff1a;雷锋网)消息&#xff0c;1 月 21 日&#xff0c;新华社报道了关于“基因编辑婴儿事件”的初步调查结果&#xff0c;该结果宣称&#xff0c;该事件是南方科技大学副教授为了追逐个人名利而进行的人类胚胎基因编辑活动&#xff1b;而在此过程中&#xf…

测试我的第一个随笔

# encodingutf-8## Python Version 3.5# 利用数学中的复数 求解 一元一次方程(从网上看来的)def solve(qx, var): qx qx.replace(, -() ) c eval(qx , {var: 1j}) return -c.real/c.imagres solve(2*x 4 8,x)print(res)转载于:https://www.cnblogs.com/imyjy/p/…

ubuntu16.04 下安装Opencv2.4.9

ubuntu16.04 下安装Opencv2.4.9 OpenCV的源码download from: https://sourceforge.net/projects/opencvlibrary/?sourcetyp_redirect[plain] view plaincopycd opencv-2.4.9 mkdir build sudo chmod -R 777 build cd build [plain] view plaincopycmake -D CMAKE_…

UVa 167(八皇后)、POJ2258 The Settlers of Catan——记两个简单回溯搜索

UVa 167 题意&#xff1a;八行八列的棋盘每行每列都要有一个皇后&#xff0c;每个对角线上最多放一个皇后&#xff0c;让你放八个&#xff0c;使摆放位置上的数字加起来最大。 参考&#xff1a;https://blog.csdn.net/xiaoxiede_wo/article/details/79973171 1 #include <io…

AR + ROS +UBUNTU16.04+ORB-SLAM2

ORB SLAM2 USB摄像头 实验环境ubuntu 16.04ros kinetic OPencv2.4.9 Step1&#xff1a; 配置环境变量 $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src 在’src’目录中可能没有任何软件包&#xff0c;只有一个CMakeLists.txt&#xff0c;依然可以编译它&#xff1a; …

Cross-validation

2019独角兽企业重金招聘Python工程师标准>>> 1: Introduction To Validation So far, weve been evaluating accuracy of trained models on the data the model was trained on. While this is an essential first step, this doesnt tell us much about how well …

【ACM】杭电OJ 1877 又一版A+B(进制转换)

注意&#xff1a;A和B都是0的情况 A和B为int也可以AC #include<cstdio> #include <iostream> using namespace std;const int maxn 10000;int a[maxn];int main() {long long A,B;int m,k;while(scanf("%d",&m)!EOF){if(m0) return 0;scanf("…

[POI2009]KAM-Pebbles BZOJ1115 [ 待填坑 ] 博弈

有N堆石子&#xff0c;除了第一堆外&#xff0c;每堆石子个数都不少于前一堆的石子个数。两人轮流操作每次操作可以从一堆石子中移走任意多石子&#xff0c;但是要保证操作后仍然满足初始时的条件谁没有石子可移时输掉游戏。问先手是否必胜。 感谢MT大牛翻译. Sample OutputNIE…

ROS中使用摄像头的问题

ROS中使用摄像头的问题 0.prepare 4 . 安装uvc_cam $ sudo apt-get install ros-indigo-uvc-camera $ source /opt/ros/indigo/setup.bash 采用apt-get的方式&#xff0c;直接装在了ROS的安装路径中&#xff0c;并设置工作路径。 安装成功后在/opt/ros/hydro/的路径中就…

EmEditor Professional(文本编辑) 下载地址

http://www.greenxf.com/soft/2126.html 16.1.5 http://www.cr173.com/soft/3031.html 16.3.0 http://www.pc6.com/softview/SoftView_43146.html 17.8.1 绿色注册版 EmEditor 71 个实用插件汉化版 http://www.onlinedown.net/soft/35609.htm

【ACM】杭电OJ 4548 美素数(二次打表)

二次打表&#xff0c;第一次是标记哪些是素数&#xff0c;哪些不是。 第二次是前n个数中 “本身是素数 && 各个位上的和是素数 ” 的个数 TLE&#xff1a; #include <iostream> #include <cstdio> using namespace std;int fun1(int x) {int sum0…

animation与transition区别

transition&#xff1a; 过渡属性 过渡所需要时间 过渡动画函数 过渡延迟时间&#xff1b;默认值分别为&#xff1a;all 0 ease 0 1、局限性&#xff1a; 1&#xff09;只能设置一个属性 2&#xff09;需要伪类/事件触发才执行 3&#xff09;只能设置动画初始值和结束值 2、过…

如何将cocos2d-x程序分别移植到ios,android,windowsphone三个手机平台上

作者&#xff1a;方格子链接&#xff1a;https://www.zhihu.com/question/21505500/answer/22152464来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。面向android的移植 0. 这移植过程简直…… 1. 完成以上工具的下载安装…

【数据结构】顺序循环队列及其实现(C语言)

给定一个大小为MAXSIZE的数组储存一个队列&#xff0c;经过若干次的插入和删除以后&#xff0c;当队尾指针 rear MAXSIZE 时&#xff0c;呈现队列满的状态&#xff0c;而事实上数组的前部可能还有空闲的位置。为了有效地利用空间&#xff0c;引入循环队列&#xff08;环状&…

C++中Reference与指针(Pointer)的使用对比

了解引用reference与指针pointer到底有什么不同可以帮助你决定什么时候该用reference&#xff0c;什么时候该用pointer。在C 中&#xff0c;reference在很多方面与指针(pointer)具有同样的能力。虽然多数C程序员对于何时使用reference何时使用pointer 都会有一些直觉&#xff0…

云南实现手机自主补(换)领居民身份证

图为云南首位通过手机自主补领居民身份证的申领人付宏强。 缪超 摄 中新网昆明1月22日电 (缪超)春节临近&#xff0c;云南实现手机自主补(换)领居民身份证&#xff0c;首张通过手机补办的居民身份证于22日在武定县公安局狮山派出所成功申领。 据悉&#xff0c;为方便民众因遗失…

NDK JNI 安装与配置(一)(UBUNTU16.04 )

1、下载Android NDK自解压包&#xff0c;官方地址&#xff1a;https://developer.android.com/ndk/downloads/index.html#download下载&#xff1a;$ wget -c http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin2、解压&#xff0c;将Android NDK压缩包解压到…

【数据结构】顺序表的应用(4)(C语言)

【数据结构】顺序表的应用&#xff08;1&#xff09;&#xff08;C语言&#xff09; 【数据结构】顺序表的应用&#xff08;2&#xff09;&#xff08;C语言&#xff09; 【数据结构】顺序表的应用&#xff08;3&#xff09;&#xff08;C语言&#xff09; 设计一个算法&…

Java泛型:泛型类、泛型接口和泛型方法

2019独角兽企业重金招聘Python工程师标准>>> 根据《Java编程思想 &#xff08;第4版&#xff09;》中的描述&#xff0c;泛型出现的动机在于&#xff1a;有许多原因促成了泛型的出现&#xff0c;而最引人注意的一个原因&#xff0c;就是为了创建容器类。 泛型类 容器…

POJ 2456 Aggressive cows(二分答案)

Aggressive cowsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 22674 Accepted: 10636Description Farmer John has built a new long barn, with N (2 < N < 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN (0…