QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

软件工程师采用新技术的正确方式

  • 2021-07-01
  • 本文字数:2568 字

    阅读完需:约 8 分钟

软件工程师采用新技术的正确方式

本文最初发布于 telerik.com 网站,经原作者授权由 InfoQ 中文站翻译并分享。


2015 年,我带领一支工程团队为大学生构建了一个 Web 应用程序。由于录取工作已于 5 月结束,因此我们只有 3 个月的时间为每年 8 月的流量暴涨做好准备。


第一年我们只有几千个用户,所以没有人担心扩展问题。我们使用了Angular前端和 MySQL 数据库,在 PHP 中构建了这款应用。


第一年结束时,我们的应用程序架构


当我们准备在第二年将用户规模增加到三倍时,我们开始怀疑现有的应用程序能否良好地扩展。我开始学习所有最新的工具,聘请了一位经验丰富的DevOps工程师,然后制定了一项负载测试计划。


经过两个半月的混乱,研究了Docker、Azure Service Mesh 和其他一些最新工具后,我们意识到无法赶上 8 月的截止日期。我们退后一步,重新考虑了所面对的问题。我开始向一些导师寻求建议,记得那天,其中一位叫我出去,对我说:


“你不需要那么多复杂的工具!”他告诉我。“在系统上再扔一台服务器就行了。”

为什么新技术如此吸引人?


像许多工程师一样,我会抓住机会利用所有最酷的新工具。经过几个月的无谓尝试,我终于意识到解决方案本来很简单,并且我们手头已经有了所需的工具。我们水平扩展了 API,垂直扩展了数据库,这花了大约两周时间。



第二年开始时,我们的应用程序架构


事后看来这显然是正确的选择,但是为什么一开始它就不那么明显呢?为什么甚至颇有经验的软件工程师也会像飞蛾扑火一般被闪亮的新技术所吸引?

新技术承诺解决老问题


管理大量服务器非常困难,一直以来都是一个难题。当我们迁移到云后,这个问题终于变简单了,现在 Kubernetes 承诺可以让这件事情变得更轻松。与所有“烦人的旧东西”相比,新技术有望更快、更高效或更灵活地解决问题。如果你只看那些宣传资料,你可能会认为它们甚至没有任何代价可言。

我们会因为用上了“最新和最棒的技术”而受到关注


我在 2015 年读到的所有文章都在说 Docker 将会有多伟大。他们坚持认为它将在短短几年内取代 VPS。早期采用的公司因此得到了很多正面的报道。我也想要这种关注。

求职者涌向新技术


不幸的是,由 Hacker News 推动的炒作周期使工程师认为他们必须采用最新技术才能跟上时代。对于新手开发人员来说尤其如此。你想不到最近有多少培训班毕业生问我是否在使用新出的 X 或 Y 框架。甚至有人试着劝我将我们的整个关系数据库转移到区块链上。

我们也想变得很酷

“深入其中并对所有事物做现代化改进是很有趣的事情——当然,你可以在此过程中学到很多东西(也许会以牺牲业务为代价)。”——David LeBlanc


我对丰富简历内容没什么兴趣,但我记得那时候我会想:“这将成为一次会议演讲上的精彩故事。”我现在可不敢这么说,因为在 2015 年的早期创业阶段尝试部署 Docker,结果以失败告终的经历,可能是我迄今为止最大的管理败绩。

过早采用新技术的风险


几年前,我发现技术炒作周期是这么一回事:


“炒作周期中,市场先是对某种很棒的新事物有一段时期的夸大宣传,鼓励人们采用——直到技术逐渐真的普及开来,人们才发现新事物并没有广告中所描述的那么神奇。然后这种新事物便会失宠,乃至被完全丢弃或遗忘,直到它的成功所需的知识基础成型为止。”——Dick Dowdell



技术炒作周期


许多工程师在新技术诞生伊始的高峰期(也就是关注和讨论最多的时期)错误地采用了它们。问题在于,不成熟的技术会有全新和未知的故障机制,而现有的解决方案并不会如此。


软件工程团队需要浪费大量时间寻找不那么明显的错误、查找文档里没有的边缘案例并重写代码来适应新技术。这就是六年前我们尝试采用 Docker 时发生的事情。我们没有足够的资源来遍历所有没有文档支持的特性和选项,而且 API 会随着版本升级而不断变化。


就算这些问题并没有令你困扰,但早期采用者仍会承担技术开发公司倒闭的风险。我记得有几个朋友很早就用上了 RethinkDB,但到了开发它的公司于 2016 年关闭时他们大失所望。尽管它后来作为一个社区维护项目又回来了,但让你的应用程序数据库陷入困境从来都不是什么好事情。

技术采用技巧


既然如此,如果新技术增加了太多不必要的风险,为什么我们都没有停留在 1990 年代的 Java 版本上呢?我们如何才能避免落后太多,以至于连升级途径都找不到呢?当我们开始一个新项目时,我们不应该使用最新的技术工具吗?


针对这些有趣的问题,答案都是“取决于具体情况”。


我已经开始为在软件工程团队中采用新技术的策略制定一些经验法则。请随意使用这些内容,也可以根据你的组织情况做出调整或建立自己的规则集。

给人们时间进行实验


