历久弥新 - 微软万亿市值背后的文化支撑(上)|DevOps案例研究

内容来源:DevOps案例深度研究-Microsoft文化支撑研究战队(本文只展示部分PPT研究成果,更多细节请关注案例分享会,及本公众号。

本案例内容贡献者:陈飞(Topic Leader)、陈雨卿、郭子奇、刘晨胜、善园林、赵英美、周银燕

本次案例解读:徐磊

640?wx_fmt=png

“墓有重开之日,人无再少之年。”这句话对于一个人来说是多么的无奈,但对于一家企业而言却不是不可能。微软这样一家44岁已经步入中年的公司,能够在不惑之年取得万亿市值,迎来第二春,看上去好似非常轻松,却也让很多目光盯住互联网公司光环的人大跌眼镜......

凭什么这样一家已经“过时”、“臃肿”、“毫无创新”的公司能够超越光鲜亮丽的苹果、才华横溢的谷歌和充满睿智的IBM,实现万亿市值?微软到底是凭借什么实现了自己的华丽转身?这恐怕是每个人都想要探寻的问题。  

640?wx_fmt=png

上图是从2014年至今,微软、苹果、谷歌和IBM的市值比较。其实大家都只看到微软今天的万亿市值,却没发现这个趋势在2014年就已经逐渐明晰了。这中间到底发生了什么,就是我们这次“历久弥新-Microsoft文化支撑”案例研究希望帮助大家回答的问题。  

640?wx_fmt=png

什么是企业文化?

640?wx_fmt=png

企业文化是很多企业管理者经常挂在嘴边的一个词,也是我们在谈论DevOps、敏捷和精益的时候都不可避免触及的一个话题。但到底什么是企业文化?如果对这个问题的理解有偏差,恐怕很多的讨论都会变成无根之水。

640?wx_fmt=png

艾德佳·沙因 (Edgar Henry Schein)是美国麻省理工大学斯隆商学院的教授,我们在案例研究的过程中发现,他针对企业文化的三个层次的描述是最准确的。在组织文化领域中,他率先提出了文化本质的概念,并对文化的构成因素进行分析,对文化的形成、文化间的转化过程提出了独到的见解。 

沙因将组织文化分为以下三个层次

1)人工制品(Artifact)

人工制品是那些外显的文化产品,能够看得见、听得见、摸得着(如制服),但却不易被理解。

2)信仰与价值(Espoused Values)

藏于人工制品之下的,便是组织的“信仰与价值”,它们是组织的战略、目标和哲学。

3)基本隐性假设与价值(Basic Assumptions and Values)

组织文化的核心或精华是早已在人们头脑中生根的不被意识到的假设、价值、信仰、规范等,由于它们大部分出于一种无意识的层次,所以很难被观察到。然而,正是由于它们的存在,我们才得以理解每一个具体组织事件为什么会以特定的形式发生。这些基本隐性假设存在于人们的自然属性、人际关系与活动、现实与事实之中。 

  • 对于第一个层次-人工制品,其实非常好理解,一个企业的员工制服、企业的logo、主视觉颜色等都构成了这些看得见、摸得着的东西。

  • 而第二个层面的表现就要依赖企业价值观来解释,这个价值观在企业文化中经常会表现为一句口号,比如:微软曾经的口号是“让每个家庭的桌子上都有一台计算机”,而当前微软的口号则是“予力全球每一个人,每一个组织,成就不凡”。这种口号上的变化,会直接带来企业的表现变化。对于微软来说,之前的重点在于Windows、Office等软件产品的销售,而现在的微软则是采取“云为先”的策略。

  • 以上两个层次都还比较容易理解和观察到,最后一个层次就不是那么容易理解了。我们不妨将这第三层简单理解为“假设”,也就是组织成员互相沟通的时候那些无需表达、沟通即可达成的共识。而这些,才是一个企业真正的属性。“在微软,这个基本假设是什么”就是这篇案例研究将为你揭示的核心。

康威定律

640?wx_fmt=png

这是一张非常经典的对比不同企业的不同文化特点的图,不必仔细琢磨,大概一眼就可以体会到这些不同组织之间的做事方式。

康威定律也是我们在谈论组织变革的时候经常谈到的,简单来说,就是:有什么文化就有什么组织结构,有什么组织结构就有怎样的系统架构。

相比于其他组织,微软最显眼之处就在于不同部门之间的那几把枪,这种各自为战的状态即便到了今天纳德拉时代的微软也仍然存在。

在大多数人看来,这恐怕是微软最大的问题,而事实也确实如大家所看到的,这确实造成了大量的内耗。但从另外一个角度来看,这也为微软转型创造了机会,这一点后续会有详细说明。  

