最近阅读了《高效程序员的45个习惯》,看完后整体的感受是:
目前很多方法我们已经在使用了,有的一些已经成为项目以及日常的流程了,非常欣慰,有一些习惯个人感觉不是很合适使用,例如结对编程,这个我感觉貌似没法付诸于实践,首先是人力的时间成本,结对来搞一个事情,沟通成本会相对大一点,另外一点是,自己写代码的时候旁边有人看着,这个我估计很多程序员都接受不了吧,会感觉很不自在的。
其实比起敏捷来说,更加喜欢高效这两个字,一名程序员完成一项任务后,当再有相同的任务出现时,能否高效率的完成,我指的高效包括代码质量、时间成本等等方面,假如和第一次做时间相同,我觉得是失败的,长远发展下去肯定对自己不利。如此,在日常工作中寻找高效率的方法显得格外重要。
在目前人力资源成本日渐增长的今天,提高开发测试软件的效率显得格外重要。
(1)态度决定一切
“软件出现了问题,第一重要就是找出元凶,找到那个白痴。”这个明显是不对的,第一时间就是解决问题。
一个重大的错误应该被当做是一次学习二不是指责他人的机会,团队成员在一起,应该是混响帮助,而不是互相指责。
指责不会修复bug,把矛头对准问题的解决办法,而不是人,这是真正有用处的正面效应。
在项目中,代码应该是很亮堂的,不应该有哦黑暗死角,也许你不知道每块代码的每个细节或者算法的每个步骤,但是你对整体的相关知识要有很好的了解。
分享并融合各种不同的想法和观点,远远胜于单个想法为项目带来的价值。
有一句话比较给力:“你不需要很出色才能起步,但是你必须起步才能变的很出色”。
如果你在压力下对代码质量作出妥协,你可以指出,作为一个开发者,你没有权利毁坏公司的资产。
(2)学无止境
一个活力十足的敏捷开发团队需要有规律的反复做很多事情,一旦项目开始运作,你就需要把握开发节奏。
迭代和增量的学习,每天计划用一段时间来学习新技术,不需要很长时间,但需要经常进行。
了解最新行情,通过亲阅读最新的技术网站即可呵呵。
参加本地的用户组活动,例如培训活动等,这个貌似淘宝比较给力,有不定期的培训。
参加研讨会议。多多参与技术方案的评审,这个比较给力。
如饥似渴阅读。阅读技术方案,阅读源码等。
你需要精通所有技术,但需要清楚知道行业的动向,从而规划你的项目和职业生涯。
对团队进行投资,增加团队之间的交流活动,长远来看是很有益处的。
不停的问为什么,不能只满足于别人告诉你的表面现象,要不停的问直到你明白问题的根源。
项目开发需要有一致和稳定的节奏,编辑、运行测试,代码复审。然后发布。
(3)交付用户想要的软件
这个感觉是大家有点疑问的,我们做的不就是用户想要的吗,但是事实不是这样的,由于对于食事物的看法和见解不同,导致对于同一件事情的理解可能会有偏差。
这样的结果机会出现,我们程序员苦逼的写出来的程序不是用户想要的,其实是我们觉得是他们想要的。这种情况在产品是自己公司业务方用的时候问题不大,顶大大家多交流几遍,但是在
那种靠卖这个产品的公司来说,这个是致命的了,有可能用户就不给你钱了。
那既然这个问题存在,该怎么避免呢?
我的建议是:多交流,频繁的交流,在开发功能稳定后,提交测试人员进行测试之前,来一次冒烟的功能演示,喊上业务方的成员,大家就一些功能达成一致,有问题赶紧提出来,
在没有进入测试前,修改的成本还是不大的。经过这个过程的演示基本上问题就不大了呵呵。
记录客户的决定,并注明原因,好记性不如烂笔头。
不用低级别和没有价值的问题打扰繁忙的业务人员。
不要随意假设低级别的问题不会影响他们的业务。
让设计指导而不是操纵开发,这个确实是这样的,个人认为好的架构师进化出来的,而不是设计出来的。
新技术就应该想是新的工具,可以帮助你更好的工作,它自己不应该成为你的工作。
时刻保持你的代码可以发布,这个可以通过持续化回归测试来保证。
提早集成,频繁的集成,这个对于大型系统多人员开发显得格外重要,我在项目中做的一个尝试是通过hudson来进行自动化部署,hudson每隔一段时间来检测代码是否又提交,如果有提交,则自动进行打包编译,出现问题,通过一些方式反馈出来。
提早实现自动化部署和运维,这一点觉得淘宝做的还是比较不错的,基本上部署应用都可以通过页面点击来完成,比较高效,最主要的一个问题就是能够减少人员操作带来的失误呵呵,不过这个要求运维系统需要比较问题啊。
使用演示来频繁的获取反馈,这个认为是一个很给力的环节了。
(4)反馈、编码、调试、协作
使用单元测试,如果代码没有经过测试,你会觉得不舒服,就像在高空作业没有系安全带一样呵呵。
倾听用户的声音,每一个抱怨的背后,都隐藏了了一个问题,找出并解决他。
使代码保持可阅读,通过代码来进行沟通,添加必要的注释。
增量式编程,进行阶段 性的测试,能够避免集中性测试导致的问题。
对于问题进行各个击破,将问题进行隔离,特别是在大型应用中。
提供有效的错误信息,反馈出需要的异常信息,对于异常不能简单粗暴的解决,要进行合理的控制。
代码在本地测试没有问题后再进行提交,避免自己没有测试就进行提交,这样会导致别人协作的时候还需要排查你遗留的问题。
不定期的进行代码review,这个虽然有点耽误时间,但是确实很有必要。
个人综合来看,提高编码测试效率,进行持续化回归测试,交付用户想要的软件,在过程中团队成员有效的沟通,最终的效果:用户满意,团队成员有所成长。
相关推荐
### 一个程序员的工具箱:全面解析 #### 引言 在信息技术(IT)领域,特别是对于程序员来说,拥有一套高效、实用的工具是至关重要的。这些工具不仅能提高工作效率,还能帮助解决各种技术难题。本文将详细介绍《一个...
Typora是一款优秀的Markdown编辑器,它提供了无缝的预览体验,让编写Markdown变得更加高效和愉快。 Typora的主要特点: 1. **实时预览**:与大多数Markdown编辑器不同,Typora采用所见即所得(WYSIWYG)的方式,...
这个设计考虑到了现代人长时间使用电脑的工作和生活习惯,以及夜晚使用电脑时对周围环境的影响。 首先,我们要理解小夜灯的功能性。它可能是通过磁吸、夹持或粘贴等方式固定在笔记本电脑屏幕边缘,以提供定向照明,...
从给定的文件信息来看,本文档探讨的主题围绕着程序员的学习方法、思考习惯以及如何构建一个有益于个人成长和知识分享的社群环境。以下是对这些关键知识点的详细解析: ### 知识点一:程序员的学习习惯 #### 1. ...
【程序员资料整理软件】是一款专为程序员设计的高效文件管理和整理工具,旨在帮助程序员们更好地组织、分类和检索他们的代码示例、学习资料、项目文档等。这款软件结合了多种功能,如文件分类、标签系统、全文搜索、...
Markdown是一种轻量级标记语言,易于阅读和编写,非常适合用来撰写文档、笔记等内容。它有许多变种,如 GitHub Markdown、Markdown Extra 等,每种都有其独特的扩展特性,适用于不同的应用场景。 #### 编码工具 **...
总的来说,Typora作为一款Markdown编辑器,不仅提供了Markdown的基本功能,还通过实时预览、代码高亮、LaTeX支持等功能,为程序员提供了一种高效、便捷的文档编写方式,极大地提升了编程工作的效率和舒适度。
它的语法简洁、高效,是很多程序员入门编程的首选。本压缩包包含了一份精心整理的C语言学习笔记,旨在帮助读者深入理解和掌握C语言的核心概念与技术。 笔记首先从基础语法开始,包括变量、数据类型、运算符以及...
有道云笔记是一款深受广大用户喜爱的笔记应用,尤其对于技术编程工程师来说,它更是日常工作中的得力助手。2018年的最新安装包...只需下载压缩包中的"YNote.exe"文件,即可开始体验这个智能、高效、便捷的笔记世界。
"C-learn-notes"这个压缩包很可能是某位C程序员在学习过程中积累的笔记,包含了他的学习心得、代码示例和理解要点。尽管没有具体的标签提供更多信息,我们可以基于C语言的一般学习路径来探讨一些核心知识点。 1. **...
C语言是一种广泛应用于系统开发和应用编程的高级编程语言,其简洁、高效的特点深受程序员喜爱。本篇笔记主要探讨了C语言中注释的使用及其重要性,以及如何有效地为不同结构的代码添加注释,以提高代码的可读性和可...
笔记采用Ediplus编辑器编写,这是一款轻量级且功能强大的文本编辑工具,非常适合程序员进行代码编写和学习。 首先,Java基础部分包括了以下几个关键知识点: 1. **Java环境搭建**:安装Java Development Kit (JDK)...
总之,Typora 0.11.18版作为一个优秀的Markdown编辑器,为用户提供了高效且直观的写作工具,尤其对于那些需要处理Markdown文档的程序员和写作人士来说,它无疑是最佳选择之一。虽然此版本之后可能不再免费更新,但它...
作为一个专注于代码存储和管理的应用,CodeNoteBook旨在为程序员提供一个高效、便捷的环境,以便于整理、查阅和分享代码片段。 在当今的软件开发环境中,代码笔记本的重要性不言而喻。随着项目复杂度的增加,开发者...
"TXT阅读工具"是一个专注于提供高效、便捷的TXT文件阅读体验的应用程序。本文将深入探讨TXT阅读工具的核心功能、设计原则、适用场景以及与之相关的技术知识点。 1. **核心功能**: - **简洁界面**:优秀的TXT阅读...
【开源项目-exaroth-gonote.zip】是一个开源项目,主要功能是提供一个终端客户端用于创建笔记。这个项目名为GoNote,显然它是基于Go语言开发的,因为“Go”通常是Go语言的代称。Go语言是由Google开发的一种静态类型...
在本毕业论文“基于Android...总的来说,这篇毕业论文和相关资料为学习和开发Android电子书阅读器提供了全面的指导,涵盖了从需求分析、设计、实现到测试的全过程,对于想要涉足移动阅读应用开发的程序员来说极具价值。