复杂性正在杀死软件开发者

软件机构Simple Thread的联合创始人Justin Etheredge对基本的和偶然的复杂性进行了有益的区分,他告诉InfoWorld:“基本的是你所工作的商业领域的复杂性,事实上企业是极其复杂的环境,所以他们试图解决的问题本身就很复杂。另一个领域是偶然的:这是我们的工具以及我们为了解决一个问题而在工具上构建的部分所带来的复杂性。”

云原生时代迎来了比以往任何时候都更多的、潜在的偶然复杂性,这导致了开发者和他们的领导之间的矛盾:前者希望利用他们更多地利用工具,后者则希望他们专注于为客户提供价值。

Etheridge说:“鉴于今天对软件开发人员的需求,公司没有手段来推动开发人员走向主要为客户提供价值的思维模式。”让更多的工程师以这种方式思考是一个挑战。

选择的弊端

以音乐流媒体巨头Spotify为例,Spotify产品经理Gary Niemen在2020年的一篇博文中写道:“回顾六年左右的时间,Spotify曾经(现在仍然)致力于以团队的自治来实践敏捷工程的文化。这带来了所有的优势,也带来了复杂的问题,包括一个碎片化的开发者工具生态系统。也就是,找到如何做某事的唯一方法是问你的同事。”

随着Spotify规模的扩大,它发现原本推动其快速增长的方法实际上已经开始失效。它需要进行整合和简化。“那些被证实有效的或推荐的工具应该很容易被找到。该工具的使用方法应该是清晰的。在使用方面,应该有高质量的用户说明。而且,如果用户碰到问题,在哪里获得支持应该是显而易见的,”Niemen写道。

Humanitec的von Grünberg在2021年的一篇博文中写道,一个好的内部开发者平台的关键是,在为希望继续完成手头工作的开发者提供自助服务和抽象出最没有价值的任务之间找到平衡,而不使开发者感到受限。

“拥有黄金路径的想法不是为了限制或扼杀工程师,也不是为了设定标准而设定标准。有了黄金路径,团队就不必重新发明轮子,有更少的决定要做,并且可以将他们的生产力和创造力用于更高的目标”,Spotify产品经理Niemen写道:“他们可以重新开始快速行动”。

问题是,“开发人员喜欢重新发明轮子。没有什么比建造一个更好的捕鼠器更让我满意的了,”顾问Simpson说。但在这个世界上,很多答案就在Stack Overflow上,这是否是对开发者时间的最佳利用p>

微软开发者部门产品副总裁Amanda Silver说:“总会有一些组织试图钳制,而另一些组织则试图赋予开发者权力。核心是开发者速度的概念。我们可以建立系统,让开发者可以写出只有他们能写的代码,而不会分心或有负担地去学习那些对他们来说没有区别的领域。”

旅游技术公司Amadeus成立于1987年,经历了这些技术变革的浪潮,它在大型机上建立了最初的应用程序,在21世纪初转向在开放的Linux平台上构建,现在则主要倾向于用Kubernetes编排调度的容器化应用程序。

Amadeus的基础设施和云计算主管Edouard Hubin告诉InfoWorld:“我们的开发者需要能够在我们提供的核心基础上进行开发,所以这个想法是一种平台方法,我们为他们提供能力。新技术为安全性和稳定性带来了更多的复杂性。当你开放这样一个系统时,你希望有稳定性。数据驱动型应用的兴起对我们来说是一个完全不同层次的复杂性……。它带来了一种编写应用程序和建立反馈循环的新方法。所有这些东西都是新的,并带来了复杂性。”

因此,Hubin希望在他能做到的地方隐藏复杂性,要么通过内部团队设计解决方案,要么在有价值的地方使用托管服务。以数据库为例,Amadeus曾经管理自己的MongoDB实例,但现在使用供应商管理的MongoDB Atlas选项。该公司对管理的Kubernetes也采取了类似的观点。

这并不意味着工程师不会推动新的工具进入生态系统。“有时你必须说不,”Hubin说。“最近,我们有一些人试图引入一个新的数据库。他们说得有道理,但如果标准选项不是很好,对公司来说,控制我们使用的数据库的种类[仍然]总体上更有益。”

每个大型组织都有一个广泛的工程师群体,一些人专注于建立有弹性的系统,并以最快的速度向客户提供功能,而另一些人则拼命地想修补最新的技术。两者都有价值,但需要谨慎管理,Two Sigma的Fournier说。

她说:“你需要的是那些兴奋地审视底层原理并了解精通新事物的人——因为我需要有人来管理裸金属的Kubernetes集群——但我也需要那些兴奋地研究新事物、了解它如何工作、确定它在整个公司的有用之处的同时——以及好的伙伴来做原型并确定是否值得投资来解锁一项新事物。”

供应商如何应对复杂性

如果我们正坐在大简化的悬崖边上,我们是否失去了作为一个软件开发者的本质p>

正如英国传奇赛车手杰基-斯图尔特(Jackie Stewart)所说:“你不一定要成为一名工程师才能成为一名赛车手,但你必须有机械共鸣。”或者说,要成为真正的伟大,你必须对你所操作的机器有所了解。

虽然现代的软件开发人员不能指望对他们建立的复杂的、可扩展的、分布式的系统有充分的机械共鸣,但也应该尽可能多地去了解可以找到一个掌握的元素。

“开发者喜爱秩序的人。我们喜欢了解系统是如何工作的,一直到底层的硬件和我们正在建立的架构。但与此同时,也有许多其他领域,你不一定想深入了解它,”微软的Silver说。

“许多开发人员和他们的团队的任务是确定他们的专业知识在哪里最有价值,在哪里被浪费在重新发明轮子上。”咨询师Simpson说:“我们最好的希望是公司能认识到这个问题,并努力让开发人员摆脱对机器是如何工作的担心。回到构建软件,这是他们最擅长的事情。”

软件开发者从来没有像今天这样有如此多的复杂性和选择,但也从来没有像现在这样多的选择来把它抽象化。这只是归结于你和你的组织在追求你们的目标时能承受多少复杂性。

原文链接:https://www.infoworld.com/article/3639050/complexity-is-killing-software-developers.html

Kubernetes线下实战与CKA培训

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93763 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月26日
下一篇 2021年10月26日

相关推荐