大瀑布时代的微软

640?wx_fmt=png

对于做DevOps的人来说,看到“瀑布”这两个字几乎是直接排斥的,因为DevOps以敏捷为根基,而敏捷提倡的是小步快跑、持续迭代。从这个角度来看,大瀑布时代的微软似乎没有什么值得我们借鉴的,那么我们就来分析一下2010年以前微软的做事方式。

640?wx_fmt=png

这个时代最典型的产品是Windows,从Windows的第一个成熟版本3.1开始,一直到Windows7,都是以这种模式进行开发的。每个版本都需要经历多个Milestone,每个Milestone中需要完成从特性的构思、任务计划、开发、测试/稳定到版本发布/部署的整个生命周期。

你也许会发现,这个大瀑布时代的产品开发模型其实已经有了一定的迭代概念,只是每个迭代的周期相对敏捷的模式要长得多,会有3-4个月之久。

640?wx_fmt=png

要说微软历史上最失败的产品,Windows Vista一定会位列其中。但很多人不知道的是,Vista在长达5年的研发过程中,经历过一次完全的项目重置。

当时参与项目的工程师在安装了前一天的daily build之后,发现整个产品恢复到原来XP的样子,所有人都被吓呆了,以为系统出了问题。但当他们联系总部的工程师后才得知,原来是由于整个产品运行过于缓慢而被整体重置。当时的Windows开发工程师过于追求技术上的先进性,在内核中添加了太多的功能,使得整个系统运行极其缓慢,不得不推倒重来。

在这个故事的背后隐藏了一些大家不太注意的事实,那就是Windows团队当时的工程实践就算在现在看来也已经是非常之先进,比如: 

  • Windows的所有代码均会有自动执行的Daily Build来构建最新版本,测试人员第二天就可以拿到头一天的版本进行测试;

  • Windows几乎所有的代码都可以通过自动化测试进行验证;

  • Windows使用了非常成熟的分支管理机制,同时在分支上启用了持续集成(CI)策略,所有开发人员签入的代码均会触发自动化构建,并执行BVT(Build Verification Test)测试,也就是单元测试。

以上这几点恐怕是现在很多团队仍然无法做到的,但微软于2002年就已经在Windows这样规模的系统级软件上全面实现了这样完备的工程实践,可见软件工程是深深烙印在微软文化深处的基因记忆。

640?wx_fmt=png

微软另外一个失败的产品当然就是Windows Mobile和Windows Phone系列手机及其系统,这些故事相信大家都早有了解,本文就不再多作赘述。

这里不得不提到一位大神级人物Sinofsky,因为就是他叫停了不断变得臃肿的Vista,让这个产品可以最终上市;也是他在暴怒的鲍尔默面前力挽狂澜,才使得Windows Phone 7可以最终面世。虽然这些都阻挡不了这两款产品位列微软最失败产品的首位,但我们也同样不能忽视微软在开发这两款产品的过程中的优秀工程实践。

640?wx_fmt=png

Windows Vista 的失败在于过于激进的技术,而Windows Phone的失败则是零和博弈的结果。这些市场上的失败也让微软内部开始重新审视自己的很多做法,更为先进的实践也开始逐渐萌芽。

敏捷在微软萌芽

640?wx_fmt=png

640?wx_fmt=png

上面的2张图片来自于2015年Steven Denning发布于福布斯杂志的2篇文章:《惊讶:微软是敏捷的》和《微软规模化敏捷的16点核心实践》。在来自Scrum联盟的研究小组进入微软进行调研之前,大家都以为微软这家拥有12万名员工的公司是一艘巨型战舰,而经过调研后,小组成员惊讶地发现,微软更像是由很多小型快艇组成的快速反应部队。实际上,微软内部的敏捷转型早在2007年就已经开始初见萌芽

早期阶段微软内部敏捷转型的一个典型团队是Visual Studio开发工具团队,也包括微软DevOps工具链(当时叫做Team Foundation Server,现已改名为Azure DevOps)。下图是2013年Visual Studio产品交付周期的统计数据。

640?wx_fmt=png

可以看到,从2012年开始,Visual Studio 就将原来2-3年的版本发布周期缩短至3个月,同时TFS的在线版本(也就是现在的Azure DevOps的前身)的发布周期缩短为3个星期。

你需要知道的是,VS团队有近5000名开发人员,整个产品完成一次Full Build需要8个小时的时间,在这样规模的产品上将发布周期从2-3年降低到3周,这样的敏捷转型无论是从管理流程上还是工程实践上都是巨大的考验。

640?wx_fmt=png

