`

致诸位新程序员

阅读更多

 

看起来我的儿女们都不适合做程序员。为了不让这份原本为我的新程序员儿子或女儿准备的慈父般的忠告功亏一篑,我打算把这份忠告强加于你。要是你刚踏上成为一名程序员的旅途,这里的建议也许你的父亲告诉过你,如果他也是程序员的话。这是一些我历经艰辛才习得的东西。

不断学习:阅读。参加会议。订阅期刊。上课。无论做什么都是为了让你不断学习,要充分重视学习。了解你可以找到的每种语言。尽你所能去花时间了解任何新的框架、算法、技术、模型、范式。每当往你的工具箱中多添一件工具,都会有助于你更轻松地解决接下来的编程问题。去拜师,即比你强得多的人,然后学会他们可以传授给你的一切。学无止境。

学会沟通:我经常开玩笑说,作为程序员你能学到的最重要的技能是,如何在白板上画长方形。沟通对于程序员的工作可谓至关重要。与买家、客户、用户、同事、老板、副总裁、首席执行官、董事会成员、风险投资人等各种各样的人沟通,这些沟通在你职业生涯中的某些时候会变得很重要。学会如何在公共场合下讲话。学会如何用英文写作。学会如何与他人有效沟通。学会如何心平气和地说服他人,而不要大喊大叫、火冒三丈、抑或惊慌失措。学会如何在演说时不讲行话。这样有助于别人明白你在做什么。学会把事物分解为简单明了的片断。学会借助比喻及象征去沟通。学会沟通。

做到可预测:要弄清楚你能以多快的速度惬意编程。要一直等到你明白了某项任务,然后才能预测出你会用多久完成此任务。要将意想不到的情况计算在内。要为假期及休息时间作安排。学会适应你的预测。我会把某项任务分解成若干子任务,并且每个子任务耗时不超过3天(通常都不足1天),而在此之前我不会认为自己对此问题有了充分认识,因此也就不去预测完成任务会用多久。请遵照这条规则生活,履行承诺,胜过交付。最好是只用10天就交付你承诺需15天完成的工作,而不是用10天才交付你承诺仅需5天的工作。人们依赖于你的预测,而进度安排及计划也会围绕着你的预测去组织。尽你所能把预测做到最好,并确保你可以惬意地完成它们,否则你会被要求去履行那些令你难受的预测。你起初并不善于此道;就要请更有经验的前辈与你一起去弥补、核实你的预测。学着变得更好。做到可预测;因为别人在指望着你。

承认自己的错误:你会犯许多错。你如何处理自己所犯的错正是他人如何评价你的依据。学会如何说“我错了。”要是你低估了自己完成某事所用时长,一旦你清楚了这一点就及时告诉大家。要是你弄坏了某个版本,就修复它。要是你弄出了bug,就搞定它。不要否认错误,不要为错误找借口,不要琢磨如何隐藏错误,不要把错误归咎于别人,为改正错误做点儿实事儿。要为自己的错误负责,否则你重蹈覆辙。

决不让烂代码从你的办公桌上溜走:作为程序员,你的工作就是编写可工作的代码,因此当你不确定代码符合此标准时,决不让代码从你的办公桌上溜走。一旦让问题代码从你的办公桌上溜走,与溜走之前相比,那样做不仅会令你难堪,而且要找出问题也会更昂贵、更困难。学会爱上单元测试。学会爱上代码覆盖率。学会测试自己的代码胜过付钱给别人去测试代码。在你签入代码后又找到了bug,应该为此觉得难为情。要是买家找到了bug,应该觉得特别难为情。不要指望别人为你找出bug,要靠你自己去找出并修复bug。不要期盼代码能正常运行。要测试代码。不要估计代码能正常运行。要测试代码。不要抱有任何侥幸心理。就是要测试代码。如果你尚未测试代码,那么代码就无法正常运行;对此你可能心知肚明。不过,即使你用心测试,有些bug还是会从你眼皮底下溜走。虽然你还会犯错,但是要尽你所能不犯错。

尽管编程很有趣,不过发布产品才是你的工作:编程很有趣。那是探索的喜悦。那是创造的喜悦。那是成就的喜悦。那是学习的喜悦。看到自己亲手完成的作品显示在屏幕上很有趣。有同事为你的代码而惊叹很有趣。有人在公共场合称赞你的产品、邻居使用你的产品、以及在媒体上讨论你的产品很有趣。编程应该十分有趣,若并非如此,就找出导致编程无趣的问题,然后解决之。可是,发布产品并无乐趣可言。我经常说起,发布一款产品感觉不错,就像某人不再打你时的那种感觉。你的工作就是完成产品,修复bug,然后发布。要是需要改bug,就改bug。要是需要写文档,就写文档。要是需要测试代码,就测试代码。所有这一切都是发布产品的一部分。编程不会给你带来报酬,唯有发布产品才会给你带来报酬。把你的活儿干漂亮。

记住这几句话,

  • 学无止境。(Never stop learning.)
  • 沟通至关重要。(Communication is critical.)
  • 履行承诺,胜过交付。(Under promise, over deliver.)
  • “我错了。”("I was wrong.")
  • 要是代码未经测试,那它就无法正常运行。(If it is not tested it doesn't work.)
  • 编程不是你的工作,发布产品才是。(Programming isn't your job, shipping is.)

 from http://www.ituring.com.cn/article/18838.


 

分享到:
评论

相关推荐

    软考程序员复习资料

    该资料为2016年软考程序员真题资料,希望诸位逢考必过。

    Perl语言入门_第五版

    本书的诸位作者自1991年起就开始在Stonehenge Consulting从事Perl教学工作,多年的课堂教学实践和积累下来的点滴经验,形成了本书特有的教学节奏,以及务实的知识点取舍。随文而至的习题,可以让你及时巩固各种概念...

    Perl语言入门 (第五版) 高清中文PDF版 -- 002

    本书的诸位作者自1991年起就开始在Stonehenge Consulting从事Perl教学工作,多年的课堂教学实践和积累下来的点滴经验,形成了本书特有的教学节奏,以及务实的知识点取舍。随文而至的习题,可以让你及时巩固各种概念...

    Perl语言入门 (第五版) 高清中文PDF版 -- 001

    本书的诸位作者自1991年起就开始在Stonehenge Consulting从事Perl教学工作,多年的课堂教学实践和积累下来的点滴经验,形成了本书特有的教学节奏,以及务实的知识点取舍。随文而至的习题,可以让你及时巩固各种概念...

    分区助手,诸位c盘很小的C盘杀手,这个很好用免费的快下载

    分区助手是一款磁盘分区管理工具,它可以帮助用户对硬盘进行分区、调整分区大小、合并分区、拆分分区、移动分区等操作。以下是分区助手的主要功能介绍: 1. 硬盘分区:分区助手可以帮助用户对硬盘进行分区,将硬盘...

    中文版的Dbeview

    在IT行业中,调试工具是程序员和系统管理员用于查找和修复代码错误的重要软件。Dbeview可能是该工具的中文界面版本,旨在帮助不熟悉英文的用户更方便地进行程序调试工作。 【描述】提到“中文的调试工具有它的缺陷...

    javasnmp源码-awesome-go-cn:awesome-go-cn

    我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。本列表翻译自 Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是...

    自写的调用Word2000部分功能的一个类

    这个类可能封装了Word的一些核心功能,允许程序员在自己的应用程序中调用Word的功能,如创建、编辑、格式化文档等,而无需直接操作Word的界面。 描述中提到“简单的很,诸位有兴趣可以完善”,这暗示该类库可能只...

    编程学习指南(书目).pdf

    针对当前的计算机教育的反思,为计算机专业的大学生提供了很好的成就自己计算机高手梦想的一套...为还处在迷茫状况下的学习软件开发、网络技术等计算机主要领域的人们提供了航标,一定能够启发诸位网友! 绝对经典!

    Perl语言入门(第五版-中文版).pdf

    本书的诸位作者自1991年起就开始在stonehenge consulting从事perl教学工作,多年的课堂教学实践和积累下来的点滴经验,形成了本书特有的教学节奏,以及务实的知识点取舍。随文而至的习题,可以让你及时巩固各种概念...

    使用Sublime Text进行C51单片机程序开发的配置方法+源代码+文档说明

    此正版几百大洋,诸位自己想办法。 2 汉化 * 复制此文件夹下的`Default.sublime-package`到`Sublime Text 3\Data\Installed Packages\`下 3 关闭自动更新 * 打开菜单`Preferences->设置-用户`,在"{}"中间输入如下...

Global site tag (gtag.js) - Google Analytics