自动化并非自动魔法:为什么更好的软件自动化至关重要

创建自动化文化打破壁垒,激发创新。
169 位读者喜欢这篇文章。
gears and lightbulb to represent innovation

Opensource.com

可以实现很多自动化,这些自动化不是为了取代人类,而是为了取代令人麻木的行为。——Stewart Butterfield

许多组织都在尝试创建自动化文化,并为实现这一目标而努力,或者至少开始尝试创建和维护这种文化。对于任何对自动化感兴趣的人来说,本文对这个话题提出了不同的看法,包括那些在专注于自动化的团队中挣扎的人、尚未完全理解自动化的公司,或者那些没有获得预期投资回报率的团队。

为什么更好的软件自动化至关重要

当软件开发团队最乐于构建软件并为客户带来价值时,他们的生产力最高。HashiCorp 的布道者 Mitch Pronschinske 在“来自 7 种高度成功的软件工程文化的经验”中支持了这一点。他们越能尽力构建他们的软件并看着它变为现实,他们就会越快乐、越高效,最终为客户更快地交付更好的业务价值。开发团队面临的挑战是软件的复杂性不断增加,包括云、多云、私有云、混合云,以及现在的容器和使用 OpenShift、Kubernetes、Docker 和 XC/LXD 的容器编排。交付软件所需的工作量也随之增加。

因为最成功的公司必须是(或成为)软件公司,而且技术和基础设施的演变和变化如此之快,仅仅拥有拼凑而成的流程和自动化已经不够了。我们必须拥有精心设计、复杂的自动化,以便大规模地赋能团队。旧的做事方式——编写脚本并以临时方式将各种东西拼凑在一起——无法扩展。正如许多成功的公司所证明的那样,如果你可以更快地迭代并更快地交付,你就可以更快地占领市场。那些在自动化方面进行大量且有意识投资的公司将有能力更快地行动。

最佳点

公司如何创建一种文化,在这种文化中,创新受到自动化的刺激,跨文化和协作的贡献激发创造力、独创性和新想法?自动化不是消除对人类的需求,而是增加了对人类的需求。

自动化对于不同的公司甚至不同的人可能意味着不同的事物;共同点是能够随意且快速地扩展,从而在组织、团队和部门之间扩展自由和灵活性。

在任何情况下,组织都必须从头开始,认真审视自动化的成功和失败。然后,他们必须审视他们现有的人员以及他们希望雇用的人员。你的后备力量有多深厚?你在创建人才储备方面有多积极主动?公司必须进行创造性思考,而这种创造力可能来自意想不到的地方。技术以光速发展,公司需要一种心态,允许解决方案来自四面八方,并且自动化专家能够适应颠覆甚至混乱。

招聘具有自动化技能的人才

公司应该首先培训他们现有的人员,因为这比解雇他们更容易,然后确保他们正在招聘具有各种领域和/或行业背景的合适人员,包括计算机科学、Linux、网络、系统管理或工程、编程、软件开发、自动化,甚至是非传统的工程领域,如机械工程。自动化专家必须来自传统技术背景,这没有硬性规定。更重要的是他们的集体经验以及他们如何思考和解决问题。他们是否容易指导、友好和协作?他们是否有效地沟通?他们是否从情商的角度厌恶风险?

推荐是寻找具有自动化相关技能的人员的好方法。其他选择包括招收实习生或雇用知识有限但对自动化工作充满热情和渴望的人员,然后对他们进行培训。

自动化不仅仅是用于实现结果的工具;它在很大程度上与执行自动化的人员有关,更重要的是,与他们的思想和执行自动化的能力有关。推动力将来自有创造力、足智多谋和对时间敏感的从业者。那些受渴望自动化一切事物驱动的人,无论他们已经掌握技能还是被教会,都将有意识地将自动化付诸实践。这关乎创造、构建、利用和维护那些不仅能让公司变得更好,而且能改变世界的事物。

自动化培训和教育

自动化不仅仅是一件事或一个人、一个工具或一项技术。它是对你构建或采用的工具的集体理解或完善吗?它是关于应用批判性思维、剖析问题,以及在理解问题和最适合的工具之后,毫不犹豫地进行自动化吗?这一切都是。它关乎拥有影响和说服的能力,因为变革和技术实施始终需要获得支持。

