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

我依然记得当我完成学业时,我是多么的天真。那时我深信本身已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员。显然,开始工做后没多久我就意识到,还有不少事是我所不了解的。php

  在不断吸收经验的同时,我一直在努力学习那些我历来没有学过的,但倒是成为优秀的开发人员所应了解的基本知识。如下是我但愿本身能在学校就学到的10件事。程序员

  0. 咱们老是错的学习

  开发人员有着至关大的自我意识,包含了一些其余的非技术性缺陷,这也正是为何咱们很难发现咱们作错了什么。我看到过不少无休止的设计讨论,开发人员不断地发表本身的想法……呵呵!猜猜怎样……咱们都错了,惟一的区别就是咱们犯错的离谱程度不一样。测试

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

  1. 事情如有可能出错,就必定会出错调试

  也就是说“但愿驱动开发(hope driven development)”,若是你对于某些事并不肯定,若是你发现本身使用了“应该”这个词,那你就麻烦了。orm

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

  2. 全部的代码都烂get

  在我抱怨那些我碰到过的代码十年之久后,我得出了一个精辟的结论,全部的(包括我本身写的)代码,都烂。固然,烂仍是有等级之分的,但即使是我见过写得最好的代码,也是难以读懂的。it

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

  3. 错误(Bug)总会存在

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

  4. 客户最大

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

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

  5. 纸上谈兵是行不通的

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

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

  6. 少便是多

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

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

  请准备好,花80%的时间用于思考、调试、测试、开会、谈话……而全部的其余活动都是很是重要的,因此若要成为一个优秀的软件开发人员,你必须培养普遍而全面的技巧(Skill),而不只仅是技术(Technical)。

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

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

  9. 已经有人作过了

  因此不要再从新发明轮子,用谷歌找找看,或者更好的方法是,请教你的同事,不少时候他们可能都已经作了相同、或很是相似的事情。

相关文章
相关标签/搜索