卓有成效的程序员──咱码农如何实现自我加速

masque
2010-07-04 看过
写在BLOG上,原文粘过来。
额,有几张图片粘不了,链接在这里:
http://www.oeddyo.com/%E3%80%8A%E5%8D%93%E6%9C%89%E6%88%90%E6%95%88%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%91%98%E3%80%8B%E2%94%80%E2%94%80%E7%A0%81%E5%86%9C%E4%BB%AC%E6%80%8E%E6%A0%B7%E8%87%AA%E6%88%91%E5%8A%A0%E9%80%9F/

女生买包要看牌子,不是LV就要香奈儿,我相信喜欢那些包的人其实很少有对这些品牌的认同感,不过人云亦云。背的人多了,自己背一个,自然觉得感觉不错而已。

这样的认同感放在对出版社的身上意义就不同了──一些老牌的出版社出的书,你还真是不能否认,他们只出经典。

昨天一口气读完了O'REILLY出的《卓有成效的程序员》(中文版为机械工程出版社出版,也是我非常喜欢的一个出版社)的第一部分,当然,我可能也只会看第一部分,因为后面讲的多是真正工程项目上程序员应该如何测试、如何调试等等领域。而第一部分讲解的正是我寻觅了很久的如何提高日常工作中的细微处的效率的内容,它包括一些理论上的原则,更重要的是一些tips和对一些工具的介绍。




上经管课的时候,老师介绍过泰勒同学做的一系列实验──把每个铲媒工人的每一铲精确到秒,并不断实验和优化,使工人们的效率提高到惊人的地步。本书的前言也提到了这个实验,而之后的章节都是按照这个思路,即不断优化细微处的效率,以提升整体的工作效率。

我认真统计了一下,每天花在“找文件”->打开这个文件,或者是查某篇论文,回忆每篇论文的出处,登录某网站、注册某网站以下载某工具,再或者是在乱七八糟的桌面上找东西的时间,可以占到我的工作时间的30%。更恐怖的是,不是说这30%的时间花完就算了,往往是我在找一个work.py的过程,会不经意看见一个电影、一首歌,然后一点进去,通常十几分钟就没了。其实只要能在这些琐事上加快效率,整体效率就会很大提升。计算计算机指令集的加速比的时候(加速后的速度/加速前的速度),可加速部分的加速率是最关键的因素,它决定了计算机整体效率会有多少的提升。同样,如果我能在这30%上提升50%左右的效率,那么我每天的整体效率就可以提升15%。按30年工作时间算,足足多出来4.5年的工作时间。提升这些琐碎地方的效率以完成更多工作完全不同于牺牲睡眠或者加班来完成更多工作,因为前者没有以生活质量为代价,而后者则损失了生活质量,何乐而不为呢?

对这些例行的活动,大多是可以自动完成或者很有效率地完成的,针对上面提到的时间浪费,作者提出了一些tips:

0.使用快捷键,不用或少用鼠标:

我测试了一下,如果用鼠标点击导航栏,定位需要2秒时间。而使用ctrl+L定位到导航栏的话,我的表都不能测出花了多少时间。而从iGoogle的记录看,每天我会输入大概500个网址左右...相信你也不比我少多少。同样的,打开程序,找文件,甚至于一个工作流,都可以用键盘代替,而非鼠标点来点去。

1.使用加速器:

不要在桌面上放着一堆图标,图标数与你的工作效率成反比,每次你用鼠标去一个个找的时候,效率就损耗了。不要在你的MAC OS里的DOCK里放着一堆拿显微镜才看得见的图标。直接用加速器吧,输入软件的名字,回车,然后打开。

(MAC下自带了spotlight,个人认为不好用,索引过后还很慢。 推荐使用quicksilver。win7下自带)



  
2.使用宏:

录制下常用的动作,让它自动播放。比如说每天一早起来,要开几个新闻网站,要点开固定的BLOG,要check校内的状态,都可以录下来,规定时间播放。更有意思的是,你可以把它们组合起来,监督你不要花过多时间在花了之后会后悔的地方。举例说,7:45起床,然后录制的宏会在7:45播放,你坐在电脑前的时候已经把新闻,校内和BLOG的文章呈现在你面前。另一个宏会在8:00准时把它们全部自动关闭,这样可以约束你不要花太多时间看校内上不认识的小MM的照片。

3.专注法则:

设定一天中的一段时间为专注时间,这段时间不要干其它事,关掉你的手机、GMAIL还有校内,全心全意投入工作,试过几次之后会发现这种感觉很爽,而且效率非常高。有MM的同学可以把手机调到如果有消息一个小时震动一次,不会回太晚又不用老关心手机有没信息。

4.搜索优于导航:

找文件的时候,可以借助一些工具,比如mac下的spotlight, Find Path,QuickSilver等,来更快地定位文件。不要从根目录开始,一点点地找,这样既加重了你的负担(你得记住它是存在哪的),还减慢了速度。


 

5.建立本地缓存:

把特别常用的手册、维基百科等存在本地,因为网速即使再快也有延迟。更多的可能是在等wiki加载完毕的那几十秒里,为了“节约时间”又跑到腾讯看两篇新闻,结果一看就是20篇,回来忘了为啥要查这个词条。

6.拆分显示器:

有多台显示器的话最好,可以分为工作区和文档区。如果不方便用两台显示器的话,可以使用虚拟桌面,把不同的应用程序分到不同的区域。这样做可以极大地避免你分心。但是得注意,避免把虚拟桌面搞成3D或者花哨之极。这样只会让你花大把时间做出一个漂亮效果以后又因为性能问题换成最基本的单桌面。

7.学会一门脚本语言:

尽力学学python,AppleScript或者任何一门比较流行的(这样可以让你在有困难的时候更容易获得帮助)脚本语言。它们可以帮助你极大简化日常的动作。比如以前有一位老师,计算机图形学博士,交给一项任务──要把300来张图片分别从中间分成两张。交给我任务的时候他说:不用急,慢慢来,给你一个星期,你每天分40多张就行了。显然,如果他知道有python这种玩意可以在10分钟内处理好这项工作的话,就不会花着钱找别人做了。

脚本语言可以完成的工作非常之多,几乎你可以想到的,有大致固定流程的工作它都可以做:

想下一大堆MP3听,却不知道听什么?没问题,可以写个脚本到百度mp3榜自动把排名前100的歌下下来,放到ITUNES里,建好播放列表,慢慢听。

想每天听锵锵三人行却又不想用收费的源?没问题,写个脚本每天自动去凤凰抓下视频源,还可以自动把广告切掉。

想抢课可是人不在电脑边?还是没问题,让脚本自动去跟熬夜抢课的孩子们竞争。

工欲啥啥啥必先啥啥啥。但是需要注意有一个trade off,如果每天就单纯追求效率,为效率而效率就没有任何意义了。这就跟为了学英语,整天挂在网上找英语资料,下了几百个G还继续下却一个音频不去听一个视频不去看一个道理。作者也注意到了这个现象,于是建议:

每天学会一小招,或是一个快捷键,或是quicksilver里的一个小工具,用熟它。
34 有用
0 没用

查看更多豆瓣高分好书

评论 4条

查看全部4条回复·打开App 添加回应

卓有成效的程序员的更多书评

推荐卓有成效的程序员的豆列

了解更多图书信息

豆瓣
免费下载 iOS / Android 版客户端