程序员父亲的遗产:编程十大诫

原文系一位程序员之子所述,下为译文。

我的父亲在和我彻谈编程两个星期之后就去世了。

那个时候我22岁,一个刚刚完成美学学士毕业设计的大四学生。而我的父亲62岁,比大多数我同龄人的父亲都要老。早在60年代,他就已经在田纳西理工大学开始编程了,那个时候他在穿孔卡片上写FORTRAN语言。不得不承认,我的父亲学富五车、学识渊博。

我和编程第一次亲密接触的时候,它像烟花,瞬间绚烂了我的生命。它给我的感觉既魔幻又强大,在很多方面都比视觉设计要更富有创造性和实践性。

当我节假日回家的时候,我的父亲分享了他的《编程十诫》。他打印了一份,然后和我一条一条地讨论。这也是我和我父亲之间为数不多的有关于编程的讨论,然后他就突然离开了我。或许也因为这个原因,这个《编程十诫》深深地刻在了我的脑子里,与那天我父亲的音容一起,成为我最美好的回忆,磐石无转移。

灵感源于1971年首次发行的《The Psychology of Computer Programming》一书,下面是我父亲总结的编程十诫:

1.理解并承认自己也会犯错误。

关于此点的关键就是要在发布之前早点发现。不过幸运的是,除非你是在喷射推进实验室开发火箭制导软件,否则很少有错误是致命的。所以,犯了错误之后我们可以从中学习经验教训,然后保持一个积极的心态,继续前行继续进步。

2.人非圣贤,孰能无过。

复审代码的目的就是为了发现问题。不过如有遗漏,也不可把责任归咎于某一个人身上去针对他。

3.人外有人、天外有天。

三人行必有我师,问问良师益友,会让你受益无穷。要学会倾听他人的意见和建议,特别是当你认为毫无必要时,更要怀着谦虚的态度、广阔的胸怀接受他人的指教。

4.重构代码要三思。

“修复代码”与“重构代码”有着本质的区别。在深思熟虑之后,如果还是想追求代码审查时框架风格能有所变化,而非沿着原先的道路予以改进,那么就重构吧。

5.尊重他人,耐心、礼遇每一个人。

经常跟开发人员打交道的非技术人士通常会觉得程序员目中无人、脾气又大又臭。不要让你的怒火和缺乏耐性让他们心中的这种形象越来越高大。

6.世界上唯一不变的就是变化。

敞开胸襟、面带微笑地去接受变化。把需求中的、平台上的以及工具里的每个变化都当做全新的挑战,而非视为大麻烦来抵制。

7.真正的权威来自知识,而不是职位。

知识造就权威,权威带来尊敬——所以,如果你想在计算机领域中中获得他人的尊敬,去学习吧。

8.为信仰奋斗,然后优雅地接受失败。

有时候我们的想法会被否决。即使后来发现我们是对的,也不可存有怨恨情绪,或者说类似于“我老早就说过会这样,还不信”的话。不要让团队之间由此产生间隙,不要因为这点小事耿耿于怀、常常抱怨。

9.不要成为“角落里的程序员”。

不要成为那种隐藏在办公室不起眼的角落里,在点餐时才冒出来的人。躲在角落的里程序员往往短视、与世隔绝、与大家脱节。他们会像隐形人一样不发表任何意见。所以,要参与到大家的讨论中,成为办公室团体中协调的一员。

10.可以批判代码,但不能人身攻击

应该友好地对待每一个程序员,但是在指出问题时可以犀利、一针见血。我们的批评应该尽可能的积极,并且以改进代码为目标,不可无的放矢。同时,还应该考虑当地标准,程序规范以及提高后的性能表现等等。

至今我还留着这份《编程十诫》。按照上面所述,我成长为了一个优秀的程序员。有时候遇到困境,我会忍不住地想,如果我的父亲还在,他会给我哪些建议?虽然这已经成为了妄想,但是我相信,我亲爱的父亲会为我一直牢记这十条戒律而骄傲的。

文章相关课程 基于SSH2+LigerUI+JBPM5+Node.js技术实现大型J2EE金融行业财务预算系统 (第二季适合二年以下的开发者) Greenplum 分布式数据库开发入门到
精通(架构、部署、管理、开发和调优) Oracle数据库专家实战培训课程(零基础、实战、全面、
深入)

时间: 2024-12-27 03:50:35

程序员父亲的遗产:编程十大诫的相关文章

程序员父亲的遗产——编程十诫

英文原文:Dad and the Ten Commandments of Egoless Programming 我的父亲在和我彻谈编程两个星期之后就去世了. 那个时候我 22 岁,一个刚刚完成美学学士毕业设计的大四学生.而我的父亲 62 岁,比大多数我同龄人的父亲都要老.早在 60 年代,他就已经在田纳西理工大学开始编程了,那个时候他在穿孔卡片上写 FORTRAN 语言.不得不承认,我的父亲学富五车.学识渊博. 我和编程第一次亲密接触的时候,它像烟花,瞬间绚烂了我的生命.它给我的感觉既魔幻又强

