ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 《卓有成效程序员》第一章

《卓有成效程序员》第一章

原创 Linux操作系统 作者:hzbook2008 时间:2009-03-19 16:14:58 0 删除 编辑

第一章. 简介


目录

为什么要写一本关于程序员生产力的书?

浏览器的地址补全

本书包含哪些内容?

第一部分:机制 (生产力法则)

第二部分:实践 (思想)

如何读此书?



 SHAPE


生产率是指在一定的时间内所完成的有效工作量。在同样的时间内,生产率高的人能比生产率低的人完成更多的有效工作。本书就是讲述如何在开发软件的过程中变得更加高效同时,本书的讲述将会跨语言和操作系统:很多技巧的讲述都会伴随多种程序语言的例子,并且跨越三种主要的操作系统,Windows(多个版本),Mac OS X以及 *-nix (Unix或者Linux)

本书讨论的是程序员个体的生产力,而不是团队的生产力问题,所以它不会涉及方法论(好吧,可能总会在这里或那里谈论到一些,但肯定不会深入讨论)。同时,本书也不会讨论生产力对整个团队的影响。我的使命,是让作为个体的程序员通过掌握恰当的工具和思想变得更加高效。



为什么要写一本关于程序员生产力的书?


我是ThoughtWorks的一名员工。作为一家跨国咨询公司,ThoughtWorks拥有大约1000名雇员,分公司遍布全球六个国家。因为咨询工作需要长时间的旅行(特别是在美国),我们公司的员工整体而言相对年轻。记得有一次,在一次公司组织的郊游活动(当然还有免费的饮料)中,我和一个人力资源部的同事闲谈起来。她问我有多大年纪,我告诉了她,她立即恭维地对我说道:哇,你已经老到足够可以丰富我们公司多样性了这激起了我的一些思考:原来我已经在软件开发领域干了很多年了(莫名的伤感在我的那个年代,计算机甚至还是由煤油驱动的呢)。这些年来,我观察到一个有趣的现象:软件开发人员正在变得越来越低效,而不是更加高效。在古老的时代(对于计算机的时代而言,那是20年之前),让计算机跑起来都是一件非常困难的事情,更不要说编写程序这些事了。你得是一个足够聪明的开发人员,才能让那难以驾驭的机器变得对你有用。如此残酷的现实,逼迫当时一些非常聪明的人开发出了各种各样的方法来和难搞的计算机交互。

正是因为这些程序员的努力,计算机慢慢地开始变得易用。层出不穷的创新让计算机用户的抱怨不再那么多。这些聪明的家伙开始为他们所取得的成就庆祝(就像所有其他能让用户闭嘴的程序员一样)。然后,一件有趣的事情发生了:对于整整一代程序员来说,他们不再需要奇技淫巧,计算机就会乖乖地满足他们的要求,他们也和普通的计算机用户一样,习惯了如今易用的计算机。那这有什么问题呢?毕竟,你不会拒绝提高生产力,对不对?

其实问题的关键在于,那些对普通用户而言能提高其工作效率的东西(比如漂亮的图形界面,鼠标,下拉菜单等等),对于其他一些人(程序开发者们)来说却是他们获得计算机最佳性能的障碍。易用高效在很多时候其实是不相关的。那些在使用图形界面(好吧,直截了当地说,就是Windows)的过程中长大的程序开发者们,那些老一代聪明人所使用的不仅酷而且高效的技巧一无所知。他们的计算机在大部分时间里根本不是在,简直就是在散步。我写此书,就是为了解决这个问题。

 





浏览器的地址补全

 


在这里举一个简单的例子:你每天会访问多少网站?我们知道大多数网址都以”www.“开头并以”.com“结束。但很少人知道现在的浏览器有一个很方便的快捷键:地址补全。地址补全使用热键组合,来为你在浏览器地址栏中输入的字符串前后分别加上”www.“和”.com“。地址补全功能在不同浏览器中的使用会有细微的差别。(注意,地址补全和浏览器的自动补全是不同的,现今的浏览器也都有自动补全功能。)他们之间的差别在于效率。自动补全功能会到网络中寻找与你输入的名字相符的站点。如果没有找到,浏览器为它加上前缀和后缀,再次尝试到网络中寻找。如果网速够快,你可能根本注意不到这个微小的延迟;但这些错误的点击累积起来会拖慢整个网络的速度



Internet Explorer


Internet Explorer (IE)的地址补全功能,使输入有标准前缀和后缀的网址变得更加快捷。使用快捷键Ctrl-Enter,浏览器中的地址就会分别在前后加上”www.“”.com“


Firefox


Windows版的Firefox浏览器,它的快捷键跟IE一样。而在Macintosh上,快捷键是Apple-EnterFirefox还有一个快捷键Alt-Enter,它会给地址加上”.org“后缀,这个快捷键在所有支持Firefox的平台上都一样。

Firefox还有其他一些似乎很少有人用到,但却很方便的快捷键。比如在Windows下使用快捷键Ctrl + <标签号>或者在OS X下使用快捷键:Apple + <标签号>可以直接跳到某个标签。

好吧,用上这个快捷键,无非在每个页面上少敲8下键盘而已,看起来似乎没有太多价值。但是,想想看你一天要访问多少页面,这每个页面上的8次击键就会体现出它的价值。这是加速法则的一个很好的例子,我们将会在第2章中详细介绍这个法则

当然,节省每个页面上的8次键击,并不是谈论这个例子的真正目的。我曾经在所有我认识的开发人员中做过一个非正式的调查,得到的结果是只有20%的人知道这个快捷键。他们都是无可争议的计算机专家,但他们从来没有使用这些非常简单的方法来提高他们的生产力。我的使命,就是改变这样的现状




