软件开发不同于其他行业的地方在于:完全脱离物理限制,唯一的限制是开发者的大脑。开发者的心理因素也就成了开发效率的最主导因素。
心理学表明,压力可以分为良性压力和恶性压力,他们对于开发效率的影响截然相反。良性压力促使人精力充沛,感觉敏锐,喜悦感增强,开发效率提高。而恶性压力然人感到身心疲惫,沮丧,厌倦,开发效率下降。
那么良性压力和恶性压力的根源是什么呢?
选择感:这个任务是你选择的还是上面硬塞给你的?
控制度:当项目陷入泥潭,地毯下面隐藏着无数风险(bug,需求变更,deadline),你的胃有什么感觉?而100%的测试覆盖率和绝大部分都通过的持续集成呢?
可预测性:一个半年的release
schedule和一个明天就能上线的版本哪一个让你更加安心?
归根结底,压力源于人类与生俱来的恐惧感。一点点恐惧感都会压制人的心智潜能。而最大的恐惧感,就是不知道恐惧来自哪里。
编写代码的恐惧感来自哪里?
运行失败,调试都是让人感到恐惧的事情。更可怕的是,随着编写未测试代码的时间越长,这种恐惧就越发可怕。
消灭这种恐惧的办法就是编写自动化测试,并且Test
First,让这种恐惧没有机会发生。当所有测试几秒钟就能跑一遍的时候,绿灯会消灭恐惧感。
频繁提交代码的恐惧
恐惧来自提交的代码导致系统错误,影响其他人开发。持续集成能够确保每次提交的代码都运行整个测试套件,鼓励人提交代码。
代码质量和交流的恐惧
恐惧来自代码质量下降,或者不能被别人所理解。而定期的Code
Review只能是亡羊补牢。结对编程正是解决之道。
- 简单设计的恐惧
对未来变化的恐惧会使得开发者生产出复杂的设计。但是敏捷开发的一系列实践已经使得在未来到来之时的变化成本接近现在的迎接变化的成本,这种恐惧也就不存在了。
以上举例说明了从心理学角度敏捷开发是如何奏效的,我不是心理学专家,难免有不当之处。但是我可以肯定的是当恐惧感消失的时候,人的心智潜能可以完全释放出来,这时人的能力会产生飞跃。
分享到:
相关推荐
他参与过的培训或咨询案例包括阿里巴巴、华为、爱立信、阿朗和百度等多家知名企业,他的演讲主题涉猎敏捷需求分析、敏捷进度管理、提升团队敏捷开发和设计能力等多个方面。 文章提出了软件开发中存在着多种思维模式...
### 组织敏捷转型的四味...通过上述分析可以看出,组织在进行敏捷转型的过程中需要灵活运用不同的策略,针对不同阶段的具体情况采取合适的措施。只有这样,才能确保转型过程顺利进行,并最终实现组织敏捷化的长远目标。
1. **敏捷开发**:为了应对软件开发过程中的不确定性,敏捷开发方法逐渐成为主流。这种方法强调快速迭代、用户反馈,能够更好地适应变化。 2. **用户体验设计**:随着人们对软件质量要求的提高,用户体验设计变得尤...
书中倡导敏捷开发方法,强调灵活应对变化,通过迭代和增量式开发来降低风险。 5. **持续学习与适应**:软件开发是一个快速发展的领域,开发者需要不断学习新的技术和工具,适应行业变化。企业应建立学习型组织,...
项目管理同样关键,使用版本控制工具如Git来协同工作,采用敏捷开发方法如Scrum进行迭代,确保游戏开发的高效和质量。 总的来说,游戏开发是一个多学科交叉的领域,需要开发者不断学习和实践,才能创造出引人入胜的...
软件工程的内容涵盖了开发技术和开发管理,前者涉及软件开发方法、过程、工具和环境,后者则关注管理学、经济学和心理学在软件开发中的应用。 软件开发生命周期(SDLC)是软件从需求到废弃的完整过程,包括可行性...
本文设计并实现了一款基于 Android 平台的记忆单词软件,软件中结合了认知心理学的记忆角度,优化了背单词的过程,使学生可以更好地记忆和学习单词。 认知心理学的记忆角度 认知心理学是研究人类认知和记忆的科学...
5. 认知心理学的应用:从认知心理学的记忆角度出发,优化背单词过程,提高学生的单词记忆能力。 6. Android 手机游戏开发环境:分析了手机游戏的开发环境,介绍了手机游戏开发的关键技术。 7. 益智游戏的设计要点:...
- **软件过程**:采用敏捷开发等先进的软件开发方法,提高开发效率和产品质量。 - **质量控制**:实施严格的测试流程,确保软件产品的稳定性和可靠性。 - **成本控制**:合理规划资源分配,优化成本结构,提高...
- **交互设计**:交互设计师基于策划的需求,结合心理学和用户体验,创建交互文档,定义功能和界面逻辑。 - **视觉设计**:视觉设计师根据交互设计制作出界面,Android平台常使用PNG和JPG图片格式,有时需要使用...
5. **配色原则**:理解色彩心理学,如何通过颜色搭配提升用户体验,以及色彩在信息传达中的作用。 6. **软件工程**:包括软件开发模型(如瀑布模型、敏捷开发等)、软件质量保证和软件测试策略。 7. **网络技术**...
9. **软件工程**:在开发网络教学系统时,需要遵循软件工程的原则,确保系统的可靠性和可扩展性,同时考虑用户体验和教育心理学的因素。 10. **技术选型**:开发过程中,需要选择合适的开发框架、数据库管理系统、...
应聘者需了解敏捷开发、Scrum框架,以及如何编写高质量的代码。 6. **数据结构与算法设计**:这是面试中的核心部分,腾讯可能会出一些复杂度较高的算法题目,要求应聘者现场编写代码。例如,动态规划、贪心算法、...
该应用将背单词与“打地鼠”游戏融合,并从认知心理学的记忆角度出发,优化的背单词过程,从而使得学生通过益智游戏锻炼思维敏捷性,加强单词记忆。 在开发 Android 手机游戏时,本文关注了以下几个方面: 1. 手机...
这涉及到用户心理学和信息架构的知识,确保信息的组织和呈现方式符合用户的认知模式。 其次,设计图是界面设计的视觉表现,分为线框图、交互原型和高保真设计图等阶段。线框图是基本元素的布局,关注功能性和信息...
易用性设计需要综合考虑用户体验、人机交互、美学和心理学等因素,确保用户能够轻松地发现功能、理解操作并高效地完成任务。在设计时,要充分考虑用户反馈和使用场景,以提供直观、高效的软件体验。 总结来说,软件...
在心理学研究中,它可以作为工具来分析人们解决不同类型谜题的速度,从而揭示认知过程的模式。对于个人用户,这个工具提供了一种量化评估自己解题效率的方式,通过练习和比较,提高思维敏捷度。 总的来说,"matlab...