关于编程,大学没有传授的10件事

标签: cnBeta 博文精选 | 发表时间:2011-07-18 23:32 | 作者:(author unknown) wang
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=5OVll5Fs3hGCc1KftJCjyQ
cnBeta 博文精选

感谢外包项目的投递
我依然记得当我完成学业时,我是多么的天真。那时我深信自己已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员。显然,开始工作后没多久我就意识到,还有很多事是我所不了解的。

在不断吸取经验的同时,我一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识。以下是我希望自己能在学校就学到的10件事。

  0. 我们总是错的

  开发人员有着相当大的自我意识,包含了一些其他的非技术性缺陷,这也正是为什么我们很难发现我们做错了什么。我看到过很多无休止的设计讨论,开发人员不断地发表自己的想法……呵呵!猜猜怎样……我们都错了,唯一的区别就是我们犯错的离谱程度不同。

  理解并接受这个事实非常重要,我们只有这样做了,才能敞开心胸去听听别人的意见,采用他们的想法,来得出一个更好的解决办法。

  1. 事情若有可能出错,就一定会出错

  也就是说“希望驱动开发(hope driven development)”,如果你对于某些事并不确定,如果你发现自己使用了“应该”这个词,那你就麻烦了。

  而这只有一个解决方案,尽己所能去保证它不会出错,这可能意味着你需要编写一个测试、调试并验证需求……

  2. 所有的代码都烂

  在我抱怨那些我碰到过的代码十年之久后,我得出了一个精辟的结论,所有的(包括我自己写的)代码,都烂。当然,烂还是有等级之分的,但即便是我见过写得最好的代码,也是难以读懂的。

  这并不意味着把你的代码写得更好是没有意义的,恰恰相反,最好和最坏的代码还是有天壤之别的。

  3. 错误(Bug)总会存在

  永远存在!问题只在于要发现它困难与否。

  4. 客户最大

  许多客户并不在乎你在方案中使用了哪些技术,应用程序需不需要做更多的事……或通俗上说,你是否使用了好的实践方案。

  也因为我可以想象,要是我只说了前面那一段,我会收到多少恶评,让我说得更清楚些……我想说的是,我们永远不应该忘记客户的立场,有时候,开发人员为 了最佳实践而在项目工程中过度坚持采用(某些)技术,但要记住,若这些技术无法给客户带来价值,那就放弃吧!(编注:关于客户,作者Alberto在其前 几篇文章《我的10个开发原则》和《程序员常犯的5个非技术性错误》都有提到,可见他对这一点的体会。)

  5. 纸上谈兵是行不通的

  我曾认为,我可以在前期就把我的整个设计置于纸上,然后只要将缺漏处填上就好,但这样根本行不通。

  软件开发是复杂的,若不亲手去碰碰看,很难看到所有的实际层面以及它们之间的关系。因此,在前期保持规划与设计是很有用的,但不要过度坚持,也不要把设计图表当作合约固守。

  6. 少即是多

  或者,你可能知道更好的说法是:“Keep it simple, stupid!”(保持简单,KISS设计原则)。所以,如果没有必要的就舍弃吧!因为要记住:“事情若有可能出错,就一定会出错。” (编注:除了KISS原则之外,此文还介绍了其他一些软件设计原则。)

  7. 编写代码只是我们所做工作的20%而已

  请准备好,花80%的时间用于思考、调试、测试、开会、谈话……而所有的其他活动都是非常重要的,所以若要成为一个优秀的软件开发人员,你必须培养广泛而全面的技巧(Skill),而不仅仅是技术(Technical)。

  8. 客户永远不知道他/她想要的是什么!

  客户若有需求,或是想法,但是他们不知道详细情况……软件开发要做的工作就是,发现细节并去除所有的不确定性,将这些需求转换成客户想要一个应用程序。

  9. 已经有人做过了

  所以不要再重新发明轮子,用谷歌找找看,或者更好的方法是,请教你的同事,很多时候他们可能都已经做了相同、或非常类似的事情。

  译文出处:伯乐在线 - 职场博客 - 程序员
  译文链接:http://www.jobbole.com/entry.php/1097

  原文:Alberto Gutierrez   翻译:敏捷翻译 - 张瑞霞

