软件设计的更高阶影响

抽象

本文着重于软件设计的社会心理学方面,强调其在形成最终用户的认知系统中的重要作用,并讨论了“认知设计”的可能性:软件定义用户的思维方式时。

介绍

当我们想到软件开发时,考虑到它的社会和心理作用以及开发人员和最终用户之间的相互联系,我们倾向于关注反应性关系:用户要求功能→开发人员实现功能→用户使用它。 在此方案中,开发人员看起来像是一个相当被动的系统。 如果我们将此过程视为对话,那么用户会问,开发人员会回答。 本文讨论了开发人员成为主动系统的可能性和必要性。

用户想要什么?

我们已经介绍了软件开发过程中的两个主要角色:用户和开发人员。 如果我们考虑用户的生命周期(作为角色,与实际的人分离),则从他们第一次遇到开发人员实现的软件时开始,或者与该开发人员就创建一些不存在的软件展开对话。然而。 从现在起,用户的认知系统开始发展:他们确定自己的需求,知道(在某种程度上)软件应该做什么,并且开始形成一些期望。

当开发人员交付该软件时,用户的认知过程将再次开始,并且它将在用户与开发人员之间的对话中定义一个新的迭代。 这是该系统中的关键点:新迭代不会脱离整个过程:即将到来的用户请求基于其认知系统的状态,他们的经验和期望,这暗示着以下事实:用户社区是有状态的系统。

行为设计

如我们所见,定义用户认知过程的是开发人员。 有一个恒定的反馈回路,并且用户系统会随着软件版本的每次迭代进行优化。 这就是本文诞生的原因:基于开发人员的活动,正在定义用户的未来行为。 如果您想一想,这将非常令人兴奋。 通过精心设计战略软件,开发人员可以操纵和完善用户的思维方式。 冬青馄饨!

这方面的重要性非常惊人。 用户将学习到什么是好的,什么是坏的,如何使用软件以及如何破坏软件的知识。 但这是用户的意识水平。 还有更多的东西:潜意识。

当软件开发过程发生时,开发人员应始终回答“我如何教我的用户使用我的软件?”的问题。 在这里,我们有一个非常合理的流程:文档,教程,演示文稿等。下一个级别的问题涉及潜意识,它是:“我该教用户什么?”和“教我的用户是对的吗?用户以这种方式使用该软件?”。 回答这些问题是理解软件开发过程和使开发人员成熟的下一步。

敬启者

在职业生涯初期,开发人员很少关心其解决方案的长期影响。 他们主要关心解决问题,及时交付解决方案,保持代码干净,优美和可支持。

然后,发生了开发人员的电灯泡时刻:“嘿,如果我从未教过用户使用此功能,甚至还会发生此问题吗?”。 这个问题定义了开发人员意识到其解决方案的更高阶影响的时刻。

在解决通用问题时,例如,通过创建库或框架,开发人员不再是反应式系统。 另一个参与者定义了此解决方案将解决哪种问题,如何解决它们以及实现用户目标的“正确方法”是什么。 不同的用户有不同的需求,他们使用开发人员创建的软件来解决各种问题。 用户的某些功能请求对于开发人员而言可能看起来不错并且易于实现,但是从长远的角度来看,它们可能会变成雪花,甚至会促进解决问题的效率很低的方式,这可能会升级到系统滥用和解决另一个更大的概念性问题的必要性,在实施之前可能已经避免了。

企业至上

开发人员不会创建抽象软件,因为他们可以。 该软件可以解决业务问题。 用户不会出于使用目的而使用软件:他们还会解决其业务问题。 一切都与业务有关,了解业务是双方的关键。

开发人员永远不应充当业务阻止者。 业务应该增长,开发人员应该理解它。 但是这里只有一个:用户一直在寻找最简单的解决方案,而开发人员正在寻找“正确的”解决方案。 培训用户为什么要以正确的方式解决问题的过程至关重要。 有一个众所周知的说法:解决此特定业务问题的系统中的技术复杂度最低。 它不能减少,只能重新排列。 倾听用户的声音非常重要,但更重要的是问题陈述的解释方式。 用户通常只解释问题的顶部,开发人员的工作是识别更大的问题并教会用户了解问题的复杂性和解决方案的可能影响。

结论

了解解决方案的更大影响并教育用户以“正确”的方式使用系统,这是定义开发人员资历的关键。 了解用户认知系统的状态及其在赛道上的保持方式有些极其复杂,而且几乎无法测量。 我个人认为这全都是基于开发人员的直觉和经验,但是我没有相关数据可以支持它。

专注于快速解决方案和用户的即时满意度的开发人员可能会赢得短期竞争:问题得到立即解决,没有问题,所有人都很高兴。 对于这种模型,新一波的问题可能会变得很重要,因为它可能涉及对先前解决方案的全面重新设计。

这些真正专注于长期解决方案及其所产生影响的人几乎无法生存,而无需教育他们的用户“思考正确的方法”。 但是,考虑解决方案的所有可能结果以及更广阔的前景总是需要更长的时间。 在这种情况下,这可能会导致失去业务机会,因为用户不想永远等待,他们“知道得更好”。

对于开发人员而言,保持对话的开放性并积极地教育用户非常重要。 认知过程非常敏感,并且对新数据非常敏感。 优秀的开发人员知道这一点并谨慎处理。 优秀的开发人员将其用作他们的秘密武器。