[译]对程序员新手的善意忠告

(本文译自ChuckJ的博客,个人认为很值得一读,不管是新手还是老手。Chuck Jazdzewski:昔年Delphi VCL的主要设计者,如今在微软据说主要做WPF。原文:
http://www.removingalldoubt.com/PermaLink.aspx/a32977e2-cb7d-42ea-9d25-5e539423affd

我的几个小孩看来都不会当程序员了,我本来有许多做程序员的忠告想给我的儿女,现在为了避免浪费,姑且就送给读者您吧,如果你正在努力地想成为一名程序员,那么这些话就是你的父亲想跟你说的——如果他是程序员的话。这些内容来之不易,源自我过去的奋斗。

坚持学习:阅读、参加技术会议、订阅杂志、参加培训。不管你采用什么方式以坚持学习,都把它摆在重要的位置。可以学习所有你能找到的程序语言;花时间看所有你能力所及的新框架、算法、技术、模式、范式。每当你为自己的工具箱添加一个新工具,你就能更容易地处理下一个编程问题。找几个益友,比你水平高许多的,学习所有他们能教给你的。永远不要停止学习。

学会沟通:我经常开玩笑说,作为程序员需要学的最重要技能就是如何在白板上画一个矩形。沟通对于程序员这个工作是至关重要的。与客户、用户、合作伙伴、老板、副总经理、CEO、董事会、风险投资人沟通,这些在你的职业生涯中会有一个时间会变得重要起来。学习如何在公开场合演说;学习写作;学习如何有效地沟通;学习不用吼、不生气、不激动而说服别人;学习不使用行业术语演说;帮助别人弄懂你正在做的事情;学习如何把事情分解为简单易懂的小块小块;学习通过类比和象征来沟通。学会沟通。

学会预测:看自己舒适地编程可以有多快。等到自己弄懂了再去预测一个任务需要多久才能完成,有预料之外的情况是正常的。计划自己的假期,按自己的计划生活。我不相信一个任务的完成时间能够得到很好的预测,除非能把任务分解为每个需要不到3天(或经常是1天)就能完成的子任务。按这个原则生活:遵守承诺、并永远做到比老板要求你的更多。承诺15天完成最后10天交货,这很好,比承诺5天完成最后10天交货好。其他人会依赖于你的预测做计划和安排,努力做好预测并确保你能舒适地完成,否则就可能活的不如意。刚开始你可能做得不好,保险起见,你可以找更有经验的来核对自己的预测,并不断让自己做得更好。学会预测,别人依赖于你。

承认错误:你总会犯错误的。你处理错误的方式将决定别人对你的看法,学习如何说“我错了。”如果你低估了做一件事情需要的时间,就在自己清楚时立即告诉别人;如果你弄破了当前的编译版本,就做修补;如果你产生了一个BUG,就做修改。不要不承认错误;不要为错误道歉;不要努力去隐藏错误;不要责备别人的错误,而要去帮助他。完全对自己的错误负责,否则你会重复同样的错。

不要让坏代码离开你的座位:你的工作就是写能工作的代码,永远不要发布你不能确认是否满足要求的代码。不仅因为这样会对你产生不良影响,而且一旦发布要找问题时成本要高得多也更困难。学会喜欢做代码覆盖,学会测试你的代码,要比专门测试你代码的人做得更好。如果代码提交后找到了BUG就要为自己感到难堪;如果是客户发现的BUG,就更应该感到难堪。不要依赖于别人给你找BUG,应自己找出来并做出修改。不要希望代码能够工作,应做测试;不要假定代码能够工作,应做测试;不要任何什么什么,只是去测试。如果你没有测试过,代码就不能工作,这一点你是可以肯定的。但是,即使你勤奋地测试,BUG也不会离开你。你总会犯错误,但要尽自己所能不犯错误。

编码是快乐的但发版也是你的工作:编程是快乐的,这是一个发现之旅,这是一个创造的过程,这是一个学习的过程,这是一个富于成就感的工作。你会为自己的手艺显示于屏幕上感到欣喜,你会为同伴对你的代码感到惊讶而兴奋,你会为别人使用了你的作品而高兴,如果产品被公众称赞、或被邻居使用、或被媒体评论,你会感到更满足。编程本应该就是快乐的,如果不是这样,就要找出原因,并处理好。但是,发版却不是这样。我过去常说发布一个产品感觉挺好,就像某人停止捶你了。你的工作就是把产品做完:改完BUG然后发布。如果有BUG需要修改,就改吧;如果有文档需要写,就写吧;如果代码需要测试,就测吧。这些都是发版的需要。老板付钱给你不是因为你编码,而是因为你发版。要擅长于你的工作。

记住这几个简单的句子:

·永远不要停止学习
·沟通是至关重要的
·遵守承诺、做比要求的更多
·“我错了。”
·代码没有测试过的都不能工作
·编码不是你的工作,发版是

评论: 0 | 引用: 0 | 查看次数: 4118
发表评论
登录后再发表评论!