`

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

 
阅读更多

  1. 我们总是错的

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

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

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

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

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

  3. 所有的代码都烂

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

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

  4. 错误(Bug)总会存在

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

  5. 客户最大

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

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

  6. 纸上谈兵是行不通的

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

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

  7. 少即是多

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

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

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

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

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

  10. 已经有人做过了

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

分享到:
评论

相关推荐

    ]Visual C++网络编程开发与实战-清华大学.pdf

    《Visual C++网络编程开发与实战》一书是IT领域特别是软件开发与网络通信方向的一本重要参考文献,由清华大学出版社出版。这本书深入浅出地介绍了Visual C++环境下网络编程的基本理论、关键技术以及实践应用,适合于...

    四川大学软件学院系统级编程复习资料

    通过学习和实践这些知识点,四川大学软件学院的学生将能够深入理解系统级编程,并能开发出高效、可靠的系统级应用程序,为未来的专业发展奠定坚实基础。这份复习资料应涵盖上述各个主题,通过实例和练习帮助学生巩固...

    vc++ 编程宝典(十年典藏版) 书后光盘源代码

    十年典藏版更是集合了多年的教学经验和实际项目案例,旨在帮助读者深入理解VC++编程的核心概念,并提升实际编程能力。这本书的光盘源代码包含了大量实例和练习,有助于读者将理论知识与实际操作相结合,从而更好地...

    Visual C++编程宝典(十年典藏版) 明日科技 源代码

    Visual C++编程宝典(十年典藏版) 明日科技 源代码 解压后287M 《Visual C++编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Visual C++ 6.0进行程序开发的各种技术、技巧。...

    unix-linux编程实践教程 pdf

    本书以哈佛继续教育学院的Unix System Programming课程为基础,结合作者的实践和教学经验编写而成,目的是通过启发式教学、举一反三和图示讲解等多种方法,由浅入深地传授Unix/Linux编程知识。 教材的特点与适用性...

    电子科技大学linux环境编程作业2——李林——编写带缓存的文件操作类

    编写带缓存的文件操作类 从执行体程序库中的CLLogger类可知,通过缓存要写入文件中的数据,能够提高读写磁盘的性能 请编写一个文件操作的封装类,其要求如下: 需要提供open/read/write/lseek/close等函数的封装函数...

    突破JavaScript编程实例五十讲

    本书用详尽的实例全面介绍了使用JavaScript进行各种客户端编程的过程和应用。全书共分10篇,主要包括JavaScript的时间日期类、文本、鼠标、图片、页面等特效、页面技巧与页面游戏、导航菜单、Cookie和JavaScript的...

    (AMX,快思聪,CREATOR,ITAV)中控编程教程

    ITAV作为国内知名的中控品牌,其编程教程"ITAV编程培训资料.pdf"可能详细介绍了ITAV的编程平台和步骤,包括如何配置设备、创建控制页面以及实现自定义逻辑。ITAV的系统通常具有良好的本地化支持,对于中国用户来说...

    C#经典编程-220例

    《C#经典编程-220例》是一本深度挖掘C#编程精髓的教程,它包含了大量的实例,旨在帮助读者全面掌握C#编程语言的核心概念和技术。这220个例子覆盖了C#编程的各个层面,从基础语法到高级特性,从控制流到面向对象编程...

    64位 微处理器系统编程和应用编程.part1 周明德编著 完整清晰版

    《64位 微处理器系统编程和应用编程》 周明德编著 完整清晰版 1 针对当前应用最广泛的两种64位处理器--Intel和AMD的四核处理器作为基础进行介绍分析,反映了当代微处理器的最新发展。 2 把Intel和AMD两种处理器综合...

    PTA基础编程答案

    浙江大学PTA基础编程答案, 代码精练,用c或c++。适合程序设计爱好者学习。

    串口通信编程大全

    这时我以前编制rs-232串口程序时收集的一些有关串口编程的硬件和软件技术资料,对于想学习串口编程的朋友比较实用的。里面讲述了有关串口的基本支持和用VB通信时的一些技巧和注意方法。声明:本资料来自互联网,版权...

    C++游戏编程入门.pdf

    根据给定文件的信息,我们可以提炼出关于C++游戏编程的一些关键知识点。首先,标题“C++游戏编程入门.pdf”明确指出这是一本介绍如何使用C++进行游戏开发的教材。C++是一种广泛应用于游戏开发的强大编程语言,因为它...

    (完整版)ST语言编程手册.pdf

    ST语言,也称为结构化文本(ST),是一种高级编程语言,它基于文本,用于工业自动化和控制系统的编程。根据IEC61131-3标准,ST语言被广泛应用于可编程逻辑控制器(PLC)和其他工业设备中。PLCopen是一个全球性的行业协会...

    编程语言原理(第10版

    虽然在给出的部分内容中重复出现了网址信息,并没有实质性的知识点内容,但基于标题和描述,我们依然可以围绕编程语言原理这一主题进行深入探讨。 ### 一、编程语言概述 编程语言是一种用于编写计算机程序的形式化...

    windows核心编程 中文版.rar

    《Windows核心编程》是一本深度探讨Windows操作系统内部工作原理和技术的权威著作,它为开发者提供了深入理解Windows系统底层机制的窗口。这本书详细介绍了如何利用Windows API进行系统级编程,涵盖了进程、线程、...

    数控车床编程100例

    数控车床编程100例

    Tcl_TK编程权威指南pdf

    Tcl_TK编程权威指南是一本全面介绍Tcl(Tool Command Language)及Tk图形用户界面工具包的编程书籍,由John Ousterhout教授设计并编写。Tcl是一种脚本语言,可以被轻松地嵌入到应用程序中,与C语言相比,Tcl的语法...

    LinuxC编程实战电子书

    本书共计4个压缩包(linuxC编程实战+.part1.rar,linuxC编程实战+.part2.rar,linuxC编程实战 +.part1.rar,Linux+C编程实战源代码.rar) 内容简介  《LinuxC编程实战》系统地介绍了在Linux平台下用C语言进行程序...

Global site tag (gtag.js) - Google Analytics