上一个故事是关于自治团队解放生产力的。除了生产力之外,交付的另一个关键因素是软件架构。架构不是那么容易在软件开发过程中改变一些东西。但是,与过去时代不同的是,今天的软件架构已经不是所谓的架构师,做出一些高层的决定,然后就停止改变了。在这个技术日新月异的时代,今天的架构更像是一个时间线,是一系列轻量级技术决策积累的结果。这个故事是关于技术决策的。开放行:所有权?经营权?决策权?监督权?与NoteA不同,我们的客户NoteC没有自己的IT团队,也没有明显的IT部门。与C吉的合作时间更长,这么长的合作过程是从一段“黑历史”开始的。从2009年到2010年,C-record项目的技术决策过程基本是这样的:客户说,“我们只能用SQLServer”。我们听到这个消息后,一方面心里想,“为什么选择SQLServer,为什么我们喜欢微软?”另一方面,我们发现客户并没有提到用什么ORM框架,所以“weMakeone”。接下来发生的事情是,我们想出了一个嫁接在SQLServer之上的NoSQL文档数据库。这个项目从上线第一天起,就被打脸:性能问题、维护成本、数据迁移困难。我们花了很多钱才让这套东西基本能用。这不是那段时间唯一“鲁莽”的技术决定,这一切是如何发生的?事实上,存储框架的决定远比采用什么数据库重要,但是这样重要的决定还没有摆到桌面上来和客户认真讨论过。我们不是糟糕的工程师,但我们把我们的才能和精力用在了错误的地方。没有业务指导,技术决策更“技术导向”而非“业务导向”。我不得不写一封邮件给客户解释为什么我们要花很大的代价从自制的存储框架转向更成熟的解决方案,我还清楚地记得当时的尴尬。客户当然很不高兴,最好的回应是,“至少我们开始谈论这些事情了”。所以这就是我们开始做的,我们开始让客户参与做出重要的技术决策。成立技术治理小组,每月讨论技术方向,利用技术债雷达可视化并积极处理技术债,这一切都是在客户的参与下发生的。一方面,这是为了让更多的信息对客户透明,但另一方面,为了做出审慎的技术决策,我们需要知道客户面临的约束条件,需要能够从中验证我们的假设他们。因此更好地尊重这些约束。TechLead的倾向已经从追求“正确”的决策转变为开始做出“合适”的技术决策。于是事情开始朝着好的方向发展。2011-2014年homemade的存储框架桥接运行成功,让我们逐步向成熟的方案迁移;我们开始构建更多的产品,微服务的技术架构也发生了变化。逐渐成型;随着新系统上线,旧系统退役,整个平台迁移到RackSpace,加上自动化部署流水线,发布越来越频繁。美好的结局?不幸的是没有。2014年,客户的技术总监调到另一个部门,由另一个人接管了他的工作。与他的前任不同,他非常参与技术决策。有时甚至替团队做决定,然后让团队承担决定的后果。这导致了另一个问题,当团队只有一个决策结果时,如果没有重新思考和衡量约束的过程,团队就无法在不断变化的技术环境中不断地测试之前的假设。一方面,我们失去了很多采用新技术的机会,更重要的是,团队需要能够自己做决定,承担自己决定的后果,并从自己的决定中学习和成长。所以我们建议客户可以分享更多的上下文而不是做决定。决策由团队做出,但客户保留否决权。如果客户不同意该决定,团队可以在分享原因后更好地提出替代方案。去年,CJi的团队成功交付了一款新产品,取代了几款耗时三年多开发的老产品。由于大部分功能已经服务化,新产品的开发只用了半年多的时间就上线了。用客户的话说,我们“一跃能跃高楼”。这是正确的技术决策凌驾于错误的技术决策之上的结果。倾听、理解和尊重客户限制,并在技术决策中谨慎行事。同时,随着技术的发展,我们不断反思和检验这些约束假设是否仍然有效,从而不断保持技术架构演进方向与业务能力的对齐。这是C故事的亮点。隐藏线:寻找时间之箭有趣的是,如果你倒着读NoteC的故事,你会发现,如果你打磨它,它仍然是一个好故事:一开始,客户坚持控制技术决策,我们受了很多苦。然后,慢慢信任,逐渐放弃控制,***,我们赢得了客户的信任,开始自主决策,happyending。这不是真的,但这是一个更好的故事。正如物理定律中时间是对称的一样,决策机制在这个故事中也是时间对称的,所以决策机制不是进化的关键因素。但是,在物理学中,熵的增加是时间箭头的方向,那么这里的时间箭头是指什么呢?从郭晓的发言中,我找到了自己想要的答案。正如交易成本的不断降低打破壁垒,促使无数人投身创业一样,技术成本和技术壁垒的不断降低,也将带来更广泛的结构性变化。例如,自动化测试技术杀死传统测试部门,数据库自动化技术杀死DBA,部署和运维自动化杀死运营,云化和嵌入式安全可能杀死采购和安全。当这些东西因为技术的进步而标准化,当一个综合的数字化平台有了,那么剩下的就只有业务解决方案、技术栈和实现代码了。在这张图中,没有代码的传统IT部门的麻瓜们没有参与,所以将决策权交给开发团队是很自然的选择……“如果IT决策者不做任何决策更长的时间,谁在做主?答案是开发人员。开发人员是技术领域最重要的支持者。他们有能力成就或破坏企业,无论是通过他们的喜好、他们的热情,还是他们自己的产品。”——The新王者:开发者如何征服世界开发团队的力量越来越大,意味着责任越来越大,在这种新形势下,技术决策保障也需要转变思路。找到自己的目的,把自己成长的力量用在正确的地方,这才是一个技术leader应该做的主要是为了营造安全感。我们传统的企业客户或多或少都有类似的决策机制(所谓的架构组),说白了就是用增强的管控来应对新形势下的失控心态。但是,能控制的东西越来越少了。科技之箭让控制本身的价值越来越小,反而成为障碍和负担。在IT部门消亡之前,也许就像我们与C的故事的后半部分一样,事情会在好转之前变坏,但熵的车轮不会停止。正是这种反抗,才如此顽强。每当传统企业想要卸下包袱,向前迈进时,障碍都不是来自领导层。穿过传统企业繁琐的流程和层级,背后有“企业架构师”和“系统架构师”,他们在这样的新形势下即将被“杀死”,失去职业发展空间。那么,你现在的立场是什么……【本文为专栏作家《ThoughtWorks》原稿,微信公众号:Thinkworker,转载请联系原作者】点此阅读更多该作者好文
