写点什么

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

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

发布了 839 篇内容, 共 446.6 次阅读, 收获喜欢 1756 次。

关注

评论 1 条评论

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

KubeBlocks v0.9发布啦!API全面升级、支持Redis Cluster、MySQL主备...更多新功能等你发现!

小猿姐

数据库 Kubernetes 云原生

接入应用内支付服务,提高商业变现效率

HarmonyOS SDK

HarmonyOS

MES系统定制 | 生产调度车间排班计划/MES排程排产

万界星空科技

生产管理系统 mes 万界星空科技 排版排产计划

五问五答|看忆联eMMC如何赋能智能电视长效稳定

新消费日报

万界星空科技定制化MES系统,实现数字化生产

万界星空科技

数字化转型 生产管理系统 mes 万界星空科技

iPaaS丨企业应用及数据集成的重要性和挑战

RestCloud

数据集成 ipaas 数据挑战

深度解读昇腾CANN内存复用技术,降低网络内存占用

华为云开发者联盟

人工智能 神经网络 华为云 华为云开发者联盟 企业号2024年7月PK榜

WebSocket vs. SSE:哪种实时通信技术更适合你?

Apifox

前端 后端 websocket 实时通信 sse

新加坡工作和生活指北:教育篇

Keegan小钢

教育

华为云Astro低代码平台开启AI敏捷组装时代,探索低代码创新无限可能

轶天下事

亚信科技入选信通院“数据智能产业图谱”, 打通数据智能服务全链路!

亚信AntDB数据库

AntDB数据库

【好消息】祝贺傲冠行云服务获得深圳知名品牌称号!

行云管家

IT 知名品牌 傲冠行云服务

小间距LED显示屏市场:新机遇与挑战

Dylan

技术 行业 LED display LED显示屏 市场

Databend 开源周报第 152 期

Databend

Qualcomm QCN9074 and QCN9024: The Future of High-Speed WiFi 6E Connectivity

wallyslilly

QCN9074 QCN9024

什么是MES系统?有什么作用?

万界星空科技

制造业 生产管理系统 mes 万界星空科技

会员信息一键同步!微盟与客如云联手打造智能服务新体验!

聚道云软件连接器

案例分享

什么?这动物图片可以上国家地理?

程序那些事

程序那些事 Stable Diffusion

华为云致力推进全域Serverless时代,引领技术创新,赋能行业实践

轶天下事

智启未来,共筑云上生态,华为云生态领航者·总裁班走进深圳南山

最新动态

软件测试学习笔记丨Allure2报告中添加用例步骤

测试人

软件测试 测试开发

Solana近况及解读:Sol链代币DApp开发详解

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

华为如何助力金融大模型开出价值之花

脑极体

AI

智源打造基于Triton的大模型算子库,助力AI芯片软硬件生态建设

智源研究院

运营海外社媒效率低?试试云手机!

Ogcloud

云手机 海外云手机 云手机海外版 社媒运营 海外社媒运营

告别手工录入,企业财务凭证同步迈入智能新时代!

聚道云软件连接器

案例分享

数字身份管理发展趋势:使用区块链技术进行身份管理

芯盾时代

区块链 数字身份 身份安全 统一身份认证

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