更何况Visaul Studio并不是什么无关紧要的产品,它支撑着包括Windows、Office在内的微软主要产品的研发,这些产品的每日构建量在2013年就已经高达3万次以上。到了2018年,这一数字竟然到了惊人的78000次/每天,而且不仅包括构建,还包括产品部署,因为这个时候微软的产品形态已经全面转向云端。

640?wx_fmt=png

下面这段视频发布于2013年,大家可以从中了解2013年微软内部上千名工程师的规模化敏捷实践。 

  

参考资料

  • https://www.barryovereem.com/microsofts-agile-transformation-journey/

  • https://www.forbes.com/sites/stevedenning/2015/10/27/surprise-microsoft-is-agile/#1efc856a2867

  • https://www.forbes.com/sites/stevedenning/2015/10/29/microsofts-sixteen-keys-to-becoming-agile-at-scale/#583c8c7115ce

  • https://stories.visualstudio.com/scaling-agile-across-the-enterprise/

  • https://stories.visualstudio.com/devops/#

请期待「历久弥新 - 微软万亿市值背后的文化支撑(下)」

拓展阅读:DevOps案例研究:知人善任——Google敏捷核心文化

DevOps案例研究:进取到让自己毛骨悚然,Netflix公司的简介和文化

DevOps案例研究|史上最能“拜客户教”的公司,是如何做到持续交付的?(第1趴)

DevOps案例研究:庖丁解牛,剖析Google持续交付之道


640?wx_fmt=gif640?wx_fmt=gif640?wx_fmt=gif

DevOps黑客马拉松 

9月7-8日 北京

专业大咖陪你一起进化

欢迎企业组队PK,企业团队报名有特惠

目前已经有两家企业组队!!

赶紧报名吧~⬇️⬇️⬇️

640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建

在上一个小系列文章《ASP.NET Core on K8S学习初探》中,通过在Windows上通过Docker for Windows搭建了一个单节点的K8S环境,并初步尝试将ASP.NET Core WebAPI项目部署到了K8S,把玩了一下快速部署和实例伸缩。这个系列开始,会继续学…

我眼中的 NCC,WTM 寻亲之旅

峥嵘岁月如谢花流水,三朝五帝如散雾云海。开发语言更迭如此。我们所坚持的,只是那最初的感动,那“只是在人群中多看了你一眼”的惊艳。三十年河东,三十年河西,不忘初心,方得始终!嗯,…

Codeforces Round #594 (Div. 2) C. Ivan the Fool and the Probability Theory 思维 + dp

文章目录题意:思路题意: 思路 一开始找规律,表都打好了,没找出来。。 找规律还是适合让队友来。 先考虑第一行,我们先计算第一行的方案数,设f[i][j]f[i][j]f[i][j]表示到了iii位,第iii位的颜色…

Wtm携手LayUI -- .netcore 开源生态我们是认真的!

经过WTM团队和LayUI团队多次深入协商,双方于2019年7月29日在北京中国国际展览中心正式达成战略合作意向,双方签署了战略合作框架协议,LayUI团队承诺使用WTM框架的任何项目都可以免费使用其收费版的后台模板,WTM团队则从受捐助款项…

Codeforces Round #305 (Div. 1) D. Mike and Fish 欧拉回路

传送门 文章目录题意:思路:题意: 思路: 欧拉回路经典题。 将其转换成图上问题,对于横纵坐标我们将其分开,对于(x,y)(x,y)(x,y)我们将其横纵坐标连一个无向边,现在问题就转换成了我们需要对每条…

高性能动态编译库Natasha发布1.0版本!

一、 前言对于开源贡献者,Emit和表达式树不是陌生的字眼,IL的动态特性为封装工作带来了极大的方便,会Emit的开发者可以说驾驭了大部分的高性能、高动态的编程技巧。纵观ef、dapper、json.net等第三方常用库,哪个能脱离emit而独善其…

Codeforces Round #245 (Div. 1) E. Points and Segments 欧拉回路 + 建模

传送门 文章目录题意:思路:题意: 思路: 考虑对于线段,如何建模。 我们考虑先将线段转换成左闭右开的形式,将左右点连起来。 再考虑每个点,将所有离散化后的点拿出来,每个点都有一个…

微软.Net Core 3.0 预览版7发布:大幅减少 SDK 空间大小

据悉,这个预览版是 .Net Core 3 中重要的版本,可以视为原计划在 7 月发布的 RC 版本 (引自微软 .NET Core 首席 Program Manager Richard 先生原话),故可在生产环境进行开发和部署。Windows, macOS 和 Linux 版本的Download .NET …

5门可能衰落的编程语言

专注于为北美地区的科技专业人士提供行业见解和分析,以及提供求职消息的技术职业消息服务网站 Dice Insights 近日发表了一篇题为《5 Programming Languages That Are Probably Doomed》的文章。作者主要根据 TIOBE 和 RedMonk 这两个编程语言排行榜,以及…