Java程序员容易犯的常见十大错误

1. Array 转 ArrayList 一般开发者喜欢用: List<String> list = Arrays.asList(arr);  Arrays.asList() 会返回一个ArrayList,这是Arrays里内嵌的一个私有静态类,而并不是java.util.ArrayList类 java.util.Arrays.ArrayList 有set(), get(), contains()方法,但并支持添加元素,所以大小是固定的,想要创建一个真正的ArrayList,你应该: Arra

Java程序员的日常 —— 《编程思想》包和访问权限

包的作用 在C++中有命名空间的概念,这是因为,不同的项目或者人写出来的代码,可能名称是一样的.比如,java.util中有List,java.awt中也有List,那么我们在开发中,怎么会知道使用的是哪一个List呢? 在Java中是使用包来管理的,比如你可以这样使用: import java.util.ArrayList; java.util.List list = new ArrayList(); 既可以像第一行那样,使用import引用包:也可以直接在Java代码中指定包的路径.一般来说

【观点】程序员必须知道的编程格言

导读:本文是从<What are your list of must know programming proverbs ? >这篇文章翻译而来. 内容如下: 继Kevin给了我们10条按他的观点的每个程序员必须知道的编程格言.可以看出,这都是不错的格言,而下面是我自己最喜欢的编程格言. 1.保持简单直白(Keep It Simple Stupid) 2.不要自我复制(Don't Repeat Yourself) 3.能干的人解决问题.智慧的人绕开问题(A clever person solv

Java程序员的日常—— 《编程思想》关于类的使用常识

Java虽然利用JVM,让程序员可以放心大胆的使用,可是仍然会出现内存泄露等问题.世上没有绝对的银弹,因此也不能完全把所有的任务都交给JVM,了解Java中的初始化与垃圾回收还是必不可少的知识. 关于构造器 在C中,如果要使用变量需要先申请内存.在Java中,如果你需要创建一个对象,也可以直接new出来,JVM会自动帮你管理. 默认的类,会自动有一个无参的构造方法,当然你也可以自己定义有参的构造方法.但是要注意,一旦自己定义了,就不再帮你自动创建无参的构造方法了. 一个类可以有多种构造方法,通过

程序员:如何成为编程高手并以此创业

此篇文章出自雷军之手,是他为软件开发2.0技术大会准备的演讲稿,但由于某些原因没有派上用场.这里跟大家分享下,对我们程序员来说还是大有裨益的. 每个IT企业,尤其是初创企业,非常苦恼:找不到好的程序员.现在大学.软件学院及各种培训机构,每年培养几十万的程序员,毕业的每个人都有同样困恼:找不到好的工作.问题出在哪里呢?其实,企业需要的是不是刚会写程序的人,需要来了就能干活的人,尤其能把活干好的人.而刚毕业的大学生多半刚学会如何写程序,的确很难企业需求. 企业到底需要什么样的程序员,一个刚入门的程序

程序员:伤不起的三十岁

http://www.cnblogs.com/watsonyin/archive/2012/09/07/2674618.html 程序员干到30岁,好不容易从码奴混到了白领,却再也干不动了,还时时面临失业的危险.30岁,是一个程序员伤不起的年龄.明天,何去何从? 一.30岁现象 在官场上,曾经有一个59岁现象,就是官员们会在59岁时,会使劲捞上一把.很明显嘛,权力过期作废,再不捞就要退休了,没有机会了. 在程序员的圈子里,也有一个30岁现象.当然,如果你有铁饭碗,比如在国企或政府机关,那你是无法

黑马程序员 十一、网络编程

Java帮帮-IT资源分享网  十一.黑马程序员-网络编程 第 11 天:网络编程(1)  1.什么是网络编程? 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算 机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后 接受另外一个设备反馈的数据.现在的网络编程基本上都是基于请求/响应方式的,也就是 一个设备发送请求数据给另外一个,然后接收另一个设备的反馈.在网络编程中,发起连接 程序,也就是发送第一次请求的程序,被称作客户端(Client)

优秀的程序员是这样选择编程技术书的

评估一本编程书籍最好的地方就是从这本书的目录开始.如果你想要学习的主题没有出现在目录中,那么你就可以假设这本书中的所有内容对你来说帮助会很有限. 下一步,大致浏览几个章节,看看这些章节是如何组织的.一些作者只满足于用一两种方法来解释一个话题,这个的用处不会很大.好的书都会对学习一个主题会提供三到四种方法,包括实践练习.源代码.详细解释和程序作品. 查看章节介绍.冗长和枯燥的章节介绍表明这本书包含了大量你可能不需要的内容.另一方面,当章节介绍内容太短以至于无法介绍全面,你会发现这个介绍内容缺失必要