(译文)为长期项目选择“无聊”的技术

27 阅读8分钟

作者: Cristian Tabacitu Backpack 创始人

链接: backpackforlaravel.com/articles/op…

你是否曾经追逐过科技潮流,但几年后却后悔不已?你并不孤单。

我已经在网络上构建了超过 15 年的东西,为自己也为他人。我和其他人一样喜欢尝试各种技术……但有一点……我的行为与我认识的很多开发者不同。即使是高级开发者和 CTO 也会像我一样陷入“闪亮的新技术”综合症。但我最近意识到……我已经治愈了。在客户产品中……我选择的是无聊的技术。以下是我建议你也这样做的原因。

是的,在 Web 开发领域,每个月都会涌现出一些耀眼的新工具,它们非常诱人。它们承诺会改变游戏规则,但最终往往只会增加复杂性,却得不到太多回报。我并不是说不要在小项目中尝试这些工具。当然,不妨多尝试一下。但现在是时候让我们意识到那些优秀可靠的传统技术的价值了——尤其是在专业领域。如果你为客户或公司开发产品……而他们的“优势”并非那种新技术……我建议你 90% 的情况下选择那些枯燥乏味的技术。 原因如下。

错误 A. 使用尖端技术。

说实话,新技术固然令人兴奋,但也会带来很多麻烦。你可能会获得很酷的功能,但也可能遇到一些没人知道如何修复的 bug,甚至可能在一两个论坛上看到问题多于答案。更新速度太快,很难跟上,而维护一个采用尖端技术的项目……很快就会变成一场噩梦。

我的经验法则是……如果它只问世了几年……它就不适合做长期项目。它可能很酷,但几年后你会后悔选择它。很少有人会上当,所以让我们继续讨论更大的问题吧。

错误 B. 因为技术很酷而使用技术。

我认识的很多人就是在这里反复犯错。即使是资深开发人员看到“酷孩子”们使用和推广“酷科技”,他们也会想用。 害怕错过(FOMO)也很正常!就像那位Instagram网红说5000美元的包改变了她的人生一样……你最喜欢的科技YouTuber也说某款科技改变了他们的人生……所以你也想要!现在就拥有!

听着……我不是说不要用它——当然,你也可以在副项目中试试——那样更接近免费。但在为客户项目或公司采用这种“酷炫技术 ”时要非常小心。因为采用错误的技术可能会让你、你的公司或你的客户损失惨重!**

在将“酷炫技术”添加到您的堆栈之前,请回答以下问题:

  1. 这项技术是为你们这种类型和规模的项目和团队开发的吗?还是为更大的项目和更大的团队开发的? 很多时候,一项技术之所以“流行”,是因为它能为大公司解决一个小问题。解决这个问题会带来很大的复杂性,但这样做是值得的。如果你是Netflix、亚马逊或Facebook,你可以增加复杂性,让所有东西运行速度提高10%,因为这10%的提高能让你赚更多的钱。你拥有大批开发者和巨额资金——所以你发明了一些工具,让每个开发者都成为大机器上的一个小齿轮。你创造了一些开销,因为它能让你的产品线平稳运行。一个齿轮坏了,就换一个。这对Facebook来说完全合理!但对于你的中小型项目来说,这很可能不值得。
  2. 这项技术在4-5年后会大致相同吗? 这是一个很好的经验法则,因为它可以立即淘汰很多技术。如果它5年都没出现……你怎么知道5年后它会是什么样子呢?
  3. 我想用它是因为它很酷,还是因为它解决了一个紧迫的问题?是情感还是理性引导你使用它? 如果你发现自己在为某项技术找借口,只是因为你想尝试它……请给自己一些空间,三思而后行。请记住,即使是你从那些有影响力的人那里听说的……也可能不会在所有地方都使用它。它可能看起来像那样……但事实并非如此。开发影响者有动力尽快报道一项新技术 — — 成为第一个这样做的人。有时他们喜欢它并极力推广它。但他们中的大多数人也有不维护长期项目的奢侈。如果他们这样做了,他们可能有预算在几年内彻底重写。你呢?你能在 3 年后要求你的客户再次支付所有费用,因为你不再喜欢那项技术了吗?这就是我的想法。

