如果你不得不与公司的文化抗争,以实现一个革命性工具的诞生,你会怎么做?认识杰弗里·斯诺弗,微软的架构师,他是PowerShell的背后推手,这是一种改变了Windows系统管理的命令工具。最初遭到怀疑,斯诺弗的想法面临来自一个偏爱图形界面的公司的抵制。斯诺弗的旅程始于一个简单的使命:让Windows的命令行管理能力与UNIX系统一样强大。尽管面临阻力并经历公司重组,他的坚持最终得到了回报。本集探讨了斯诺弗如何凭借不懈的动力和清晰的愿景克服重重障碍,最终创造出如今在现代企业环境中至关重要的工具。倾听一个人的决心如何挑战现状。帮助亚当找到他的下一个角色 我正在寻找一个新的开发者关系角色。如果你知道有任何公司需要一个能够与工程师沟通、能够与开发者交流的人,那就是我。我是你解释复杂事物的最佳人选,以一种引人入胜、有趣且对软件开发者有意义的方式。如果你知道有这样的角色,请告诉我。我应该与谁交谈?请联系我:[email protected],@adamgordonbell,Linkedin,我的日历。链接:剧集页面 支持节目 订阅播客 加入通讯</context> <raw_text>0 欢迎来到Co-Recursive。每一集都是一个软件构建的故事。在我们深入今天这个精彩的剧集之前,我需要你的帮助。说真的,我在寻找一个新的开发者关系角色,因为我被Earthly裁员了。
在我在Earthly的期间,我真的磨练了将编码与沟通结合的技能,对吧?我说的是制作教程、进行会议演讲、YouTube视频,所有这些。我专注于开发者的内容在Earthly产生了很大的影响,你知道的,登上了Reddit或Hacker News的首页,并出现在搜索结果中,让人们知道我们正在做的酷事。
是的,所以现在我在寻找一个新的角色,在那里我可以继续发挥我的软件开发能力和沟通能力。
所以我在寻找一个DevRel角色。我知道这有点小众,但如果你知道有这样的角色,那就是我需要你的帮助,对吧?如果你知道任何开发工具公司、开发运维公司、应用安全工具或AI ML地方需要一个能够与工程师沟通、能够与开发者交流的人,那就是我,对吧?我是你解释复杂事物的最佳人选,以一种引人入胜、有趣且对软件开发者有意义的方式。
所以你可以这样帮助我。如果你知道有这样的角色,请告诉我,对吧?我应该与谁交谈?你可以通过[email protected]或在Twitter上@adamgordonbell与我联系。
我会在节目说明中放一个我的LinkedIn链接和一个我的日历链接。如果你想安排一个电话,告诉我一个机会,那就来吧,对吧?我很兴奋能找到一个新的角色,在那里我可以继续做我认为我很擅长的事情。我认为我擅长开发者沟通。嘿,也许你甚至知道一些我还没想到的酷事。如果是这样,请告诉我。我随时欢迎。
但好吧,关于我就够了。如果你能帮我,那就太好了。但现在让我们进入播客。今天,我们将讲述PowerShell的创建故事,这是一种永远改变Windows系统管理的工具。这是一个引人入胜的故事,因为它经历了许多挑战,尤其是在PowerShell构建时,微软的文化显然走向了不同的方向。但可以说脏话吗?
哦,是的,你可以说脏话。你知道,我有高管问我,杰弗里,究竟是哪个该死的Windows部分让你感到困惑,杰弗里?
两次主题演讲前,比尔·盖茨站起来说,看,这是command.exe。这是你最后一次见到它。他输入exit,回车,它就消失了。记得吗?然后这个斯诺弗家伙到底在说什么?他从外部进来,不开一辆该死的保时捷,所以让我们把焦点放在这里。好吧,不开保时捷。他说我们需要做命令行接口。
但在这里,看,我写了这个GUI。我得到了晋升。约翰写了一个GUI。他得到了晋升。那谁写了命令行接口并得到了晋升?那就是杰弗里·斯诺弗。他现在是谷歌的杰出工程师。是的,他是PowerShell的创造者之一,和他的团队一起。今天,他将分享他在大型组织中导航和推动变革的见解。
如何在强烈反对的情况下取得重大成果。这就是技术领导力的本质。如果你不熟悉PowerShell,它是开创性的,不仅影响了其他CLI,还使微软向云计算转型,也许最重要的是,培养了一大批熟练的Windows系统管理员。
事实上,杰弗里在微软的起步是因为在1999年,比尔·盖茨在Windows最相关的高峰期,担心微软根本不理解数据中心,不理解企业市场。这就是我们故事的起点。
所以这是一种执念。嘿,我们如何确保我们不自满,不坐在那里拍自己的背说,嘿,这太棒了。所以是的,我们在PC上取得了巨大的成功,但看看在企业软件市场上花费的所有钱。我们想在这方面表现出色。我们需要做些什么?现在,再次,组织和领导层是不同的。比尔对此是明白的。
所以当组织试图做到这一点时,试图做到这一点,试图做到这一点,这就是他们召开那次著名会议的地方,像是,好吧,我想我们需要一些帮助。让我们请一些更了解问题的人。问题很明确。他们不理解服务器市场。他们的高管在个人计算机领域很有经验,但缺乏企业经验。那时他们找到了杰弗里。
一位我之前见过几次的微软高管,太棒了,戴夫·汤普森,他联系我说,杰弗里,我想和你谈谈。我说,好吧,我也想和你谈谈,戴夫。无论如何,在那次谈话结束时,你知道,我最终与吉姆·阿尔钦进行了最后的面试。再次,问题是,我说,好吧,你会来为我们工作吗?我说,不,你们的软件太糟糕了。他说,杰弗里,我
我知道,我需要帮助。而你就是可以帮助我解决这个问题的人。想想这个,如果你这样做,如果你来这里帮助我解决这个问题,想想你对世界的影响。这就像激光导弹一样击中了我的心理。是的,我来了。
目标很明确,在数据中心建立基于Microsoft NT的操作系统,并超越Unix供应商,如Sun、IBM和HP。我们该如何做到这一点?答案是,我们以更低的成本做同样的事情,对吧?相同的能力,成本更低。首先,我们有一个内在的价格优势,因为我们使用Intel。
而大多数Unix供应商则将其作为销售专有硬件的机制。因此,我们有Intel,但我们还有这样一个开放的硬件生态系统。这给了我们结构上的优势。所以现在我们的软件只需足够好,boom,我们就赢了。
但软件并不够好,尤其是在管理许多服务器时。你必须物理地点击鼠标并在每台机器上配置东西。每个业务所需的设置可能会有所不同。银行与工业控制过程不同。科学实验室又不同。每个人都不同。因此,基本上,如果场景不起作用,那么你该怎么办?答案是IBM专业服务或iBank。
亚瑟·安德森或,系统集成商,对吧?突然间我说,我的硬件成本10,我的软件成本2,然后我的系统集成商成本40,对吧?
等一下,在这个方程中,天哪,我们又回到了这些家伙身边。所以关键是你不能有系统集成商。如果你有系统集成商,整个价格方程就会崩溃,无法运作。然后他们获得所有价值,他们也拥有客户。因此,无论如何,你必须摆脱系统集成商。所以答案是,内部系统集成,对吧?这就是
Unix模型。这些Unix家伙不会去雇佣IBM专业服务。他们自己在做,对吧?因为他们是程序员管理员。所以他说,我们必须这样做。我们必须培养自己的专业管理员阶层,能够做的不仅仅是点击下一步。他们成为我们的系统集成商。他们的成本不会像IBM那样高。这是一个前期的事情。这是一个薪水的问题。然后他们可以成为英雄。
那么我们该如何做到这一点?答案当然是Unix组合模型,对吧?拥有一个小工具箱,这样这些人就可以将它们组合在一起以解决独特的问题,自动化,然后去解决下一个,下一个,下一个。
这个计划是杰弗里所称的成功的合理理论。这不是很可能,对吧?但这是合理的。有一条路径,这可能会奏效。因此,杰弗里加入了微软的Windows Server团队,以帮助实现这个使命。
我字面上传真了我的接受信,20分钟后,我接到了戴夫的电话。我想,哦,哇。看着传真机,这真快。不,这不是。他打电话给我说,嘿,杰弗里,提醒一下,已经进行了重组,你不会再向我汇报工作。你将向另一个人汇报。
什么?哦不,我已经传真给他我的接受信,并在我的电子邮件中按下了发送,告诉我的老板再见。所以我想,哦,天哪。但想法是,他们,他负责Windows Server,而他们正在将Windows Server中的管理技术与一些管理产品结合在一起。所以这将是一个管理部门。
所以他说,你将成为这个管理部门的首席架构师。我说,这算是好事吗?他说,是的,这真是好事。我想这是戴夫唯一一次对我撒谎。这管理部门,对吧?他们全力以赴让Windows更易于管理。所以这仍然是他所签署的内容。但问题是,这个小组由那些通过个人计算机的视角取得成功的人组成。
现在,他们有小型企业服务器,对吧?你知道,一个管理员在他的服务器上,对吧?男孩和他的狗。你有一台服务器,你去那里,所有这些感觉,你知道,你走上去,有一个鼠标,有这个小屏幕,像快乐的日子,点击,点击,下一步,下一步,下一步。他们在这方面非常成功,对吧?所以他们再次认为,嘿,这就是做事的方式。这都是好事。而我进来时说,好吧,但...
对于企业来说,我们将有数据中心,这将是庞大的。
你不能指望人们走到每台服务器前并在数据中心中登录。他们说,不,不,我们已经解决了这个问题。我说,好吧,我不知道。你们是如何解决这个问题的?远程桌面。等一下,但它仍然是,你连接到其中一台机器,对吧?所以是的,你连接到它。就像,不,这行不通。这是一个服务器。另一个例子是,有人正在提供服务。我说,好吧,告诉我你为服务器提供的服务。然后他们说,blah blah。我说,好吧,但你们是如何启动它的?然后他们
他们说,你知道,你从命令行启动。我说,好吧,但用户将如何做到这一点?他们说,哦,他们就是这样做的。我说,等一下,所以你是说每次他们启动系统时,都必须有人登录,输入命令行来启动你的进程?他们说,是的。好吧,这行不通。所以,你知道,整个感觉都是错的。
微软团队认为杰弗里过时了,对吧?他在讨论Unix和大型机供应商如何解决问题,但现代微软的方式是为每个问题提供用户界面。那么为什么不这样做呢?答案是这不是模型,对吧?这是一个工具包的方法。这是小工具的方法,对吧?你有一个小工具箱,然后随着独特问题的出现,
管理员将以不同的方式组合这些工具来解决那个新问题,然后它就消失了,然后你迭代,迭代,迭代。因此,他们的心态是,好吧,不,这主意不好,因为这需要一个聪明的管理员去做某事。相反,告诉我们场景是什么。我们会把它放入我们的队列。我们会花几年的时间来开发它。然后我们将其作为新产品发布。
然后如果他们采用了新产品,问题就解决了。就像,但在你销售那个产品后,场景就改变了。所以我们再告诉我们,下一版本将包括它。就像,你根本不明白。
杰弗里的初步解决方案是使用Windows服务为Unix。这是你可以下载的东西,添加到Windows中,并获得一个Unix shell,你将拥有awk和grep以及其他任何东西。他的理论是,一个熟练的管理员可以学习这些工具,然后用它们来管理服务器。
然后,结果是,没有解决任何问题。在这里,我开始理解你所处的位置与你想要到达的位置之间的真正差异。Unix和Windows之间存在核心架构差异。Unix,一切都是文件导向的操作系统,好吗?所以一切,如果你可以操作一个文件并重新启动进程,你就可以管理一切,对吧?这就是为什么Occrep说那些是管理工具,因为它们操作文件,好吗?
所以当我说,好吧,太好了,拿awk、grep、sed和一个shell,把它放在Windows上,快乐的日子,对吧?不,因为Windows不是一个文件导向的操作系统。Windows中几乎没有文件。相反,一切都在API后面,对吧?所以awk无法对注册表工作。Sed无法对Active Directory工作。Grep无法对WMI工作。
Windows完全是调用API,然后你得到结构化数据的返回。所以那些东西都不起作用。唯一接近解决方案的是WMI,Windows管理工具。它允许一些管理任务,但使用率很低。杰弗里的团队将此视为一个机会。他们可以开发命令行工具来管理一切,用户设置、网络配置、应用程序安装,全部使用这个WMI。
我记得我在那里的会议,我终于说服了我的高管,是的,这就是我们必须做的。然后她说,好吧,我明白了。我完全明白。哪个10?我说,哪个10什么?
她说,好吧,我们应该做哪个10个命令行?我说,我们需要做成千上万。她说,是的,是的,是的。但我们可能只会在这个版本中做到10个。那么我们应该做哪个10个?我想,哦,我的天,我们完蛋了。Windows中真的有成千上万的API吗?这是Windows 2000和Windows XP吗?是的,所以是XP及之后的版本。是的。是的。我从耳朵里抽出的那个数字。但可能是。你知道,这取决于你如何定义命令。是的。你需要很多命令。
专注于WMI中的对象。这就是为什么你可能需要成千上万的命令。好吧,接下来的步骤是,好吧,嘿,我需要超过10个。我能够获得资金来雇佣合同工程师来做这个。现有的工程师们说,命令行对我来说太低级了。你知道,你在谈论这些废话,但没有人关心。你错了。我不想浪费我的职业生涯,花时间在这些废话上。但杰弗里仍然在他心中保持着这个愿景。
这就是他来到微软的原因。使系统管理员能够在数据中心中脚本化和管理数百台无头Windows服务器。而Windows 2000刚刚发布,所以有机会将一些这些命令集成到Windows XP中。
他们说,是的,但编码窗口是10周。10周?去你妈的。你在说什么?10周?你能在10周内做什么?哦,我们可以在10周内做很多事情。我不这么认为。显然,我误解了什么。我得等到下一个机会窗口才能弄清楚事情并做点什么。结果,当他们说,哦,我们的编码窗口是10周时,他们所做的只是写代码10周。一些代码可能是...
函数,注释,填充这个函数,检查它。然后,所以你有10周的时间。然后在这10周后,什么都不工作,什么都不工作。然后他们花了几年的时间来使其工作。像,什么鬼?是的。为什么他们不检查一个函数的存根?像,什么...哦,因为在10周后,你不能做任何新东西,但你不能修复bug。bug是,不工作。我的天,这有多疯狂?
所以杰弗里的团队支付承包商编写这些使用WMI的命令行接口。他们成功实现了70个操作,但实际上这几乎没有满足管理Windows服务器的需求。这是一个开始,对吧?所以他们决定寻求更多资金并继续这项工作。
所以现在让我们引入微软的另一个奇怪方面。没有测试组织的签字,什么都不能出门。好的,太好了。我会告诉你,有令人难以置信的,成堆的,成堆的优秀功能在微软的垃圾箱中,因为他们开发了这些东西,却没有测试组织的带宽来签字。
我在让他们签字我完成的70个命令时遇到了一些问题,但我得到了这个,对吧?因为我们在这上面花了很多钱。就像,你会找到一种方法来他妈的签字。我想,好吧,但如果我再这样做,这将是一个问题。所以我说,嘿,想想HTML,对吧?你测试浏览器,但你没有测试组织拥有测试浏览器。他们不会测试每个HTML页面,对吧?
这很聪明。与其为每个命令编写代码,你知道,你有一个设置命令的格式,用XML或其他配置格式描述每个命令的工作方式,然后你制作这个通用命令生成器。组织的技巧是说,嘿,任何特定命令的配置只是元数据。无需测试它们,只需测试工具。然后,bam,测试组织的瓶颈和流程被绕过了。
人们反对我这样做。像,这是个愚蠢的主意。你知道,这将花费很长时间。没有人,他们就是看不到这一点。就像,好吧。这是一个生活教训。每隔一段时间,你只需要
知道何时成为一个混蛋。所以这是其中一个时刻,对吧?如果你总是一个混蛋,你永远不会走得太远。但如果你从不成为混蛋,那可能意味着你没有采取足够的勇敢改变,推动一个犹豫不决的组织走向它需要去的地方。所以这绝对是其中一个时刻。他们不想走这条路,但我坚持不懈。就像,不,我们必须这样做。
杰弗里赢得了他基于元数据的解决方案的战斗。在他的圣诞假期中,他勤奋地制作了元数据。他完成了72个命令。
我想,哦,我的天,你知道,我刚刚花了大约400万美元和很长时间来获得这70个命令。我花了,我忘了多少钱。大约60000美元来获得这个引擎。然后我花了我的圣诞假期,得到了比他们更多的命令。就像,哇,这是,这是金子。这是好东西。然后我说,嘿,你知道吗?那个引擎缺少一些功能。我可以获得更多资金来改进它吗?他们说,是的。
是的,可以。所以我们这样做了,我们添加了一堆功能,比如过滤、格式化等等。在这里,魔法发生了。我们将其添加到引擎中,所有72个命令都得到了改善。就像,哦,这是金子。
这是金子。我发现的是,嘿,凭借我的架构,我有一个基础投资。然后编写这些东西的增量成本真的非常小。它真的很平坦。添加新功能的增量成本。我可以投资于引擎,价值就会上升。功能性也会提高。所以我获得了更好的经济效益。我获得了一致性。我获得了统一性。我的意思是,赢,赢,赢。
现在这些命令不是PowerShell,对吧?这是WMIC,一个早期的解决方案。但如果你熟悉PowerShell,这可能看起来很熟悉,对吧?它是通用的,它是数据驱动的,事情正在结合在一起。但仍然,获得Windows中所有内容的覆盖是一个问题。在这一点上,比尔·盖茨和.NET进入了画面。
比尔是个有趣的人,在我看来,他更像是一个商业人士,而不是技术人士。技术上,他有意见等等。但在商业方面,这家伙是个天才。所以这里的挑战是。我们已经发布了XP。XP是一个优秀的操作系统。优秀的操作系统,对吧?我们摆脱了那些糟糕的旧手工内核,引入了戴夫·卡特勒,操作系统之神。
我们现在有了NT内核,供所有人使用。所以我们有了这个令人惊叹的操作系统,但我们无法让任何人使用它。他们都停留在Windows 98上。Windows 98显然不适合目的,而我们无法让人们从中转移到XP。比尔发现,如果人们不会因为像XP这样的好东西而离开Windows 98,那么一旦他们上了XP,我们将如何让他们升级?是的。
所以他意识到他有一个严重的商业问题。因此他说,这就是我们将解决这个商业问题的方法。我们将在沙滩上划一条线,我们将工程化一个Windows 95时刻,对吧?一个Windows 95时刻,当世界发生变化。它是Windows 95之前的世界,然后是Windows 95之后的世界。这个新时刻将被称为Longhorn 95。
它将有一种新的开发代码的方式.net。它将有一个新的图形模型,WPF。它有一个新的通信模型,WCF。它将有一个新的存储模型。只是一种全新的方式,你知道,完全的代际转变。没有人会被允许投资于任何不是这个的东西。所以我将工程化这个时刻,改变行业。
这实际上是一个聪明的想法。没成功,但聪明的想法。现在,比尔是个商业天才,是的。但到这个时候,杰弗里也知道比尔是自然的力量。比尔因其比尔·G评审而闻名,执行官们会涌入一个会议室,向他汇报各种项目的状态。
所以我记得有一次,情况糟糕透顶。情况糟糕透顶。我们一直在打击,一直在打击。然后这一次,我们将有三个主题。第一个家伙,他将来做的正是比尔在上次会议上告诉他不要做的事情。第二个家伙进来,自上次比尔会议以来没有取得任何进展。就像,哦,我的天,我们要被杀了。
然后第三个家伙有一个新的主题,谈论诊断。就像,好吧,那实际上是一些相当不错的东西。所以我们在良好的状态下。无论如何,我们的高管那天缺席。她生病了或什么的。所以我们进去,就像,嘿,只有我们。这将是糟糕的。第一个家伙发言,那个做了比尔告诉他不要做的事情的人。比尔笑容满面,像,什么鬼,这很奇怪。
第二个家伙,事情开始变得糟糕。准备迎接冲击。这个家伙会受到惩罚。经过一番讲述,比尔微笑。哦,这太棒了。太棒了。取得了很大的进展。所有这些。我在想,哦,你知道吗?
他讨厌我们的高管。这就是原因。结果并不是这样。发生的事情是,在那次会议之前的早晨,他作为其他工作的部分,获得了一堆关于疟疾治疗的专利。因此,他对此感到非常高兴。无论如何,我们不知道这一点。所以我们只是在想,什么鬼?
然后轮到杰弗里。他在为一个缺席的人介绍诊断的变化。这不是他的领域,但所涵盖的变化对他来说很有意义。我开始演示。像第一张幻灯片,比尔的脸色变化,就像一顿糟糕的墨西哥餐刚刚击中了他的肠道。过了几分钟,他就失控了,对吧?他在对我大喊。你搞砸了他们。你搞砸了他们。你...
去你妈的,喷。 我不是在开玩笑。喷溅的东西飞过会议室的桌子,落在我的眼镜上,他在说,你搞砸了他们。我完全不知道他在说什么,但他太生气了,就像,哇,哇,什么?另一边的高管说,比尔,比尔,比尔,杰弗里没有搞砸那些人。是我搞砸了那些人。我想,发生了什么鬼?所以我只是继续尝试继续进行。发生的事情是,
<context>故事:杰弗里·斯诺弗与 PowerShell 的诞生 如果你不得不与公司的文化作斗争,以实现一个革命性的工具,你会怎么做?认识杰弗里·斯诺弗,微软的架构师,他是 PowerShell 的背后推手,这是一种改变了 Windows 系统管理的命令工具。最初遭到怀疑,斯诺弗的想法遭到了一个偏爱图形界面的公司的抵制。斯诺弗的旅程始于一个简单的使命:让 Windows 像 UNIX 系统一样可通过命令行管理。尽管面临反对并经历公司重组,他的坚持得到了回报。本集探讨了斯诺弗不懈的动力和清晰的愿景如何克服重重障碍,最终导致了这一现代企业环境中不可或缺的工具。倾听一个人的决心如何挑战现状。帮助亚当找到他的下一个角色 我正在寻找一个新的开发者关系角色。如果你知道有任何公司需要一个能够与工程师沟通、能够与开发者交流的人,那就是我。我是你解释复杂事物的最佳人选,以一种引人入胜、有趣且对软件开发者有意义的方式。如果你知道有这样的角色,请告诉我。我应该与谁交谈?请联系:[email protected],@adamgordonbell,Linkedin,我的日历。链接:剧集页面 支持节目 订阅播客 加入通讯</context> <raw_text>0 他过去对诊断非常兴奋,有人说服他,哦,诊断的关键在于这些贝叶斯网络,等等。所以他们有这些东西,这些贝叶斯故障排除工具,并将其打包在 Windows 中。比尔对此非常喜欢,对吧?人工智能。他喜欢这些东西。问题是,这些东西并不好用。即使将它们翻译成 Windows 支持的各种语言也要花费很多钱。
因此,决定停止发布它们。比尔认为,哦,你们搞砸了我最喜欢的贝叶斯网络诊断团队。所以这就是他对我大喊大叫的原因。我想,好吧,我们能否超越这一点,谈谈这个?答案是否定的,但他没有说不。因此,我觉得这是我的责任。就像,嘿,我得对权力说真话。所以让我来分解一下。砰,砰,砰,砰,砰。打得我一无是处。人们都说,哦,我的天,你就像个疯狂的摇摆玩具。
他会把你打倒。你只需再站起来。他说,我们在寻找一个可以扔掉的毛巾。情况糟糕透了。确实如此。会议结束时,情况并不好。我跑出会议室,跑到男厕,因为我觉得我要呕吐。我在马桶上悬停了一段时间。情况很糟糕。真的很糟糕。不是开玩笑。
所以杰弗里通过了那次艰难的评审,但他从比尔·G的其他会议中意识到,比尔真的在推动每个人朝着 .NET 的方向发展,旨在塑造那个特定的结果。
因为那时他在不断地对我们施压,.NET,.NET,.NET。我想,伙计,这根本帮不了我。好吧,让我们看看他在说什么。所以我开始说,啊,这可以帮助我。比尔会让每个人给我支持,因为我无法让任何人给我这个 WMI 的支持,因为我没有生成那个支持。
循环中每个人都说,哦,我迫不及待想写一个 WMI 提供程序。我从中获得了很多价值。所以在那方面没有得到支持,但他会为我争取 .NET 的支持。因此我所要做的就是在其上编写实用程序。这就是我走上这条道路的方式。 .NET 是利用比尔的愤怒来为你获取杠杆。没错。比尔霸凌木偶。这一 .NET 的洞察让杰弗里有了一个更强的成功理论。
但当然,在他试图执行这一点时,事情不会静止,因为与此同时,他的组织领导层正在努力确定优先事项。
Windows Server 不断说,嘿,我需要你做 X、Y 和 Z。我愿意与你合作,我理解你在做什么,但我需要以下内容。他们没有从组织中获得他们所需的东西。高管们说,不,我要做这个。我不想合作。然后有一天,她醒来,发现她的一半组织消失了,转移到了 Windows Server。因此,旧的 Remain 进入了危机。
功能失调,等等。因此,由于这个原因,由于我的角色,我一直在这个角色中,像是,好的,弄清楚产品,等等。这实际上停止了,停止了召开员工会议。没有全员会议。没有消息。我的意思是,完全陷入了功能失调。就像,哦,天哪,我该怎么办?我该怎么办?这就像,好的,这不会持续太久,对吧?这里必须发生一些变化,但我无事可做。
处理重组有很多方法。一种选择可能是重新与 Windows Server 团队建立联系,尝试专注于帮助他们理解数据中心和企业的更广泛目标。但尽管他的组织几乎消失,杰弗里仍然坚持自己的计划。它仍然是可行的,他对其潜力感到兴奋。但他如何能让它继续前进?
结果发现,另一个组织正在制作一个 shell。因此我说,嘿,你们,让我告诉你们如何正确地做一个 shell,对吧?你们应该这样做。他们说,我不知道你在说什么。我们只是要将 K shell 移植过去。我说,是的,但我们应该做得更好。因为你们会遇到我在第一次做的时候遇到的问题,你们会有一个 shell,然后没有任何东西会与之对话。因此你们无法推动事情向前发展。因此我试图解释,试图解释。他们没有明白。
所以尽管我尽力解释这些想法,他们还是没有明白。我说,你知道吗,去吧。我会把自己锁在一个房间里,然后制作出 PowerShell 的原型。因此我基本上制作了一个 10,000 行的演示原型,包含了 PowerShell 的所有核心架构原则。我邀请他们回来。我说,让我给你们展示一些东西。我能够向他们展示。他们说,但这是什么?我给他们展示了。他们说,那是什么?我给他们展示了。我说,这是什么?我给他们展示了。他们的眼睛变得很大。他们说,
这个,这个,这个。我说,好吧,太好了,去做这个。然后最终他们会去做这个,我帮助他们获得资金。然后我意识到,伙计,这可能是我一生中最好的主意。我应该去做这个。然而,让自己参与这个项目并不容易。就像,嘿,杰弗里,等一下。我们雇你作为这个行业专家,
你是我们产品和服务的首席架构师,团队人数从 700 到 1200 人不等。现在你想去做一个只有几个人的团队的事情。我说,是的,但我们需要更多的资金。我说,好吧,但这是几个人,这没关系。这是一个命令行界面。我说,但这很重要。我想,
这是一个命令行界面。我说,好吧,我知道我想和这个一起工作。基本上答案是,好吧,我们会让你在这个项目上工作,但你不能保留那个职位。我们会把那个职位拿走。因此,是的,我被降职了。实际上这真的很痛苦。所以我没有告诉我的朋友。我没有告诉我的家人。这真的太痛苦了。显然,我必须告诉我的妻子,因为这对我们的经济影响很大。
因为我专注于对世界产生影响,这比任何头衔、任何金钱等都要有价值。我说,嘿,我认为我可以用这个改变世界。好吧,我被降职了。这真糟糕。可能会让我损失很多钱。这真糟糕。但如果我能做到这一点并将其放入 Windows,伙计,我可以影响数百万人的生活。
杰弗里的新团队将他们的项目命名为 Monad,由于缺乏人员,他们将部分工作外包给印度。因此,为了使每个人与项目的愿景和这一可行的成功路径保持一致,杰弗里创建了 Monad 宣言。尽管与印度团队的合作最终解散,但这份文件成为了项目的基石。它基本上以非常清晰的概念阐明了论点,比如,嘿,问题是什么?
传统的方法是什么?我们的新方法是什么?为什么这有价值?它与其他事物有什么不同?最后,我有了这个具体的杰弗里·摩尔市场相关性声明,我发现这非常难以做到。但一旦你有了它,它就提供了关于你是什么、什么是重要的以及你必须做什么的极大清晰度。
实现和在哪里可以不实现的地方。它基本上采用了这样的格式:对于需要管理 Windows Server 的用户,PowerShell 提供了一个全面、一致、可组合的管理解决方案。与 Command.exe 不同,PowerShell 提供了一个通用解析器。PowerShell 提供了一致的格式。PowerShell 提供了一个管道,等等,更多细节等等。与 Unix shell 不同,PowerShell,呃,呃,呃,呃,呃,
然后对于用户、提供者、开发团队。杰弗里所做的一件事是列出这个项目的所有利益相关者以及它将如何使他们受益。因为整个事情有一个巨大的自举问题。
你知道,在微软,每个人都忙得不可开交,他们有 10 个工作,他们得决定哪 9 个工作会失败而不被解雇,对吧?而命令行界面是一个不做就不会被解雇,而做了也不会得到晋升的事情。所以就像,好的,但我的成功依赖于所有这些团队给我支持。那该如何运作?所以我必须阐明这一点。
我会敲他们的门,要求他们提供只有他们才能编写的代码。
只有那段代码。我提供所有其他代码。我提供格式。我提供排序。我提供过滤。我提供解析器。我提供远程访问。我提供,你知道,提升权限。我提供所有这些。你不需要做所有这些,你只需要告诉我如何操作你的对象。好的。然后你不必测试所有这些。像我测试所有这些。
有了 MoDev 宣言作为他清晰阐述的成功理论,杰弗里现在只需要让它发生。说服产品团队至关重要,因此他与 Active Directory 团队会面,试图赢得他们的支持。
敲开人们的门。他们说,你知道,你是我可以失败而不做的九个人之一。就像,是的,但拜托。在那时,你有一点个人信誉,你可以让人们尝试一些东西。就像,你能不能让一些人做这个?因为我认为你会发现这很简单。你知道,让人们花几周时间在上面。我试着记得是谁和谁在一起,但我们让他们投资了几周的某些工作。我们与他们合作,他们能够开发出几个命令。
然后他们有用户组,持续与用户交流,等等。他们向用户展示了这个,他们得到了如此强烈的反应,以至于他们说,哦,好吧。然后客户的反应是,哦,我的天,我的工程师告诉我这很好。我们应该这样做。所以让我们去做。
所以现在一个理性的产品负责人看着这个说,好的,这是个好交易。让我们完成这项工作。我喜欢它花费的少,我也喜欢我客户的反应。所以让我们去做。然后他们帮助获得下一个,这帮助获得下一个。此时,PowerShell 的能力正在扩展。尽管仍然有一个大坎坷在前,但 Shell 团队非常忙于构建。
我们会在某人的办公室里,围着白板,像是头脑风暴。我们是一群人,就像画画,讨论这个怎么样?总是挑战自己,像是要大干一场,不要追求简单的解决方案。更大的答案是什么?当某人做了某件事,大家都冲到他们的办公室去看看他们刚刚做了什么。我们意识到,哦,是的,这很熟悉。计算曾经是有趣的。
然后它似乎不再有趣。但这又变得有趣了。当我想到这一点时,我意识到,鼠标是反社会的。GUI 是反社会的。那么这意味着什么?你有一个问题要解决,你用 GUI 来解决它。你得到了什么?问题解决了。
但当你在脚本环境中用命令行界面解决它时,你就有了一个工件。突然间,这个工件可以与某人共享。顺便说一下,你的做法可以显示聪明才智。我从未见过任何人以聪明的方式使用 GUI。根本没有聪明之处。没有像,哦,我的天,你应该看看亚当点击鼠标的方式。哦,我的天,伙计们,快来看看。亚当要点击按钮。哦,我的天,太神奇了。这根本不会发生。
但通过脚本,你在使用一种语言,对吧?你在交流。
就像,哦,我的天,你看到布鲁斯做了什么吗?太棒了。这个家伙真是个天才。然后,嘿,把那个给我。我会偷那个技巧并应用到我的代码中。或者我有了这个工件,我发布它,人们在使用它。人们心存感激。他们欠我一杯啤酒,对吧?或者他们会回来问我,嘿,杰弗里,你为什么这样做?你为什么不那样做?就像,哦,我的天,那是更好的做法。谢谢。
所以这是一个社交环境。无论如何,这确实是一个时刻,像,伙计,我们玩得很开心。多年来都没有这样了。对杰弗里来说,这让降职的感觉变得值得,对吧?它让他感到这里有潜在的影响。
对许多微软员工来说,保时捷、晋升或总薪酬包是重要的奖励。但杰弗里衡量事情的方式不同。艺术在于,我是一个存在主义者。好吧,那意味着什么?这意味着我不相信死后的生活。我不相信任何宏大的叙事。我不相信任何这些。我相信生活是你决定如何去做的。这导致了很多,当我经历这一切时,
抛弃舒适的信念,接受这一点。这是一个非常困难的时期。但之后,我说,好吧,那么我想要从中得到什么?这实际上归结为,我有一定的时间,我希望世界因为我的存在而有所不同,甚至更好。就这么简单。所以这真的关乎影响和重要性。
这让我说,是的,我想做这个。带着这种信念,PowerShell 看起来可能会实现。毕竟,它与这个伟大的新 .NET 操作系统倡议 Longhorn 相关联。因此,Boof-a-Rama 开始了。
对。一群工程师在如何以及在哪里采用 .NET 上做出糟糕的决定。现实是,许多这些技术,比如,如果你在五到七年的时间内完成,那是个绝妙的主意。他们却说,不,不,我们只知道。
你设定一个截止日期,我们的工程师会迎接挑战。他们会在这里熬夜,周末加班。他们会离婚。但这没关系,他们会赚到足够的钱,可以负担得起一个新家庭。我不是在开玩笑。但你知道,人们会迎接挑战。当他们告诉我们这行不通时,我们会说,让它工作。他们会做到,因为他们确实是一个非常了不起的团队,直到他们不是。这次没有成功。
他们无法强迫人们。他们无法强迫现实。他们无法让它工作。以记事本为例。它是本地代码,仅使用大约 15 KB 的内存。好吧,有人想出了一个主意,说,嘿,你知道吗?确保每个人都在使用 .NET 的一种方法是,我将使用它重写常用控件对话框。你知道,使用 .NET 和 WCF。因此,突然间,我有了这个本地代码的
记事本。我打开它,瞬间启动。一切都很快,很快。然后我说另存为,对话框在一分钟半后才出现。我从 15 KB 的工作集变成了 15 MB 的工作集。然后我可以保存我的文件。
糟糕的主意。糟糕的主意。其他人则在寻找,嘿,我如何将 .NET 引入内核?我想到了某个时刻。我不记得细节,但可能已经有七个月的夜间构建没有工作。因此,曾经有过这样的情况,好的,没有新代码,只有修复构建和让事情正常工作的代码。然后那也没有成功。因此,他们基本上不得不重置。因此,Windows 团队决定 .NET 是问题所在,或许他们只是咬下了超过他们能咀嚼的东西。
但 PowerShell 在这个重置中被从 Windows 中剔除,就像所有的 .NET 代码一样。现在杰弗里必须找到重新进入的方法。因此,这开始了一个多年的过程。
简直是地狱。当他们开始真正攻击命令行界面,任何与 .NET 有关的东西。因此,他们就像定期来找我们,试图让我们被取消。首先,比尔·盖茨总是明白。比尔·盖茨明白。这对我没有任何帮助。对我一点帮助都没有,对吧?然后我有 Windows Server 的负责人。他明白。他有关键时刻,对吧?有关键时刻。
但日常事务,你知道,这感觉非常敌对,非常不欢迎。很多人向我们投掷石头,而我们只是想躲在被子下完成我们的工作。
实际构建的过程实际上进行得非常顺利。我的意思是,这真是令人愉快。我们会冲进彼此的办公室,像,嘿,你看到布鲁斯刚刚做了什么吗?我们都冲进布鲁斯的办公室,看到他做的事情。我们的脑袋会爆炸,像,哦,我的天,太棒了。哦,嘿,我听说吉姆在做什么。我们都冲进吉姆的办公室,他做了一些事情。你会看到它逐渐成型。它有一种现实感,让你说,嘿,所有这些人都在扔石头。他们
不知道他们在说什么。他们错了。这太棒了。我们要把这个东西发出去。我与 Exchange 合作,他们是一个重要客户。因此,当他们召开会议时,像,好的,这次我们要杀了他们。我只需把我的 Exchange 人员带到那里,他们就坐在会议的角落里。好的,所以我们已经达成一致。我们需要杀掉这个 Monad 的事情。Exchange 的人会竖起耳朵说,不,不。
我有一个数十亿美元的业务。我在押注这个。我需要这个。你不能杀掉它。
尽管项目幸存下来,获得了资金,但它仍然不是 Windows 的一部分。它需要重新进入的方法。Winarch,Winarch 是 Windows 架构师,他们聚在一起说,好的,这里有七件事情你必须做才能将 .NET 引入 Windows。这些都是一些令人难以置信的严厉要求,其中一些基于好的事情,但它们的措辞非常明确,像,不,我们要把 .NET 排除在外。
所以再次,大家看着那个东西,除了两个人,斯科特·古斯里和我,其他人都逃跑了。他作弊了。他在 Windows 之外发布了。我试图弄清楚如何重新进入。那么进入 Windows 的过程是什么?就像,是否... 是的,你必须有一个正式的设计变更流程,对吧?我说,他们会不遗余力地寻找我们论点中的任何弱点。因此,我们不能是绿色的。我们必须比绿色更绿色。
所以我们为所有事情都这样做,最后整理好了我们的故事,我们说,好的,我们已经发送了请求。大约 20 分钟后,执行官发回邮件说,撤回此请求,Windows 负责人。撤回此请求。因此,我的项目经理,杰弗里,过来。现在看看我刚刚从布莱恩那里收到的邮件。哦,我的天,我该怎么办?
他说,我不知道。他说,我知道我该怎么做。他的回应是,他说,不。他说,你拒绝它。因此他说,好的,没问题,我拒绝它。正式拒绝触发了审查流程。这个流程涉及到 Windows Server 组织,杰弗里原本应该为其工作的团队。Windows Server 的负责人拨打了电话,表示这对他的业务至关重要。
因此,他是一个支持者,他基本上说,嘿,这对我的业务至关重要。我拥有这个决定。如果它符合要求,它就会被纳入。而且它确实符合所有要求。因此,执行官之间发生了一场激烈的斗争。实际上很麻烦。但最终,Windows Server 的执行官胜出,我们能够重新进入。因此,他们发布了它。PowerShell 1 作为 Windows Vista 的一部分发布。
但对杰弗里和他的团队来说,工作并没有完成。甚至在它发布到版本 1 之前,我的经理们就像,嘿,你接下来要做什么?就像,我要发布这个。但在你发布之后,你要做什么?我说,嗯,这还没完成。我得做下一个版本。就像,不,不,你是个高级员工。你需要做其他事情。否则,你会被固定在一个位置。就像,不,我要做这个。然后就像,这会伤害你的职业生涯。就像,随便。
然后这在版本二、版本三和版本四中都发生了。每个版本、每个发布都朝着杰弗里在他的宣言中阐明的成功服务器管理的最终目标执行。版本一,我们走到这一步。版本二,我们填补了这些东西。版本三,这些东西。版本四基本上完成了愿景。因此,你知道,这花了那么长时间。所以这就是我个人的经历。
而且再次被警告,嘿,这会影响你的财务。这会影响你的职业生涯,等等。我想,是的,我不在乎。我只是想做这个,伙计。这是正确的事情。最终,这对我来说还不错。这种持续的专注得到了回报。对于那些投资于 PowerShell 的人来说,他们的技能随着时间的推移变得更加有价值。与频繁的破坏性变化相比,核心理念保持一致,每次发布都使他们的技能更有价值。
从大局来看,真正令人着迷的是 PowerShell 如何弥合管理员与编程世界之间的差距。那些从未将自己视为编码者的 Windows 管理员突然开始编写脚本并自动化复杂任务。PowerShell 创建了一个帮助彼此的整个社区。服务器管理员形成了 PowerShell 用户组。人们互相分享脚本。他们在线回答问题。会议也开始聚集。
是的,他们成为了英雄。他们被邀请在会议上发言。许多人因此成为了专业演讲者。这真是太神奇了。有一个女人,她在会议上演讲时非常紧张。她在演讲者房间里喝酒。你在做什么?我无法应对。她上台后表现得非常出色。她太棒了。然后她现在在所有的巡回演讲中,随时都在发表演讲。因此,她成为了一名专业演讲者。
是的,改变了她的职业生涯。对杰弗里来说,PowerShell 的成功确实减轻了他降职的痛苦。但实际上,这项工作的真正影响是,Windows Server 管理发生了变化。这种对 Windows 管理方式的改变实际上使许多事情成为可能。
所以我花了五年时间,但我终于恢复了我的地位,成为了杰出工程师,最终成为了技术研究员。在某个时刻,我去办公室工作,办公室的负责人,我们在吃午餐时,他说,你知道,PowerShell 是微软进入云计算的原因。什么?怎么会这样?
他说,好吧,Office 引领了云的潮流。就像我们在 Azure 之前,领先了很多年。他说,如果没有 PowerShell,我们永远无法进入云。他说,在此之前,当我去配置服务器时,就是点击、点击、点击、点击、点击。你无法多次执行此操作。当你出错时,你无法修复它。因此,拥有脚本使我们能够在出现问题时进行扩展。我们可以
更改脚本。他说,这使我们能够进入云,而 Office 进入云使 Azure 能够进入云。这就是故事。杰弗里,非常感谢你坦诚地分享你的故事。我希望我能很好地呈现它,因为这是一个了不起的故事。我从你身上学到了很多关于成功清晰战略的重要性。
如果你必须与公司的文化抗争,以实现一个革命性工具的诞生,那会怎样?认识杰弗里·斯诺弗,微软的架构师,他是PowerShell的背后推手,这是一种改变了Windows系统管理的命令工具。最初遭遇怀疑,斯诺弗的想法遭到了一个偏爱图形界面的公司的抵制。斯诺弗的旅程始于一个简单的使命:让Windows的命令行管理能力与UNIX系统一样强大。尽管面临阻力并经历公司重组,他的坚持最终得到了回报。本集探讨了斯诺弗不懈的动力和清晰的愿景如何克服重重障碍,最终导致了这一在现代企业环境中至关重要的工具。听听一个人的决心如何挑战现状。 帮助亚当找到他的下一个角色 我正在寻找一个新的开发者关系角色。如果你知道有任何公司需要一个能与工程师沟通、能与开发者交流的人,那就是我。我是你解释复杂事物的最佳人选,以一种引人入胜、有趣且对软件开发者有意义的方式。如果你知道有这样的角色,请告诉我。我应该与谁交谈?请联系我:[email protected],@adamgordonbell,Linkedin,我的日历。 链接:剧集页面 支持节目 订阅播客 加入通讯</context> <raw_text>0 并且需要专注于这些长期目标,尽管每天都会面临挑战。你知道,有时候你必须愿意接受降职或面对批评,以保持对长期奖赏的关注。听众们,是的,杰弗里在Twitter上非常活跃,用户名是jsnover,他现在在谷歌的SRE团队工作,所以请关注他。
如果你有自己的PowerShell故事,或者更相关的是,如果你在推动变革时面临过类似的组织挑战,或者你有故事想要分享,我很想听听。或者让我知道你对这一集的看法。你可以在Twitter上联系我,用户名是Adam Gordon Bell,或者给我发邮件[email protected],或者加入Slack,在那里告诉我,或者其他任何地方。你可以在很多地方找到我。直到下次,非常感谢你的收听。</raw_text>