组织必须投资于让自动化专家掌握跟上技术前沿变化速度的技能。最好的方法是投资于人——首先是现有员工,但也通过补充你的才能并创建人才储备,引入没有受到不良自动化实践或过去冲突影响的新鲜血液。

随着自动化专家不断变化以跟上技术的发展,他们接受新技能培训的方式也必须随之改变。我参加过许多平淡的技术培训,结果是我挠头离开,对如何将理论转化为实际应用几乎没有真正的理解。

那么,最佳解决方案是什么?

首先,没有最佳解决方案,但对于组织或团队来说,要接近最佳解决方案,他们必须解决房间里的大象。这意味着什么?这意味着他们必须如实地回答这个问题:“是什么失败阻止了组织或团队达到我们应该达到的目标?” 现有实践是否支持真正的自动化所要求的变革?是否有可以调整的实践?哪些实践需要完全根除?

自动化和最佳实践的执行是在对过去、现在和将来应该发生的事情进行大量思考之后才出现的。谁是自动化的最佳倡导者,谁能够执行自动化卓越的关键高级参数?必须不断评估和微调自动化,使其尽可能接近正确,并尽可能减少错误。

最终,真正的自动化成功需要专家或已经自动化了一段时间的人员的集体努力。在许多情况下,再培训、招聘、战略规划和思考必须几乎同时进行。此外,还需要改进现有实践和新应用(不仅仅是创建新工具)。跳出框框思考并重新审视过去的方法将为维持自动化最佳实践并最大限度地减少错误结果提供更深入的见解。

招聘或培养的技能和专业知识

对于自动化专家来说,最重要的技能和专业知识将是相互交叉的技能和专业知识。例如,自动化、开发和领域技能对于确保交付速度或自动化的效率和有效性非常重要。没有单一的技能需要寻找;合适的候选人需要具备技术技能和软技能的结合,以及理解何时以及如何使用它们(以及何时不使用它们)的内在能力。

自动化专家有能力从广阔的角度思考他们如何应用自动化以及自动化将如何对组织的财务产生影响。需要寻找的一些软技能包括

  • 客户至上的心态
  • 批判性思维
  • 战略性思维
  • 故障排除
  • 毅力
  • 可观察性
  • 热情
  • 协作
  • 领导力技能
  • 创造力
  • 实时问题解决
  • 沟通
  • 分析技能
  • 风险承担

技术技能可能包括以下全部或部分内容

  • 编程或脚本编写技能,如 Bash 脚本或 Python
  • 系统管理或工程
  • CI/CD 工具的应用(例如,Jenkins、VSTS、Octopus Deploy)
  • 云(例如,AWS、Azure、Google Cloud、OpenStack)
  • 人工智能、机器学习、区块链、大数据
  • 存储库,如 Git、Bitbucket、GitHub、GitLab
  • 网络
  • 性能/调优
  • 容器(例如,Docker、OpenShift、LXD)
  • 安全(DevSecOps 演进)
  • Linux
  • 快速转变和学习新技术的技能
  • 基础设施自动化工具

自动化专家应该理解,技术发展迅速,专家也必须如此。例如,曾经有一段时间,基础设施/自动化工程师和系统架构师非常受欢迎。虽然他们仍在被雇用,但情况已经发生了变化,现在站点可靠性工程师、区块链基础设施工程师以及云架构师和工程师很普遍。现在,混沌/直觉工程师、量子计算专家以及量子密钥分发和密码学技能很受欢迎。技术角色的演变要求自动化也进行同样的演变——毫无疑问,自动化已经发生了演变。

转变对于响应和充分自动化以提高效率和准确性是必要的。这将需要对数据和信息进行智能处理,以便提供最佳指导。自动化有时会带来一些忧虑,因此能够冷静客观地看待大局——知道何时自动化以及何时不自动化最符合公司的利益——是自动化专家的关键任务。

构建自动化文化的流程和实践

自动化必须从一个前提开始,即没有自动化,公司将永远无法像其自动化竞争对手那样有效地解决其业务问题。不断思考变革和制定有效执行自动化策略的过程,在积极而非消极响应的文化中会发生得最好。制定最佳流程需要自上而下的方法,即高级管理层给予支持,并通过代理创建围绕自动化共享相同心态的团队。

