本书主要讨论软件架构角色 跟技术深度和广度 有关的部分。但这只是一部分,我们本质上谈论的是领导的角色,“软技能”或“交际能力”也极其重要。
- 领导力 :简单来说,领导力就是创造共有的愿景,并带领人们向着共同目标前行的能力。
- 沟通 :你有世界上最好的想法和愿景,但如果不能有效地传达给其他人,也是死路一条。这包括了软件开发团队内外的人,要使用适合受众的语言和细节水平。
- 影响力 :这是重要的领导技能,从毫不掩饰的劝说到神经语言编程1 或绝地控心术2 ,它能够以多种途径实现。通过妥协和谈判也可以达到这样的目的。每个人都有自己的想法和计划,你在处理时还得让他们都不反感,并主动地去追求你需要的结果。好的影响力也要求好的倾听和探索能力。
- 信心 :信心很重要,是有效的领导力、影响力和沟通的基础。但信心不代表傲慢。
- 合作 :软件架构角色不应该被孤立,(与其他人)合作想出更好的方案是一项值得实践的技能。这意味着倾听、谦虚和响应反馈。
- 指导 :不是每个人都对你正尝试做的事情有经验,你需要对他们进行角色、技术等方面的指导。
- 辅导 :辅导是对人进行学习方面的指引,而非告诉他们怎么做一件事。作为领导,你可能会被要求去辅导团队中的其他人。
- 动力 :这说的是保持团队愉快、开朗和积极。团队要有积极性,才会跟随你这个软件架构师所创建的任何愿景。你还要面对团队中一些人不买账的局面。
- 润滑剂 :你经常需要退后一步,促进讨论,特别是团队内有不同意见时。这需要探索、客观,帮助团队达成共识。
- 政治 :每个组织都少不了政治。我的咒语是,离得越远越好,但你至少应该明白周围发生了什么,这样才能做出更可靠的决策。
- 责任感 :你不能因为失败就责备软件开发团队中的其他人,有责任感对你而言很重要。如果软件架构不能满足业务目标,无法交付非功能性需求或技术品质很差,那都是你的问题。
- 授权 :授权对任何领导角色来说都是一个重要部分,作壁上观和事必躬亲之间有一条模糊的界线。你应该学会在适当的时候授权,但请记住,你授权的可不是责任。
1 http://en.wikipedia.org/wiki/Neuro-linguistic_programming
2 电影《星球大战》中绝地武士(Jedi Knights)的技能。——译者注