认知负荷和软件质量
认知负荷和软件质量
软件设计是条件和上下文组合的建设性艺术。
实现高度不平衡的条件状态会产生一个具有高认知负荷的系统。高认知负荷具有贬义作用。
敏捷宣言——个体和交互超过流程和工具。
个人及其互动受到认知负荷的不利影响。当认知负荷高时,我们的感知能力会下降,因为我们无法进行有效和高效的沟通和协作,并且我们无法按时做出正确的决定。
当负载持续存在且没有立即采取行动纠正情况时,领域知识变得不清晰,业务流程变得复杂、复杂和混乱。
人们在不确定性中伪装和玩耍。他们寻求低价值或毫无价值的简单任务,以看起来很忙,而不是不知所措,或者被谴责、降职,甚至被解雇。
更重要的困难任务没有被说服或没有实现,因为这将是具有挑战性的,需要时间和精力。
生存模式启动并助长了负面反馈循环,从而创造了一种鼓励非生产性活动并削弱勤奋工人的文化。
入职变得困难,因为学习曲线陡峭。由于知识无法转移,替换变得困难和或不可能。
另一方面,系统被打补丁,依赖项堆积并纠缠在一起,使整个过程变得混乱并形成一团泥浆。
很快,由于业务知识存在于系统中,业务可能会安然无恙,因此系统很快就会成为不能被淘汰的遗留系统。
在模棱两可的情况下运作成为一种常态。等级制度很高。官僚主义盛行。
竞争对手的出现破坏了企业生存的利基市场。然而,不幸的是,遗产仍然是寄生虫,同时使投资回报成为神话。
好的一面是,这样的项目,在正确的眼里,是大量的知识和智慧,因为没有多少幸存下来。
必须倾听经过实战考验、被滥用的系统及其故事,并从他们的道德中吸取教训。
确认后,开始提取隐藏的宝藏。首先,确定核心。拥有一个自动化测试工具,它将为关键功能在整个迁移尝试中保持不变提供安全和保障。
花更多的时间阅读这些书。
Donella Meadows 在系统中思考
重构改进现有代码的设计 @martinfowler
有效地使用遗留代码 @mfeathers
通过提取,我并不是说立即使其成为一个完全隔离的独立系统,而是将核心逻辑解耦并使其模块化,以小的增量步骤并重新获得业务领域知识。
优化客户交互领域的性能和可用性也必须优先考虑。留住忠诚。直接接近并获得急需的反馈。
熟练的团队管理对于交付至关重要。各种改进需要特定的特征。不断建造,谨慎购买。积累不是目标,增值才是。
现在我们有了一个模块化的单体,经过良好的测试,有大量的文档。
你在考虑分布式吗?问。分析。等待。
为什么?有什么需要?对企业有什么好处?当前系统没有解决哪些业务问题?这是业务流程问题还是技术问题?我们有策略吗?我们有预算吗?
我们的文化是 DevOps 吗?我们是否拥有足够熟练的全栈员工队伍,可以完全承担端到端的责任?我们对当前系统有完整的可观察性吗?我们是否能够将需求分解为一两天内可以完成并部署到生产环境中的任务?
记住!
分布式系统带来不确定性。承认它。
失败和信息不完整是正常的。这并不例外。
决定数据质量。围绕它培养其他品质。
它不应该是第一种方法,尤其是对于新建项目。但仍然在我们的上下文中,提供大量的模块化思想。
歧义存在于领域中,不要进一步帮助它。这是不平衡的根源。内省,不断回顾以找到清晰和目标。
我们必须深入反省以消除我们的偏见,以改善沟通和协作,以产生和加强积极的反馈循环。正念的方法必须是我们自我完善过程的一部分。
我们必须思考并找到一个平衡的心理状态。我们应该尝试更好地了解自己和他人。积极思考是有帮助的。我会更好地对待自己和他人。我会善良的。我会很谦虚。我可以学。我可以改进。我会帮助自己和他人。在评判他人之前,我会先尝试了解自己,并尝试从他们的角度来看。
我们必须培养所有参与者的系统性思维并简化流程以实现更好的回顾。
凭借多年在遗留系统方面的经验,继承了他们拥有的认知负荷,同时追求构建高质量的软件,系统思维一直是一种祝福,一种解脱,一种大开眼界。
简而言之,系统思维是关于在给定或想象的环境中看到联系、它们的影响和后果。它使我们能够在理解和使用良好的情况下识别认知负荷。
容忍模棱两可,好奇心强,开放性强,人际交往能力强,沟通能力强。提出正确的问题、驾驭复杂性和分析能力是系统思维所需的一些特征。探索它们。建造它们。制作优质软件。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明