制定流程以解决组织战略和灵活性、拥抱失败以及扩展技能和教育,是开始构建自动化文化的好地方。解决弱点并制定克服弱点的策略至关重要。此外,制定解决不可避免的阻力的流程将非常有益,包括支持那些想要自动化但无法说服组织中其他人迈出第一步的人。一些组织在自动化方面有伤疤,并且有自己独特的历史。

务必先慢慢来,这可能是一个挑战,因为作为自动化专家,我们习惯于快速行动,并且渴望自动化。从一开始就培养良好的、持久的工程习惯,并设定正确的期望。重要的是要记住你为什么要这样做——不是因为自动化很酷;而是为了它可以为你的业务提供的真实、有形、可衡量的收益。实施自动化最佳实践就像健康的减肥——保持减肥更多的是关于基本原则——吃正确的食物、适量的食物和锻炼——而不是遵循时尚饮食。短期收益远不如长期建立健康习惯重要。自动化是关于具有持久收益的长期成功。

自动化实践更多的是关于改进整个组织的运营,而不是专门从事自动化的团队。真正的自动化文化将需要获得支持,即使是那些不完全理解自动化的人也需要支持。自动化团队需要耐心、能够在团队中灵活运作并且能够适应常量未知数的专家。

与业务领导者就自动化保持持续、高质量的沟通是你目的和战略的重要组成部分。业务领导者需要知道自动化团队专注于为业务交付价值,无论是更好的正常运行时间、更强的安全性,还是更快地响应不断变化的业务需求。制定一个衡量自动化在每个环节是否成功的流程对于证明拥有自动化文化的重要性至关重要。

最后,必须有一个流程来解决出现问题时的失败。这也是与业务领导者就自动化进行强有力沟通的另一个原因。当事情出错(而且肯定会出错)时,自动化团队不会发现自己正在拆除所有这些新工具和流程;他们将致力于修复它们。自动化团队需要从失败中吸取教训,并努力确保他们不会两次遇到相同的问题。每一次失败都将是一个成长的机会。从一开始就让企业认同这个计划将确保从任何失败中吸取教训并为之做好计划。

任何添加自动化的组织,他们都必须手动创建和标准化一个工具,无论是 Chef 还是 Ansible。此外,在某些情况下,复活一个人比重新注入新鲜血液更难。专家必须乐于接受培训和学习新技术,而这可能只能通过新鲜血液来实现。有时人们可能会抵制变革,但随着组织转型,人们也必须这样做。公司对员工负有信托责任,因为他们引入自动化,以确保专家有时间和精力来提升最佳实践或工具的水平。罗马不是一天建成的,自动化也不会是一蹴而就的。

 

当围绕某个工具进行集中化时,请确保你强调满足公司基本需求的基本知识,然后再转向更复杂的东西。你让你的专家实际花费多少时间在自动化上?如果他们只将 20% 的时间花在自动化上,而将 80% 的时间花在其他运营事务上,那么时间就没有花在正确的地方,因为如果他们可以将 80% 的时间用于自动化,那么从长远来看,他们将节省时间和金钱。

 

培训应该更像是一种分层方法。它需要有组织,并且需要有目的和有计划。 组织必须确保他们有合适的培训师或讲师来确保知识转移得以实现。教学或培训是一门科学,如果找一个没有真正掌握这项技能的人,意味着一些自动化专家很可能无法掌握他们应该掌握的知识。这样自动化专家的用户体验至少也是不尽如人意的,并且专家不太可能有效地执行客户的要求。那又怎样?那么你将浪费宝贵的时间、金钱和资源,你又回到了起点,自动化将受到影响。

结论

自动化团队不应试图定义他们未来几十年需要自动化的所有内容。立即开始行动。从小处着手,自动化简单的事情,即使只是编写一些脚本并使用 cron 运行它们,或者专注于自动化故障排除。

创建能够经受时间考验的自动化文化将需要一种快速且全面地实现变革的内在愿望。自动化团队可能需要经常进行更改以满足创新需求,因此企业应在需要时不断评估和调整。

User profile image.
Taz Brown 是思科系统的资深技术 Scrum Master 和敏捷专家,也是与 DevOps 和软件开发团队合作的产品经理。她是一位热衷于写作和演讲的人,在 Scrum、敏捷、数字产品管理、Linux 系统工程、DevOps 解决方案的管理和部署方面拥有多元化的背景。

评论已关闭。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.