向开发人员提供倡议的编程心理学
我之前写过,编程有两个受众:CPU 和你的编程搭档。
还有一些优良的文章,比方《面向苦难编程》,能够帮忙你在编程时调整指标——让它工作、让它丑陋、让它疾速,这是那篇文章的倡议。
“让它工作、让它丑陋、让它疾速”是绝妙的编程倡议,也是我从第一次读它开始就始终牢记在心的倡议。
编程倡议程序首先以 CPU 为指标——即“使其工作”。
1 正当的编程倡议
而后倡议针对您的编程搭档,即必须保护或查看代码的人,让代码丑陋。
一旦您的代码胜利满足其计算要求,并满足与咱们一起共事的普通人可能了解的要求,那么,如有必要,咱们就能够聚精会神地不断完善它。事实上,代码“丑陋”意味着有可能更容易找到改良的机会,因为在大多数状况下,使代码“丑陋”意味着更小的、独立的函数,从而使得更易优化。
我最近在网上和一位敌人聊天,他提出了一个问题,这也反映了我的经验:他的工作是集成一组代码,这些代码是在没有团队监督的状况下创立的。这些代码不足测试,并且是独立编写的,没有遵循与主我的项目雷同的编码标准。
这是一个艰巨的处境。集成这样的代码意味着要试图弄清切入点——这是测试的职责——但因为没通过测试,你不得不置信编码者实际上满足了需要,因为在现实情情景下,测试也要证实这一点。
你会怎么做?你会给什么编程倡议?
2 无抵触面对
如我所言,我遇到过相似情景,尽管我抵赖还能够解决得更好,但同时我也认为本人曾经做得够好了。
人们不 喜爱 被面对,面对什么并不重要。迪特里希·邦霍费尔(Dietrich Bonhoeffer)有一个粗浅的洞察,即个体可能很愚蠢,但群体可能 超级 愚蠢——更蹩脚的是,冲突挑战,抵抗力会随着参加人数的减少而减少。(你能够很容易地扭转一个敌人的想法——然而扭转一群七个人的想法却难于上青天。)
所以我所做的就是把本人描绘成一个受到他们的代码库挑战的人。我没有评论 理论代码 或它们有多可怕:我让本人专一是于学习代码,因为我不了解它。
这个性能的测试在哪里?”我问道,只管我晓得没有测试。毕竟,我可能是错的……问测试在哪里是对他们的温和刺激,以便我能从他们那里有所播种。
这个问题给了他们很大的回旋余地。
3 强制自我检查
他们能够指出测试在哪里的确满足了我的需要;兴许我只是没看到?(在这种状况下,不存在测试,我晓得,但这不是重点。我须要他们思考 可能性。)
他们也能够本人察看到,兴许测试不存在,作为交接的要求,兴许他们能够 写一个。
当您还没有设计用于测试的代码时,测试很 艰难 ,但在您承受代码之前,这不是 您的 问题,这让他们有机会批改本人对代码的了解,而不用在意 我对他们代码的认识。
当然,兴许你没有权限要求这样的测试。在这种状况下,您可能须要向利益相关者(负责交付代码的人)申请帮忙,并指出未测试代码的集成引入了可变的可靠性(即,它是不牢靠的,因为您不能假如它 是牢靠的)。
与利益相关者就可靠性进行对话可能会 让您有权回去进行构造和测试的对话。
4 编程倡议心理学
再者说,这种对话齐全能够颠倒过去。如果他们编写了意大利面条式的代码并为此感到骄傲——谁不会呢?—您会简略地要求他们编写它,以便您的小脑袋能够像了解依据组织约定编写的代码一样容易地了解它。
“哇,那个 243 行的函数太厉害了,就是看不懂。你能通知我咱们如何将它合成并重构为具备更小的函数和组合吗?而这个对“j”的援用,是一个索引吗?咱们能把它命名为它理论代表的货色吗?是窗口句柄吗?请帮帮我,我真的不明确。”
这是根本的心理学原理。在某种程度上,这是一种操纵,但咱们每天和每次互动都以温和(心愿是凶恶)的形式操纵人们:当咱们与人打招呼时,咱们会微笑,以触发特定的内啡肽,咱们首先提到好消息(或者不是)发明有利于咱们想要的特定心态。为本人的目标应用人们的思维和感知形式并不奇怪,如果后果是侧面的,那么这样做也不是好事。
不要胆怯用心理学来帮忙你编程。这可能很难,因为有时它意味着你不能对那些可能真的须要大喊大叫的人大喊大叫——但大喊大叫往往会事与愿违,如果指标是富有成效,那么咱们须要思考如何发明咱们的工作环境,而不是通过按住他人来满足咱们的私欲。
注:本文译自:The psychology of offering programming advice to developers – Coffee Talk: Java, News, Stories and Opinions (theserverside.com)