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

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

原文:makinggoodsoftware   本文转载自:jobbole

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

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

1、 我们总是错的

开发人员有着相当大的自我意识,包含了一些其他的非技术性缺陷,这也正是为什么我们很难意识到我们做错了什么。我看到过很多无休止的设计讨论,开发人员不断地发表自己的想法……呵呵!猜猜怎样……我们都错了,唯一的区别就是我们犯错的离谱程度不同。
因此,理解并接受事实变得非常重要,我们只有这样做了,才能敞开心胸去听取别人的意见,采纳他们的想法,得出更好的解决办法。

2、 事情若有可能出错  就一定会出错

我们都希望自己能成为“推动发展”进程中的一份子,但如果你对于某些事并不确定,或者你发现自己使用了“应该”这个词,那你就陷入了麻烦之后。
于此,只有一个解决方案,那就是尽己所能去保证它不会出错,这可能意味着你需要编写一个测试、调试并验证需求……

3、 所有的代码都是胡扯

在我抱怨那些我碰到过的代码十年之久后,我得出了一个精辟的结论,所有的(包括我自己写的)代码,都是胡扯。当然,这其中也是分等级的,但即便是我见过写得最好的代码,也很难读懂。
这并不意味着把你的代码写得更好是没有意义的,恰恰相反,最好和最坏的代码还是有天壤之别的。

4、 错误(Bug)总会存在

永远存在!问题在于你视它的难易程度。

5、 客户放在首位

许多客户并不在乎你在方案中使用了哪些技术,应用程序需不需要做更多的事……或通俗上说,你是否使用了好的实践方案。
我可以想象只因上述的一段话,会收到多少恶评,那就让我说得更清楚些……

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

6、 纸上谈兵是行不通的

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

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

7、少即是多

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

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

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

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

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

10、 已经有人做过了

所以不要白费力气做重复的工作,用谷歌搜索下。或者更好的方法,是请教你的同事,很多时候他们可能都已经做了相同、或非常类似的事情。


Have Your Say »

Required

Required, never published