2011年二月月 发布的文章

专业程序员

本文翻译自"The Professional Programmer",来自于《程序员应该知道的97件事》一书中的某个章节。

什么是专业程序员?

一个专业程序员的唯一的、最重要的特点是个人的责任。专业程序员会对他们的职业生涯负责,会对他们的估计负责,会对他们的计划承诺负责,会对他们的错误负责,会对他们的技艺负责。一个专业程序员绝不会将他们的责任推到其它人身上。

·如果你是一名专业程序员,你将对你自己的职业生涯负责。负责你的阅读和学习。负责让你紧跟上行业和技术最新发展的步伐。有太多的程序员认为培训他们是雇主的责任。对不起,这真是大错而特错。你想过医生会那样做吗?你想过律师会那样做吗?他们不会。他们会利用自己的时间并且自掏腰包对自己进行培训。他们花费大量业余时间阅读专业期刊或法院判决书。他们努力保持着与时俱进。我们也必须如此。你的雇佣合同明确地阐明了你和你的雇主之间关系。简而言之:他们承诺付给你薪水,你承诺做好工作。

·专业程序员会对他们编写的代码负责。除非他们认为代码可以正常工作了,否则他们绝不会发布代码。用一分钟考虑一下。如果你愿意发布那些你尚不确信可以正常工作的代码,那你怎么可能自称是一个专业程序员呢?专业程序员们预计QA(译注:Quality Assurance,质量保证)人员无法从他们的代码中找出任何问题,因为他们发布的代码都是经过彻底地测试验证的。当然QA也会发现一些问题,毕竟人无完人。不过作为专业程序员,我们的态度必须是:不给QA留下任何问题。

·专业程序员是富有团队精神的成员。他们不仅要对自己的工作负责,他们还对整个团队的成果物负责。他们相互帮助,相互指导,相互学习,甚至在必要的时候代替对方工作。当一个队友失败了,其他人会加进来。他们知道总有一天他们也会成为那个被代替工作的人。

·专业程序员无法忍受庞大的Bug列表。一个庞大的bug列表是草率的。一个在问题跟踪数据库中有着成千上万个问题的系统是一场因草率而导致的悲剧。事实上,在大多数项目中,对问题跟踪系统的急切需求恰恰是一种粗心大意的病兆。只有规模超级庞大的系统才应该有这么冗长的bug列表,并且需要自动化地管理它们。

·专业程序员不会制造混乱。他们以技艺为豪。他们保持代码整净,结构良好,易于阅读。他们遵循业界公认的标准和最佳实践。他们从不仓促行事。想像一下,假如你有一个灵魂出鞘的机会,你在体外观看一名医生给你进行心内直视手术。这位医生有一个最后期限(在字面意义上的)。他必须在心肺体外循环机损坏你太多的血液细胞之前完成手术。你想让他怎么做呢?你想让他像一个典型的软件开发者那样,仓促行事并制造一团混乱吗?你想让他说:“我一会儿会回来解决这个问题的”吗?或者你想让他仔细地遵守手术规范,不慌不忙,自信他的方法就是他能合理地采用的最好的方法。你想要混乱还是专业性?

专业程序员是负责任的。他们对职业生涯负责,对保证代码的正常运行负责,对他们的技艺的质量负责。即使是最后期限迫近,他们也不会放弃原则。事实上,当压力增大时,专业程序员会更加坚定地坚持那些他们认为是正确的原则。

By Uncle Bob

 

持续学习

本文翻译自"Continuous Learning",来自于《97 Things Every Programmer Should Know》一书中的某个章节。

我们生活在一个引人入胜的时代。软件开发分布在全球各地,你知道那里有很多人可以胜任你的工作。你需要不断学习以保持你在市场上的竞争力。否则,你将变成一条恐龙,专心从事某一个工作,直到有一天,你不再被需要或者你的工作被外包给了其它更为廉价的开发人员。

那么,你对此该怎么办?一些雇主非常慷慨地提供培训,拓宽你的技能。其它雇主则根本无法抽出时间或提供任何培训经费。为了谨慎起见,你需要为自己的教育负责。

下面是一个让你保持持续学习的方法列表,其中许多可以在互联网上免费找到:

·阅读书籍、杂志、博客,订阅twitter种子,浏览互联网站点。如果你想深入了解某一主题,可考虑加入一个邮件列表或新闻组。 

·如果你真想深入研究某种技术,抓住它 – 编写一些代码。  

·尽量找到一名导师与你一同工作,因为成为最牛的人将阻碍你的教育。虽然从任何一个人身上你都可以学到一些东西,但是从那些比你更聪明更有经验的人那里,你可以学到更多。如果你找不到导师,那么请继续往下看。

·使用虚拟导师。在互联网上找到那些你真正喜欢的开发者和技术书籍的作者,阅读他们写的一切。订阅他们的博客。

·去了解你使用的框架和库。熟悉它们的工作原理可以让你知道如何更好的使用它们。如果它们是开源的,那你真是幸运。使用调试器单步调试这些代码,弄清楚在幕后发生的事情,你将看到由那些真正聪明的人编写和评审的代码。

·每当你犯了一个错误,修正了一个bug,或者遇到了一个问题时,设法真正理解所发生的事情。很可能其它人也遇到过相同的问题,并把它放在了互联网的某个角落里。这时Google就会变得十分有用了。

·学习东西的一个真正的好方法就是去教它或者讨论它。当人们打算去听你的演讲并向你咨询问题时,你就会动力十足的去学习。尝试在公司组织一次午餐学习会,或用户组,或一个本地会议。

·加入或启动一个学习小组或者一个你感兴趣的有关语言、技术或行为准则的本地用户组。

·参加会议。如果你无法参加,许多会议都会将现场演讲视频免费放到网上供下载。

·上下班路程过长? 听播客吧。

·曾经在代码库上运行过静态分析工具或者看到过IDE给出的警告吗?弄清楚他们报告的是什么以及为什么报告。 

·遵照《程序员修炼之道》一书中的建议并且每年学习一门新语言。至少学习一门新技术或工具。扩展技术视野将给你带来新的想法,你可以将这些想法用到当前的技术栈上。 

·不是你学到的所有一切都与技术相关。学习你正在从事的行业的领域知识,这样你可以更好的理解需求并且帮助解决业务问题。学会如何更加高效-如何更好的工作-是另外一个很好的选项。

·回到学校 

拥有《黑客帝国》中尼奥所具有的能力将是多么好啊,只需简单地下载需要装入我们大脑的信息。但是我们没有这种能力,因此我们的学习需要一个时间保证。你无需醒着就去学习。每星期花一点时间就比什么不学要强。拥有(应该有)一个工作之外的生活。

技术日新月异,不要落在后面。

By Clint Shank

 

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats