本文写给所有可爱的程序员,(我)你们都是一群可爱的,用双手建造世界的思想家。
从今天起,我要做一个懒惰的程序员。
第一 拒绝鼠标
从今天,我将拒绝鼠标。
鼠标,是鼠标手的根源,无数的程序员都被鼠标手所困扰,这似乎已经成为了程序人员的专利。我们养成了一个一个的“恶习”,比如,滥用鼠标右键刷新,看文档的时候,喜欢用鼠标来标记正在阅读的段落等等。这些非常规的使用使我们的手得了严重的疾病,我不知道,这样继续下去,当我们牙齿掉光的时候,是否还有能力抚摸妻子动人的面庞。
所以,我要从以下几个方面拒绝鼠标的诱惑:(虽然某些时候它真的很方便)
1. 我要开始使用Emacs或是Vim
Emacs和Vim就是程序员的倚天剑和屠龙刀!花一点时间学习来学习它,即便我以后不做程序员了,也将会终生受益。因为它同时也是普通人的编辑利器。
作者本人曾经就是Emacs使用者,后来转入了Vim。直言不讳的说,玩Emacs或Vim本就是一个享受的过程,因为你总能无意间挖掘出它的一个又一个有趣用法。
如果你还执迷于Notepad++这些编辑器,看看这个Wiki:《Comparison of text editors》,你还有什么理由不选择它呢?
2. 我要使用键盘来浏览网页
学会了Emacs或是Vim,我开始想把这种高效的用法用在浏览网页上,毕竟这也会占据我的大部分时间。
如果是Vim的话,可以选择:Vimperator(firefox)或是Vimium(Chrome)
如果是Emacs的话,可以选择:Firemacs(firefox)或是Edit with Emacs(chrome)
3. 我要使用键盘来操作系统
我要使用更多方便的工具来帮助我管理系统:
我要使用AutoHotKey,使重复工作一键完成。
我要使用Totoal Commander,使系统文件管理变成一件轻松而有效率的事情。
我要学习更多的快捷键,包括Win+R的常用命令,Outlook的快捷键,让这些以前只能缓慢移动鼠标的操作变成快捷的键盘操作。
第二 少用键盘,甚至少看屏幕
鼠标用的少了,键盘却用得多了,这还不够。
1 我将使用更多的时间来阅读纸质的书籍,而非PDF
阅读纸质书籍基于两点:
第一,我们可能有Twitter,有新浪微博,有QQ,电脑面前阅读有可能会使我们精力分散。
其二,阅读纸质的书籍会更加集中精力,触觉和视觉的结合会让我们记忆更加深刻。
2 我将用更多时间进行交流和思考
我将腾出更多的时间用于思考,而不是腻在电脑面前。我将花更多的时间思考人生,思考设计,甚至思考我正在思考的东西。
第三 少写代码
1 构建自己的代码库
所有我写过的代码,我都要保存起来,反复思考,修改,尽量让其变成通用的代码。
遇到所有我没有写过的代码,我都要抓出其最独立的代码段,算法段,反复思考,修改,让其变成通用的代码。
我要把所有我思考过的代码都保存起来,放到我的代码库里边。遇到一个问题,先看看我的代码库里有没有?有的话就拿出来,直接用,或是修改一下再用,没有的话才自己重新写过,当然,这些新实现的代码将再次进入我的代码库。如此一个良性循环,从此,很多相似的问题再也难不倒我,因为我熟悉我的代码就像熟悉自己的身体一样。
因为我承认:
1 我的记忆是有限的,它不能永远记得所有细节。
2 再造轮子是一件可怕的事情,除非我能造得比人家更好。
2 让代码自己生成
最简单的代码生成是非逻辑生成,比如李先静曾经举过这样一个例子:
前几天遇到一个问题,要定义一组宏,它的格式是这样的:
KEYMAP(GDK_Op_Left, GDK_F12, DIKS_F12)
KEYMAP(GDK_Op_Right, GDK_F13, DIKS_F13)、
…
大约有30多行,第一列的Op_Left之类是自定义的按键,是我们讨论的结果,放在一个表格中,手工把这份表格转换成以上的宏,不难也要不了多少时间,但这样单调的事很容易出错,特别对于我这样粗心大意的人来说。于是决定用awk来做:
awk ‘BEGIN{i = 4} {print “KEYMAP(GDK_” $1 “, GDK_F” i “, DIKS_F” i “)”; i++}’ keys.txt
这就是代码产生器!就一行代码。简单吧,它却产生了30多行代码。其实我经常在用这样的代码产生器,给我节省了不少时间,减少了出错的可能。所以能用脚本就用脚本,脚本实现困难时才考虑用C/C++等编译语言。
复杂的代码生成便是逻辑生成,有这样一篇文章可以参考:《浅谈代码生成》
第四 不调试程序
我要抱着严谨的态度写程序,我要如同追求艺术极致一般追求编码的极致。虽然我们知道,这世界上有太多的程序员,他们远远比我们厉害。但这并不妨碍我们超越他们的脚步。
我要像熟悉自己的身体一样熟悉我的代码,熟悉我思维中的每一个误区,每一个漏洞。我要写出优雅,优美的代码,而非依赖调试工具来找出问题。
我要善用我的眼睛,让它接受每一段代码,我要善用我的大脑,让它模拟出每一段代码的问题。我的思维会为我调试一条语句,不管其是空指针还是内存泄露。我的眼睛会为我找出每一个语法错误,不管是我粗心还是大意。(参见李先静的博客:《程序员成长计划》,像机器一样思考, 1, 2, 3)
写完一段代码我不会心急地运行,看它的效果,我会花上10分钟检查我的代码,直到我确定,或者是“自以为”是bug 0.
从今天起,做一个懒惰的程序员,虽然我知道这条路很难走,但这并不妨碍我的热情。因为我知道,总有一天,我会变得比那些现在我只能仰望的人更加懒惰!
原文:http://blog.imalbert.com/archives/35.html
相关推荐
所以让我们来成为一个能偷懒又有高效率的Android程序员。想知道怎么做吗?不用急,接下来我就会写到。有许多第三方的库和框架是可供我们使用。出于种种原因,我们并不知道这些库或者知道但还没用过。有的开发者开发...
首先,作者讲述了成为一个合格的程序员需要一个转换的过程,从一行代码都没写过,到成为一个合格的程序员,再到顶级程序员,这是一个蜕变的过程。编程和写文章像极了,都是需要大量的练习、大量的背景知识、积累大量...
mcurl是一个用于同步 curl 请求的 php 函数,基于select模型。 msql是一个用于 InnoDB 事务的 php 函数。依赖C++11 mysql客户端卷曲 PHP 版本 > 5.3建造你应该先构建php-cpp,你可以阅读文档。然后你应该安装mysql...
懒惰程序员的简单 console.log 安装 npm install --save-dev println 用法 require ( 'println' ) ; var number = 1 ; number . println ( ) ; ( "[" + number + "]" ) . println ( ) ; "====" . println ( ) ; try...
程序员开发高频词汇 本资源摘要信息涵盖了程序员开发高频词汇,...这只是程序员开发高频词汇的一部分,涵盖了抽象、访问级别、激活、活动的、实际参数、适配器、添加、地址空间、ActiveX数据对象、高级的等多个方面。
懒人箱lazybox是脚本的集合,可帮助自动化性能评估实验。 但是,它可以用于自动... 对于由本地系统中的多个小型实验组成的基础实验的自动化(例如,测量程序a和程序b在同一系统中运行时的执行时间),lazybox提供了run_
考拉-js 一个方便的方法集合,可以节省不必要的击键(适用于所有懒惰的编码人员)。 随意使用和改进。入门安装模块: npm install koala-js var k = require ( 'koala-js' ) ;kd || k.defaultValue(obj, default...
### 做一个会“偷懒”的程序员 在IT行业中,“偷懒”并不是指不负责任地逃避工作,而是指通过高效的工作方式、自动化工具及优化流程等手段来提高工作效率,减少重复劳动。本文将深入探讨如何成为一个聪明的“偷懒”...
软件开发是一项复杂的工作,一个小错误就可能导致整个项目延期甚至失败。因此,优秀的程序员需要非常注重细节,确保代码的准确无误。通过严谨的设计和测试流程,可以最大限度地减少错误的发生,从而提高软件的质量和...
一个方便的包,让懒惰的火炬程序员在 CPU 上运行时保持所有 :cuda() 调用保持原样。 ###用法: require ( ' fakecuda ' ). init ( true ) -- true is for using fakecuda, false or no-argument wont ...
正则表达式作为Perl语言中非常重要的一个部分,在书中也有详尽的介绍。包括匹配和替换的基本概念、捕获变量的使用、常用匹配选项(如不区分大小写、匹配多次、更改锚点的含义、匹配换行符等)、捕获变量的高级用法、...
machine_learning_examples 机器学习示例和教程的集合。 在找到相关的教程 在找到相关课程 直接课程链接 深度学习先决条件:Python中的Numpy堆栈 深度学习先决条件:Python中的线性回归 深度学习先决条件:...
因此,一个懒惰的程序员不必担心在星期五下午进行部署。 懒惰的程序员尽可能少地去办公室,可能是在其他非懒惰的人不在的时候,所以他们不会浪费时间。 懒惰的程序员知道自己交易中最好的工具,以便他们可以尽可能...
语录1:“一个好的程序员是那种过单行线马路都要往两边看的人。”(Doug Linder) 这条语录强调了程序员在编程中需要具备的 qualities,其中包括警惕性和周到的性。 知识点2:软件开发 语录2:“程序有问题时不要...