本书包含哪些内容?


 

The Productive Programmer》包含两部分。第一部分,讨论的是生产力的机制,以及一些能使你在软件开发过程中变得更加高效的工具。第二部分,讨论的是一些提高生产力的实践,以及如何利用你的知识和他人的知识来更快更好地开发软件。在这两部分中,你都可能会看到一些你已经了解的或者从未接触的东西。


第一部分:机制(生产力法则)


 

你可以认为此书仅仅是教你如何使用命令行,以及另外一些能让你变得更加高效的方法的书籍,你确实也可以通过学习这些方法获得收益。但是,如果你能通过阅读此书理解为什么有些方法可以提高生产力,你就拥有了一双能识别这些方法的慧眼。本书通过创造模式来描述一些东西,从而为这些事物命名:一旦一件东西有了名字,当它被再次看到时就会更容易被认出来。此书的其中一个目标,是定义一系列的生产力法则,来帮助你更好地定义你自己的提高生产力的技术。就像所有的模式一样,在有了名字之后,它们会被更简单地识别出来。同样,知道为什么一些东西会让你更加高效,会帮助你更快地识别出其他一些能使你工作得更有效率的东西。

此书会更专注于讨论程序员的生产力,而不仅仅讨论如何更加有效地使用计算机(虽然肯定会有这个副作用)。所以,本书不会涉及很多对于业余(甚至专业)用户来说显而易见的东西(虽然之前的浏览器地址补全章节介绍了一个显而易见的技巧,但那是个例外)。程序员是一群特殊的计算机用户。我们显然应该比其他用户更懂得如何让计算机更加高效地工作,因为我们是最了解计算机工作原理的人。本书的大多数内容,讲述的是如何通过与计算机交互而使你的工作更加简单,快速和高效。不过我也会介绍一些唾手可得的提高工作效率的办法

第一部分的内容涵括了我所创造的,获取的,以及通过威逼利诱从朋友那里得到的,或者从书本里读到的所有能提高生产力的方法。我的初衷是致力于做一个世界上最好的提高生产力的方法大全。我不知道我是否做到了,但不论如何,你会发现我所收集的这些方法不会让你失望。

当我开始整理这些绝妙的提高生产力的方法时,我注意到一个个模式开始显现。看着这些技术,我开始为它们分门别类。最终,我建立了一些关于程序员生产力的法则“──嘿嘿,坦白地说,我想不出比这更自命不凡的名字了。这些法则包括加速法则, 专注法则, 自动化法则以及规范性法则,它们描述了一些能让程序员更加高效的实践。

第二章,加速法则描述了如何通过提高速度来变得更加高效。很明显,如果一个人在完成某件任务时要比另外一个人速度快,那么在这件事情上,他肯定比另外一个人更加高效。很显然的一个例子,就是在本书中会经常提到的数目繁多的键盘快捷键。启动应用程序,管理剪贴板,以及搜索和导航等,都属于加速法则的范畴

第三章,专注法则,描述了如何通过利用工具和环境的因素,来达到超级生产力的状态。本章讨论了如何减少环境中(包括物理和心理的环境)混乱,如何有效地去搜索,以及如何消除干扰。

通过让计算机为你完成一些额外的工作,当然会使你更加高效。第四章,自动化法则,描述的就是如何让计算机为你做更多的工作。每天的工作中要做的很多事情其实都可以(而且应该)让计算机自动为你完成。这个章节还包括了一些如何让你的计算机为你工作的例子和策略。

规范性canonicality)其实只是给DRY (Don’t Repeat Yourself)法则起的一个漂亮名字,后者第一次被大力推崇是在Andy HuntDave Thomas的《The Pragmatic Programmer(Addison-Wesley)中。DRY法则建议程序员去除重复存在的信息,为每个信息创建唯一的存放处。《The Pragmatic Programmer》已经很形象地描述了这个法则,在第五章规范性法则中,我会列举几个具体的例子。



第二部分:实践(方法)


 

作为一个咨询师,我有很多年软件开发的经验。相较于经常会在同一个代码库上工作多年的开发人员,咨询师的优势是可以接触很多不同的项目、不同的方法。当然,我们看到的经常是一些火车残骸(很少有咨询师会被叫去修复健康的项目)。我们还可以接触软件开发的不同阶段:从开始就参与构建,或者在中途提供一些建议,或者在一个项目遭受重创之后才去拯救。随着阅历增长,即使是最不专心的人,也会锻炼出察觉对错的能力。

我在这些年看到了很多对提高生产力有正面或负面影响的事情,在第二部分中,我为他们做了一些提炼。它们基本上无序地打包在一起(虽然你可能会经常惊讶地发现,同一个想法会在不同的地方出现)。我没有说这些东西应成为如何提高开发效率的最终纲领,它们只是我所观察到的一些事情的一个列表。对于所有的可能性而言,这只是其中一个很小的子集



如何读此书?


 

本书的两部分是相互独立的,所以你可以按任何顺序去读。虽然第二部分的内容因为有点类似于故事体,可能会存在一些没有预见到的相互联系,但是大部分的内容还是无序的,你仍旧可以放心地按照你所喜欢的顺序去读。

 

最后,一个小小的警示:如果对一些基本的命令行操作(管道,重定向等)不够熟悉,你应该先阅读一下附录A。第一部分中的很多窍门和技巧需要依赖于一个环境,附录A会指导你如何去搭建这个环境。我相信对你来说这不会是件难事。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16502878/viewspace-573131/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-10-23

最新文章