我坚信可以给员工一些时间来在工作中学习新事物。这为他们提供了一种创造力的源泉,使他们保持领先,并能让你尝试一些业务永远不会优先考虑的事情。如果一位工程师使用他的学习时间来证明我们的应用程序中可以使用某些新技术工具,那么我会认真考虑此事。


“在将新技术用于产品之前,需要对新技术进行验证……你必须做出结果。如果不这样做,就是把产品推向了死亡之路。”——Andrew Orsich

保持一个默认技术栈


微服务的罪行之一是,它们鼓励公司使用不同的编程语言来构建应用程序的不同部分。虽然经验丰富的工程师可能会喜欢每周更换语言,但这会增加认知负担,并让新开发人员难以接受。当程序员选择的语言不一样时,团队还会出现一些技术孤岛。选择一个技术栈作为默认选项,仅在真正需要时才做扩展。

保持核心的可靠性


当你选择尝试新技术时,请先考虑将赌注限制在不太重要的功能上。当你基于 SQL 构建平台时,很难采用某种新的、先进的数据库,但是在临时营销站点上尝试新的 UI 库并不难。一旦在非关键任务中验证了这项新技术后,你就可以决定在整个核心应用程序中采用它。


在整个应用程序中采用新技术的风险级别

记住业务目标


与我合作过的最优秀的那些工程师始终会牢记“为什么”这一要点。他们在业务价值较低的应用程序部分中节约资源,而会花几周时间来完善核心数据模型。作为经理或团队负责人,你必须随时问自己为什么企业需要这种技术。如果某种新工具进入市场,你就必须判断它会增加多少业务价值以及采用的成本。

结论


新技术并不坏。我喜欢尝试使用新的框架和编程语言,但是作为领导者,你必须在好奇心和业务目标之间取得平衡。人们很容易陷入未经验证的新工具的泡沫中,因此,你应该制定标准来帮助你决定应该何时尝试新的工具。


原文链接:


https://www.telerik.com/blogs/right-way-to-adopt-new-technology?fileGuid=RCrXjGYg9dpww3CK

2021-07-01 14:564783
用户头像
王强 技术是文明进步的力量

发布了 863 篇内容, 共 482.9 次阅读, 收获喜欢 1777 次。

关注

评论 1 条评论

发布
用户头像
很对。
2021-07-10 18:25
回复
没有更多了
发现更多内容

地信领域最高奖!YashanDB首获2024地理信息科技进步奖一等奖

极客天地

MacTalk 测评通义灵码,如何实现“微信表情”小功能?

阿里云云效

阿里云 云原生 通义灵码

加速企业上云管理黑科技,华为云Flexus X实例首次亮相828企业节

轶天下事

【YashanDB知识库】主备延迟故障分析方法

YashanDB

yashandb 崖山数据库

跨越山海,台湾媒体点赞《黑神话:悟空》云游戏服务

轶天下事

Flink Forward Asia 2024 议题征集令|探索实时计算新边界

Apache Flink

Apache 大数据 flink 实时计算 FFA

网站必须做IPv6改造吗?不做IPv6改造有什么影响?

国科云

Peet's Coffee与观测云跨界合作,为伙伴们呈现双重喜悦

观测云

中秋节

服务稳定性保障的五大误解

巴辉特

运维 SRE 服务稳定性建设 服务稳定性保障

华为云Flexus X实例3大优势,828企业上云优选产品

YG科技

Java Streams 的潜力

FunTester

华为云Flexus X实例云上管理痛点,828首选上云产品之一

轶天下事

StarRocks Lakehouse 快速入门——Apache Iceberg

StarRocks

Apache 数据湖 iceberg

从CSM到A-CSM:不断提升的探索之路

ShineScrum

开箱即用,AISBench测试展示英特尔至强处理器的卓越推理性能

E科讯

828云服务器如何选?企业云上管理认准华为云Flexus X实例

YG科技

基于STM32设计的酒精检测仪

DS小龙哥

9月月更

中小企业上云好管家!828企业节亮相的华为云Flexus X实例让上云更便捷

轶天下事

助力828,华为云Flexus X实例加速企业云上管理

轶天下事

华为云Flexus X实例亮相828,企业数字化专场优选云服务器

轶天下事

新一代柔性云服务!华为云Flexus X实例亮相828企业节

轶天下事

台媒报道:华为云携手赞奇科技 推出《黑神话:悟空》专属云游戏服务

轶天下事

万界星空科技MES系统生产过程控制功能详解

万界星空科技

工业互联网 制造业 mes 万界星空科技 生产管理MES系统

​共筑国产数据库新生态!YashanDB与华瑞指数云ExponTech达成战略合作

极客天地

MacTalk 测评通义灵码,如何实现“微信表情”小功能?

阿里巴巴云原生

阿里云 云原生 通义灵码

住宅代理和数据中心代理如何选择?

IPIDEA全球HTTP

破解企业上云难题,828优选华为云Flexus X实例加速云上管理

轶天下事

答应我,在vue中不要滥用watch好吗?好的

不在线第一只蜗牛

前端 Vue 3

基于 RocketMQ 的云原生 MQTT 消息引擎设计

阿里巴巴云原生

阿里云 RocketMQ 云原生

软件工程师采用新技术的正确方式_语言 & 开发_Karl Hughes_InfoQ精选文章