我依然记得当我完成学业时,我是多么的天真。那时我深信自己已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员。显然,开始工作后没多久我就
意识到,还有很多事是我所不了解的。
在不断吸取经验的同时,我一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识。以下是我希望自己能在学校就学到的10件
事。
0. 我们总是错的
开发人员有着相当大的自我意识,包含了一些其他的非技术性缺陷,这也正是为什么我们很难发现我们做错了什么。我看到过很多无休止的设计讨论,开发人员不断地发表自己的想法……呵呵!猜猜怎样……我们都错了,唯一的区别就是我们犯错的离谱程度不同。
理解并接受这个事实非常重要,我们只有这样做了,才能敞开心胸去听听别人的意见,采用他们的想法,来得出一个更好的解决办法。
1. 事情若有可能出错,就一定会出错
也就是说“希望驱动开发(hope driven development)”,如果你对于某些事并不确定,如果你发现自己使用了“应该”这个词,那你就麻烦了。
而这只有一个解决方案,尽己所能去保证它不会出错,这可能意味着你需要编写一个测试、调试并验证需求……
2. 所有的代码都烂
在我抱怨那些我碰到过的代码十年之久后,我得出了一个精辟的结论,所有的(包括我自己写的)代码,都烂。当然,烂还是有等级之分的,但即便是我见过写得最好的代码,也是难以读懂的。
这并不意味着把你的代码写得更好是没有意义的,恰恰相反,最好和最坏的代码还是有天壤之别的。
3. 错误(Bug)总会存在
永远存在!问题只在于要发现它困难与否。
4. 客户最大
许多客户并不在乎你在方案中使用了哪些技术,应用程序需不需要做更多的事……或通俗上说,你是否使用了好的实践方案。
也因为我可以想象,要是我只说了前面那一段,我会收到多少恶评,让我说得更清楚些……我想说的是,我们永远不应该忘记客户的立场,有时候,开发人员为
了最佳实践而在项目工程中过度坚持采用(某些)技术,但要记住,若这些技术无法给客户带来价值,那就放弃吧!(编注:关于客户,作者Alberto在其前
几篇文章《我的10个开发原则
》和《程序员常犯的5个非技术性错误
》都有提到,可见他对这一点的体会。)
5. 纸上谈兵是行不通的
我曾认为,我可以在前期就把我的整个设计置于纸上,然后只要将缺漏处填上就好,但这样根本行不通。
软件开发是复杂的,若不亲手去碰碰看,很难看到所有的实际层面以及它们之间的关系。因此,在前期保持规划与设计是很有用的,但不要过度坚持,也不要把设计图表当作合约固守。
6. 少即是多
或者,你可能知道更好的说法是:“Keep it simple, stupid!”(保持简单,KISS设计原则)。所以,如果没有必要的就舍弃吧!因为要记住:“事情若有可能出错,就一定会出错。”
7. 编写代码只是我们所做工作的20%而已
请准备好,花80%的时间用于思考、调试、测试、开会、谈话……而所有的其他活动都是非常重要的,所以若要成为一个优秀的软件开发人员,你必须培养广泛而全面的技巧(Skill),而不仅仅是技术(Technical)。
8. 客户永远不知道他/她想要的是什么!
客户若有需求,或是想法,但是他们不知道详细情况……软件开发要做的工作就是,发现细节并去除所有的不确定性,将这些需求转换成客户想要一个应用程序。
9. 已经有人做过了
所以不要再重新发明轮子,用谷歌找找看,或者更好的方法是,请教你的同事,很多时候他们可能都已经做了相同、或非常类似的事情。
分享到:
相关推荐
《人件集:人性化的软件开发》是一本深入探讨软件工程中人性因素的重要著作,作者通过对软件开发过程中人的行为、心理、沟通等多方面因素的分析,提出了以人为本的软件开发理念。这本书的核心观点是,软件开发的成功...
### 人件:软件开发管理经典 #### 书籍概述 《人件》是软件开发领域内的一部经典著作,自1987年初版以来便备受赞誉,与《人月神话》并称为软件图书界的“双璧”。不同于《人月神话》侧重于探讨软件开发过程和技术...
《日文软件开发仕様書》是一份详细阐述日本語ソフトウェア開発流程、需求及技术规范的重要文档。在软件开发过程中,仕様書扮演着至关重要的角色,它明确了项目的具体要求,确保开发团队与客户之间的沟通清晰无误,...
《人件集》和《十公里半》这两份文件可能包含了更多关于人性化软件开发的实践案例、理论分析和经验分享,通过深入阅读,我们可以从中获取更丰富的知识和启示,进一步提升软件开发的人性化程度。
### 软件开发合同关键知识点解析 #### 一、定义 - **软件**:通常指根据合同附件中描述的当前及未来版本的软件开发项目,涵盖了开发过程中的所有阶段和成果,包括但不限于最终版本及其相关文档。 - **可交付件**:...
11. 软件开发:乙方将结合甲方的计算机信息系统进行软件开发,使软件整体功能符合甲方所描述的经营、管理等系统的要求。 12. 合同义务:本合同约定了甲方和乙方之间的权利和义务,包括软件开发、交付、测试、维护等...
《C#经典软件开发规范》是一份源自大型企业的软件开发指南,旨在促进团队间的有效沟通、提高代码质量和软件可维护性。这份规范涵盖了编码、设计、文档、测试等多个方面,对于提升开发人员的专业素养和团队协作效率...
"计算机软件开发合同" 本文将对计算机软件开发合同的相关知识点进行详细的解释和介绍。 一、定义 在计算机软件开发合同中,定义是指合同中使用的词语的含义。这些定义包括软件、可交付件、交付、规格、里程碑、源...
从提供的文件内容来看,文件中包含了关于中国软件开发行业现状和概况的一些关键信息和数据。尽管文档内容显示的部分信息不完整且存在OCR扫描错误,但我们仍然可以从中提炼出一些重要的知识点。 首先,文档中提到的...
【上海市计算机软件开发合同示范文本】是一份详细指导软件开发合作的法律文件,适用于上海市的软件开发项目。此文本提供了一套完整的框架,涵盖了软件开发的各个关键环节,旨在规范双方的权利与义务,确保项目的顺利...
根据给定的文件信息,我们可以深入探讨软件开发专业英文求职信的写作技巧与关键知识点,特别是从标题、描述、标签以及部分内容中提炼出的要点。 ### 软件开发专业英文求职信的结构与内容 #### 标题:明确目的 - **...
10. 资源概述:该部分用于记录软件开发项目所需的资源概述,包括人力资源、财务资源和技术资源等。 11. 项目特定的软件过程:该部分用于记录软件开发项目所需的特定软件过程,包括需求分析、设计、实现、测试和维护...
人员研究数据表明,人件极大地影响着生产效率,因此,选择合适的人员、团队组织结构和人员激励是软件开发的关键步骤。 3. 过程研究数据:过程研究数据表明,对开发过程的改进可以将产品上市时间缩短一半,降低成本...
10. 软件开发合同的主要内容:软件开发合同的主要内容包括定义、开发软件描述、软件系统、软件开发的目标、软件开发的交付进度和时间、软件开发、项目管理等。 11. 软件开发的目标:软件整体功能符合甲方所描述的...
在IT行业中,软件开发是至关重要的一环,它涵盖了从构思设计到最终产品的全过程。软件开发不仅涉及编程,还包括需求分析、系统设计、测试和维护等多个阶段。本篇将重点介绍软件开发的分类以及常见的开发语言。 首先...
QCompute是一款基于Python的量子计算软件开发套件(SDK),项目源码包含2163个文件,其中包括1222个文本文件、423个Python源文件、207个PNG图片文件、87个Markdown文档、37个Jupyter笔记本、32个JPG图片、21个LaTeX...
软件架构师作为一个专业领域的高级职位,其核心职能...《软件架构师应该知道的97件事》这本书通过多位专家的经验分享,提供了一个关于如何成为优秀软件架构师的丰富知识库,对于提升软件架构师的专业能力具有重要价值。
在软件开发过程中,文档起着至关重要的作用,它不仅是团队沟通的桥梁,也是项目管理和质量保证的关键工具。"软件工程软件开发文档模板"提供了一整套完整的文档框架,旨在帮助开发者按照规范和标准进行工作,确保项目...
2021最新产品需求模板系列-软件开发文档范例.doc 本文档提供了一份软件开发文档的范例,介绍了一个免费电子邮件系统的设计和开发过程。该系统的主要目标是满足不断增长的信息交换需求,提供一个高度集成、功能强大...
|uml1.0中文文档 |umlch10 | |i |任务清单及工作量估算 |客户初步需求调查概述 技术测试规范(草案) |概要设计说明书 ...|软件开发计划书模版 |后期 |开始 |设计 |需求 |软件测试指南 |项目开发计划