1. 我们总是错的

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

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

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

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

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

  3. 所有的代码都烂

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

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

  4. 错误(Bug)总会存在

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

  5. 客户最大

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

  也因为我可以想象,要是我只说了前面那一段,我会收到多少恶评,让我说得更清楚些……我想说的是,我们永远不应该忘记客户的立场,有时候,开发人员为了最佳实践而在项目工程中过度坚持采用(某些)技术,但要记住,若这些技术无法给客户带来价值,那就放弃吧!

  6. 纸上谈兵是行不通的

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

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

  7. 少即是多

  或者,你可能知道更好的说法是:“Keep it simple, stupid!”(保持简单,KISS设计原则)。所以,如果没有必要的就舍弃吧!因为要记住:“事情若有可能出错,就一定会出错。”

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

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

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

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

  10. 已经有人做过了

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

  英文原文:10 things they never teach in college about programming

  中文翻译:伯乐在线

转载于:https://www.cnblogs.com/kimblog/archive/2012/06/18/2553075.html

10 things they never teach in college about programming相关推荐

  1. 【21.10.24】The 15th Chinese Northeast Collegiate Programming Contest题解

    A. Matrix(组合数+数学) #include <bits/stdc++.h> using namespace std; #define mod 998244353 ll fac[1 ...

  2. 如何在Debian 10上安装Python 3和设置编程环境

    介绍 (Introduction) Python is a flexible and versatile programming language suitable for many use case ...

  3. 拒绝+启示+TED+被拒的100天+What I learned from 100 days of rejection

    拒绝+启示+TED+被拒的100天+What I learned from 100 days of rejection 你是否也有碰壁恐惧症 When I was six years old, I r ...

  4. C++之父元旦专访(8+13个问题,关于C++的学习使用和未来)

    C++之父元旦专访(8+13个问题,关于C++的学习&使用和未来) By TopLanguage (http://groups.google.com/group/pongba) 刘未鹏|C++ ...

  5. Daily record-December

    December 1 1. All circles have the same shape. 所有圆的形状都是相同的. 2. She first drew a circle on the board. ...

  6. smalltalk_设计模式smalltalk和阅读代码的失落艺术

    smalltalk Kyle Brown, IBM Fellow, CTO Cloud Architecture, IBM Cloud and Cognitive Software Kyle Brow ...

  7. Pandas CookBook -- 04选取数据子集

    选取数据子集 简书大神SeanCheney的译作,我作了些格式调整和文章目录结构的变化,更适合自己阅读,以后翻阅是更加方便自己查找吧 import pandas as pd import numpy ...

  8. python format格式化输出填充符号不起作用_Python格式化输出——format用法示例

    format OR % 提到Python中的格式化输出方法,一般来说有以下两种方式: print('hello %s' % 'world') # hello world print('hello {} ...

  9. 多态的概念,特点与使用

    多态:可以理解为事物存在的多种体现形态 如:人:男人,女人 动物:猫,狗,鸟 猫这个动物应该是猫类型的:猫 cat = new 猫(); 同时猫也是动物的一种:动物 y = new 猫();  动物是 ...

  10. 编程入门指南 v1.4

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Badger 链接:http://zhuanlan.zhihu.com/xiao-jing-mo/19959253 来源: ...

最新文章

  1. php申请系统,PHP+MYSQL的文章管理系统(一)_php
  2. mysql数据库表的导入导出
  3. 网络爬虫基本原理(二)
  4. Eclipse 解决PHP函数代码不能自动提示问题
  5. python两张图片融合_python实现两张图片的像素融合
  6. 在二叉树中有两个结点m和n,若m是n的祖先,则使用后序遍历可以找到从m到n的路径
  7. 再不用担心Sci-Hub不能用了
  8. JS中一些常用的函数(持续更新)
  9. 关于程序员的调查报告
  10. u盘iso安装服务器系统怎么安装win7系统安装方法,win7系统iso镜像文件通过U盘安装的操作方法...
  11. 线性代数入门指南:线性方程组
  12. 23 期-原文 6.30
  13. VUE报错You are using the runtime-only build of Vue where the template compiler is not available
  14. 腾讯万亿级 Elasticsearch
  15. mysql群发消息_百万级用户量的站内信群发数据库设计
  16. 源生的html属性js,源生JS怎样实现todolist功能
  17. 常见退信原因及解决方法
  18. kylin的cube的原理
  19. python 网站模板_Python之web模板应用
  20. 易经之潜龙见龙惕龙 No.206

热门文章

  1. Tweet button with a callback – How to?
  2. linux查文件被哪些程序占用—fuser和lsof的使用
  3. linux静态与动态库创建及使用实例
  4. scrapy分布式调度源码及其实现过程
  5. Python丨调用百度的人脸识别api给你的颜值打个分
  6. Sublime Text 插件 【转】
  7. 西门子45亿美元转型,“卖冰箱”到“卖VR”
  8. linux 获取指定目录最大深度(层数)02
  9. 揭秘ASM磁盘头信息
  10. 使用fseek()函数随机访问文件