.NET加水印/验证码的NuGet包

.NET加水印/验证码的NuGet包 我的在前两篇文章中&#xff0c;我介绍了使用Direct2D给图片加水印/验证码&#xff0c;今天我将其进行了封装&#xff0c;发布了一个NuGet包Sdcb.Imaging&#xff1a;<PackageReference Include"Sdcb.Imaging" Version"1.1.0&quo…

hdu1686:KMP板子

题目链接 题目大意就是给你两个字符串&#xff0c;求出第一个字符串在第二个字符串中出现的次数。 如果我们暴力匹配的话&#xff0c;复杂度是 len(first) * len(second) 对于题目给的 1e4 * 1e6 显然暴力不可取&#xff0c; 这里就用到 KMP 。 说到 KMP 最难理解的就是 next…

集群故障处理之处理思路以及健康状态检查(三十三)

前言 按照笔者的教程&#xff0c;大家应该都能够比较顺畅的完成k8s集群的部署&#xff0c;不过由于环境、配置以及对Linux、k8s的不了解会导致很多问题、异常和故障&#xff0c;这里笔者分享一些处理技巧和思路&#xff0c;以及部分常见的问题&#xff0c;以供大…

Trie初步

简单的描述就是一个字典树&#xff0c; 我们用下图来简单描述一下。 上述的字典树代表着 ab abc abk cd ca b 这六个单词&#xff0c;我们不难发现其中标记是红色的代表从一个伪根节点到这是一个完整的单词。不同的单词有重复的部分&#xff0c;例如accepted&#xff0c;accep…

使用Kubeadm创建k8s集群之节点部署(三十二)

前言 由于上次忘开申明原创&#xff0c;特再发一次。本篇部署教程将讲述k8s集群的节点&#xff08;master和工作节点&#xff09;部署&#xff0c;请先按照上一篇教程完成节点的准备。本篇教程中的操作全部使用脚本完成&#xff0c;并且对于某些情况&#xff08;比如镜…

Trie:hdu 4825、1251、1247、Poj 3764

hdu 4825链接 题目意思很简单&#xff0c;就是要求最大异或值的数。 我们可以从二进制的最高位开始选择&#xff0c;不断的排除一些数。我们先假设存在某些数字的二进制数是与当前查找的数不一样的&#xff0c;我们进入这一部分数进行查找&#xff0c;以此重复&#xff0c;不断…

ASP.NET Core on K8S深入学习(2)部署过程解析与部署Dashboard

上一篇《K8S集群部署》中搭建好了一个最小化的K8S集群&#xff0c;这一篇我们来部署一个ASP.NET Core WebAPI项目来介绍一下整个部署过程的运行机制&#xff0c;然后部署一下Dashboard&#xff0c;完成可视化管理。本篇已加入了《.NET Core on K8S学习实践系列文章索引》&#…

02 | 健康之路 kubernetes(k8s) 实践之路 : 生产可用环境及验证

上一篇《 01 | 健康之路 kubernetes(k8s) 实践之路 : 开篇及概况 》我们介绍了我们的大体情况&#xff0c;也算迈出了第一步。今天我们主要介绍下我们生产可用的集群架设方案。涉及了整体拓补图&#xff0c;和我们采用的硬件配置&#xff0c;目前存在的问题等内容。遵循上一篇提…

[开源] .NETCore websocket 即时通讯组件---ImCore

ImCore 是一款 .NETCore 下利用 WebSocket 实现的简易、高性能、集群即时通讯组件&#xff0c;支持点对点通讯、群聊通讯、上线下线事件消息等众多实用性功能。开源地址&#xff1a;https://github.com/2881099/im &#xff0c;求 star~~dotnet add package ImCoreIM服务端publ…

【译】在 Linux 上不安装 Mono 构建 .NET Framework 类库

在这篇文章中&#xff0c;我展示了如何在 Linux 上构建针对 .NET Framework 版本的.NET项目&#xff0c;而不使用 Mono。通用使用微软新发布的 Mocrosoft.NETFramework.ReferenceAssemblies NuGet 包&#xff0c;您将不需要安装除 .NET Core SDK 之外的任何其他软件包&#xff…

DevOps书单:调研了101名专家,推荐这39本必读书籍

任何一个领域都遵循从新人到熟手&#xff0c;从熟手到专家的路径。在成长过程中&#xff0c;DevOps人经常会陷入没人带&#xff0c;没人管&#xff0c;找不到职业方向的迷茫。DevOps是在商业演进与企业协作的进化过程中诞生的一个全新职业&#xff0c;被很多人看成是一个“全栈…