相关 [编程 大学 没有] 推荐:

关于编程,大学没有传授的十件事

- iVane - 月光博客
  笔者依然记得当年完成学业时,深信自己已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员. 显然,开始工作后没多久,笔者就意识到,还有很多事是我所不了解的.   在不断吸取经验的同时,笔者一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识. 以下是笔者希望自己能在学校就学到的十件事.

关于编程,大学没有传授的10件事

- wang - cnBeta全文版
我依然记得当我完成学业时,我是多么的天真. 那时我深信自己已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员. 显然,开始工作后没多久我就意识到,还有很多事是我所不了解的. 在不断吸取经验的同时,我一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识. 以下是我希望自己能在学校就学到的10件事.

关于编程,大学没有传授的十件事

- vie - cnBeta.COM
笔者依然记得当年完成学业时,深信自己已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员. 显然,开始工作后没多久,笔者就意识到,还有很多事是我所不了解的. 在不断吸取经验的同时,笔者一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识. 以下是笔者希望自己能在学校就学到的十件事.

我读过的最佳编程书:一本没有代码的书

- - 博客园_新闻
英文原文: Best development book I've read, has no code in it.. Dave Hoover 和 Adewale Oshineye 合著的《 软件开发者路线图:从学徒到高手》是一本优秀的书籍,它能为技术人员提供很好的帮助. 书中主要体现的思想就是人应该沿着一条漫长的道路坚持走下去.

我的编程竞赛之路 ——中国大学生计算机编程第一人楼天城访谈

- Jing - 《程序员》杂志官网
25岁的楼天城有“中国大学生计算机编程第一人”的称号,也被参加竞赛的学子们敬称为“楼教主”. 他的传奇经历一直激励着众多年轻学子:从2001年开始参加计算机编程竞赛,并连获全国一等奖;2004年入选国家集训队,同年获得IOI金奖并被保送到清华大学;2008年开始在首位亚裔图灵奖获得者姚期智院士的理论计算机中心攻读博士;2007年和2009年两次带队参加ACM/ICPC全球总决赛并获得第二名.

上海大学教师雷人要求:没有iPad就别上我的课

- Yuan - cnBeta.COM
“上海海事大学某老师宣称没有iPad的学生就不用来上他的课”,网友“郑睿swansea”发表的一条微博昨天被疯转. 几经努力,记者辗转到联系到了这位被“点名”的梁姓老师,他表示只是“建议”,并非强求,不过对于梁老师的这番建议,大多数人并不认可.

卡内基梅隆大学CS新生不再学习面向对象编程

- sdyy1990 - Solidot
卡内基梅隆大学教授Robert Harper在博客上称,该校计算机科学系从大一新生课程中删除了面向对象编程. 他说,面向对象编程从入门课程中完全取消了,因为O-O的性质是反模块化和反并行的,不适合进入现代计算机科学教学课程.

幽默笑话:北邮电大学校长方滨兴刚才(5月19日下午)在武汉大学被人用鸡蛋和臭鞋砸,其中一只臭鞋砸中方的胸部,鸡蛋没有砸中

- Dolphin - 中国茉莉花革命
2011年5月19号,这SB在武汉大学被扔鞋和臭鸡蛋.. 北邮电大学校长方滨兴刚才(5月19日下午)在武汉大学被人用鸡蛋和臭鞋砸,其中一只臭鞋砸中方的胸部,鸡蛋没有砸中. 作为“长城”之父,方滨兴此前在新浪开设微博,但迎接他的是蜂拥而至的网民各种辱骂式的批评. 最终,方滨兴的新浪微博被迫关闭. 由此方滨兴创造了微博发展的历史记录,方滨兴的新浪微博成为微博史上生命最短暂的微博,而且是第一个被网民骂死的微博.

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.

Shell编程

- - 博客园_首页
本来打算寒假回家好好学习Linux的,为以后学习嵌入式打好基础的. 回家之后的学习效率非常低,之前为了搭建Linux环境,折腾了很长时间,学到现在也就勉强才把Shell编程学完了. 今天就把自己学习的相关知识点总结整理一下. 个人感觉shell程序跟windows下的批处理文件有点像,就是将一些系统命令写进一个可执行文件中,然后执行.