写点什么

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

  • 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:564794
用户头像
王强 技术是文明进步的力量

发布了 868 篇内容, 共 489.1 次阅读, 收获喜欢 1779 次。

关注

评论 1 条评论

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

专属云资源包计算规格探秘

天翼云开发者社区

打造中国优质奶源基地 筑牢高质量发展基石

科技新消息

夯实领军者地位 奶酪业务协同发展领先赛道

科技新消息

【网络安全】网络安全堡垒机多少钱?有什么用?

行云管家

网络安全 信息安全 数据安全 堡垒机 企业安全

网络IO管理-简单一问一答、多线程方式

Linux服务器开发

多线程 后端开发 Linux后台开发 网络io 服务端开发

优麒麟社区 22.04 LTS Beta 版本发布!

优麒麟

Linux 开源 计算机 优麒麟 Beta

每周更新 | Verilog测试用例及波形展示图功能上线

ShowMeBug

大咖说·图书分享|数字化转型架构:方法论与云原生实践

大咖说

阿里巴巴 云原生 数字化转型

芝士就是力量!蒙牛2021年报笑出大大的CHEESE

科技新消息

如何写内嵌式的帮助文档

小炮

帮助文档

优麒麟荣获 CSDN IT 技术影响力之星“年度开源项目”奖项!

优麒麟

Linux 开源 IT 获奖 优麒麟

WEB安全:深入反射式dll注入技术

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

把一整个生态圈藏进大沙漠 看蒙牛如何在每一滴奶中藏进玄机

科技新消息

数千万次下载、百万行开源代码贡献,优麒麟如何打造中国开源操作系统新名片? | 卓越技术团队访谈录

优麒麟

Linux 开源 内核 优麒麟 多端融合

再论ORACLE上云通用技术方案

天翼云开发者社区

61%!产品+渠道创新 蒙牛冰淇淋业绩收录有史高增长

科技新消息

设计消息队列存储消息数据的 MySQL 表格

唐尤华

架构实战营

教你三步实现CDH到星环TDH的平滑迁移

星环科技

国产数据库

使用 Amazon Cloud WAN 构建您的全球网络

亚马逊云科技 (Amazon Web Services)

Builder 专栏

天翼云分布式缓存服务(Redis)的几个核心概念

天翼云开发者社区

爆款国民冰淇淋原来是这样“凝冻”出来的

科技新消息

星环科技TDH基于Overlay网络架构为数据安全保驾护航

星环科技

数据库

数仓建设 | ODS、DWD、DWM等理论实战

五分钟学大数据

数据仓库 4月月更

墨天轮访谈 | 腾讯张铭:带你揭秘王者荣耀背后的游戏数据库 TcaplusDB

墨天轮

数据库 TcaplusDB 国产数据库

龙蜥社区&龙蜥开发者获CSDN 2021年度技术影响力「年度开源项目」奖和「年度社区之星」

OpenAnolis小助手

开发者 开源项目 龙蜥社区 年度影响力 社区之星

“敏捷项目比传统项目快”这个说法对吗?

优秀

项目管理 低代码开发

天翼云分布式缓存服务(Redis)的应用场景(干货)

天翼云开发者社区

易观分析:海外业务亮眼,研发+IP运营助力中手游持续增长

易观分析

IP 中手游

TypeScript 之 any:哪里可以用?哪里不能用?

杨成功

4月月更

自动化运维发展趋势以及好用工具推荐

行云管家

运维 IT运维 自动化运维

面试侃集合之 DelayQueue 篇

码农参上

4月月更

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