举几个例子:

  • SPA。 直到一两年前,每个人都在为所有东西构建 SPA。当然,SPA 对 Netflix 来说非常有意义……但对你的网站来说呢?当然不行。对你的电商平台来说呢?当然不行。对你一个人的团队来说呢?当然不行。幸运的是,这种趋势正在逆转。现在越来越多的人正在构建 SSR 应用。让我们拭目以待,看看这种情况能持续多久。
  • JavaScript 框架。 尽管大家都知道 JS 生态系统有毒,NPM 更是地狱之子(我套用 NodeJS 创建者的话)……但多年来,每个人都在每个项目中使用 JS 框架。这真是令人叹为观止!幸运的是,这种趋势也在逆转。像 Alpine 这样的轻量级 JS 库正在发生这种转变。噗!
  • 微服务。 别让我开始。我见过很多失败的例子……客户为此付出了巨额代价。记住:客户认为他们会成为下一个 Netflix……并不意味着他们真的会成为。别再为那些很可能永远不会发生的事情进行优化了!如果你正在构建 MVP 或 v1……请使用 v1 会用的工具,而不是 v10 会用的工具。

我见过很多次这样的情况:开发人员选择了上述几种做法……花了两倍的时间交付产品……从中吸取教训,然后离开项目,交给别人维护。他们选择了对自己有利的做法而不是对项目有利的做法。 他们选择学习新技术,而不是使用“无聊”的技术。千万别成为这样的人!

解决方案 AZ。使用钻孔技术。

越无聊……越好。一个有趣的迹象是……人们称它为“死”。事实上,人们称它“”的时间越长……就越好。当然,除非它真的死了。这些听起来熟悉吗?

  • “ PHP 已死。  ”
  • “ SSR 已死。  ”
  • “ Bootstrap 已死。  ”
  • “ jQuery 已死。  ”
  • 比特币已死。  ”

不,它们不是……只是对某些人来说不那么令人兴奋,因为它们很稳定。是的,它们有缺点……所有技术都有缺点。但是……在无聊的技术中,缺点是可以预见的。这是一个巨大的好处!

通过选择“无聊的技术”,您可以:

  • 善待你的客户或雇主,因为你让他们物有所值;
  • 善待未来的自己,因为五年后的事情和现在一样容易;
  • 善待现在的自己;选择远离有害的技术消费主义文化;

我使用什么无聊的技术?

您的情况可能有所不同。您的偏好和经验也有所不同。我不知道您开发了什么应用,但我……我开发的是 MVP、v1,有时还会是 v2 和 v3,仅此而已。当一个团队的开发人员超过 5 人时……就该由我的代理机构接手了,幸运的是……他们也有资金用于优化。

因此,我构建的 90% 的应用程序都使用:

  • PHP 作为编程语言;
  • Laravel 作为框架;
  • Bootstrap 作为前端 HTML、CSS 和 JS 库;

关于交互……我曾经长期推崇 jQuery。现在我有时还会用它!但更多时候……我会用原生 JS……如果需要的话,还会加点 AlpineJS + Livewire。它们现在还不算“无聊的技术”……但我感觉以后会变成这样。

所以,是的,我选择将一些不枯燥的技术添加到我的技术栈中,但我会保持良好的技术卫生。新技术永远不会成为技术栈的基础层。我会将新技术与新技术分开。而且,只有当新技术看起来变得枯燥乏味时,我才会采用它。

可是,嘿——这就是我。我懂什么呢?我只是做了15年而已。

结论

选择正确的技术栈至关重要,这不仅关系到项目的启动,也关系到项目在未来几年的平稳运行。使用成熟稳定的技术可能看起来有些乏味。它们不像最新技术那样炫目,但却提供了无与伦比的可靠性。

所以,下次为新项目选择技术时,请记住,有时最好的选择是经过实践检验的。毕竟,在这个总是追逐下一个大事件的世界里,坚持行之有效的方法总是有好处的。