软件架构师的领导技巧 - bschalme


成为软件架构师的典型路径始于多年来亲身参与的软件开发工作。你已经积累了广泛而深入的技术知识。在这个过程中,你已经发展了你的沟通技巧。我并不只是指状态报告。我指的是通过指导初级开发人员,向你的同行介绍你在特定工具、框架或语言方面获得的知识,以及与系统和业务分析师的互动。

现在你已经成为一名架构师,更多的人将把你作为权威,作为专家来看待。现在你开始为软件设计以及工具和框架的使用提供指导。你注意到你有更多的影响力。你现在对你的团队正在建造的产品的技术解决方案负责。你现在处于一个领导的位置。

领导力的原则
我早期的领导力培训是在加拿大军队中进行的,这可以说是领导力培训的最好来源之一。多年来,我把他们教给我的东西改编为与熟练的IT专业人士一起工作。我学到了很多经验,既有简单的方法,也有困难的方法。以下是让我受益匪浅的原则。

你不是一个人在战斗
你的老板是来帮助你的。我假设你的老板不是技术性的,而是管理性的,比如经理、总监或副总裁。我已经记不清有多少次对我的老板说:"情况是这样的,这是我想的处理方法,你觉得怎么样?" 这有助于我使用正确的方法,与他们的目标、战略和领导风格相一致。根据不同的情况,这也有助于确保你在公司政策的范围内。

如果你的老板是一个技术性较强的老板,如首席架构师或企业架构师,他们也可以帮助解决高水平的技术问题。他们可以给你关于整个企业架构的指导。

你的架构师同事也可以帮助你。毫无疑问,他们已经遇到了与你所面临的类似的技术和设计问题。把你的想法告诉他们。他们是指导和经验的丰富来源。

代表你的团队
如果一个商业用户、经理或其他什么人想因为一个令人尴尬的或严重的技术故障而对开发人员进行指责,请阻止他们。承认这个问题和它的后果,然后告诉他们 "我会处理这个问题"。然后与开发团队一起跟进,弄清出错的原因。如果你已经知道了,那么就给那个人以建设性的反馈。你的团队会注意到你愿意为他们站出来,这就建立了他们对你的信任。

功劳归集体,负主要责任
软件开发是一项团队运动。这个团队由在其特定领域非常熟练的个人组成。但是,它需要一个整体来生产能够提供商业价值的工作软件。

当事情进展顺利时,当客户、商业用户或管理层赞扬你所交付的工作时,要强调说你有帮助。把功劳归于你的团队。如果你能挑出一两个人,他们的努力是成功的关键,就公开说出他们的名字。此外,确保他们在邮件中出现。

相反,当事情变得糟糕,你的团队表现不佳时,公开表示 "这一次是我的责任","我会处理好的",不管是什么原因。然后与你的团队成员私下跟进。如果有人在他们应该知道的情况下犯了错,就一对一地提供建设性的反馈。根据情况,指导团队的其他成员,将其描述为 "这件<坏事>开始发生了。让我们小心谨慎,确保我们做X、Y和Z来检测和缓解它"。

所有这些做了三件事。第一,开发人员看到你可以被信任,以保护他们免受来自许多方面的谴责。第二,当你愿意给予应有的荣誉时,他们对自己感觉良好。第三,他们意识到他们需要继续生产高质量的工作。

教导和解释
你会有很多机会向开发人员解释新的概念,指导他们,纠正行为或编码输出。只要你能做到,就解释一下原因。为什么这很重要?这可能是为了提高软件的可读性。或者使它更容易维护。或者提高其性能或可维护性。这也许是商业客户的一个关键功能点。记住,我们面对的是积极的、聪明的人。如果他们理解了原因,他们就会成为更好的开发者,你的团队就会生产出更好的产品。

此外,用他们做他们应该做的事情的理由来武装自己,他们就会被授权来做决定。展望未来,他们可以自己做出与你希望他们做的一致的设计决定。这可能不完全是你会做的事,但他们会在本质上是一样的。

赋予你的团队成员权力是你如何使自己倍增,并使你的努力倍增。赋权是你如何从你的人身上得到最好的东西。组织对能够熟练地做到这一点的人非常重视。

征求他们的意见
你的团队里有非常有才华的人。你会发现他们有你没有想到的想法。他们往往比你对某一主题有更深入的了解。征求他们的意见,让他们对设计决策进行权衡。这使他们感到自己被重视和重要。反过来,这也有助于你的团队提供一个更好的产品。

树立榜样
人们会开始仰视你。他们会模仿你的编码风格,你的书面和口头沟通技巧。你需要赢得他们的尊重。以你希望被对待的方式对待他们。

假设人们已经尽力
我从敏捷软件开发社区使用的 "首要指令 "中改编了这句话。

"不管我们发现了什么,我们理解并真正相信,考虑到他们当时所了解的情况、他们的技能和能力、可用的资源以及手头的情况,每个人都做了他们能做的最好的工作。
- Norm Kerth,《项目回顾》。团队回顾手册

开始时,假设人们尽其所能地完成了他们的工作。他们必须向你证明相反的情况。即使如此,也要花时间去挖掘根本原因。他们是否因信息不充分而受阻?他们在工作中受到什么限制?他们当时知道什么?如果他们尽了最大努力,但超出他们控制范围的情况导致工作不达标,请同情他们。承认他们在所面临的情况下做了他们所能做的。然后采取措施减轻这些外部因素。

提供建设性的反馈
到目前为止,你已经为你的同行提供了代码审查。作为一个软件架构师,你会继续做这些,但现在会有更多的情况需要你提供反馈。其中一些可能是纠正性的行动,以解决一个问题。在其他时候,它将是大部分的好消息。不管怎么样,这里有一个提供反馈的技巧,不会让对方感觉很糟糕。

首先,找一些积极的事情来说。例如,"总的来说,这很好"。然后指出不足之处,建议具体的改进,并给出改进的理由。最后,用一些积极的东西进行总结。

尽早沟通,经常沟通
我喜欢与我的团队成员稍稍过度沟通。没有人喜欢被蒙在鼓里。人们想知道大局,想知道组织的目标和战略是什么,想知道他们在这个大局中以及在这些目标和战略中的位置是什么。

显然,你不希望撞见任何机密信息。与你的老板合作,了解任何高度机密、禁止进入的主题,等等。然后自由地告诉你的人你所知道的事情。如果他们问你,你不知道,就诚实地告诉他们你不知道。如果你知道一点,就告诉他们你所知道的一点。人们会对这种程度的诚实和透明作出反应并表示赞赏。你没有隐藏的目的。

每周和他们聊一次天。让他们谈谈工作之外的激情,谈谈对他们来说最重要的事情。这可能是家庭、假期、爱好、运动,等等。不管是什么,记住他们,这样你就有了一些有意义的东西来开始未来的谈话。人们喜欢谈论他们的激情。当你对他们的激情表现出真正的兴趣时,你就会与他们建立信任和可信度。

综上所述
领导技能是 "软技能 "之一,到目前为止,你几乎没有必要去考虑这个问题。领导力是一种可以学习的技能。寻求你需要的培训,向你的老板寻求指导。把你工作过的最好的领导人的品质,变成你自己的品质。

当你为磨练你的领导技能所做的所有努力导致你的团队表现出色时,这一天就会到来。你从中得到的感觉是领导力的最丰富的回报之一。