一个人/一本书改变了我的生活并让我成为了更好的开发人员

2025-05-24

一个人/一本书改变了我的生活并让我成为了更好的开发人员

简而言之:
我是Addy Osmani。他写了一本名为《学习 JavaScript 设计模式》的书。他让我进步了很多,因为我学到了编程的底层原理。框架、API、语言来来去去,但编程原理和设计模式却是永恒的。

无限游戏

我最近在纽约听了西蒙·斯涅克(Simon Sinek)的新书《无限游戏》(The Infinite Game)的发布会。无限游戏的核心理念是长远发展——拥有远见卓识。赢得战争,而不是战斗。有限游戏有一套预先设定的、固定的规则,所有玩家都必须遵守。而在无限游戏中,规则不断变化;玩家来来去去。

成功参与这场无限游戏的五项实践之一,就是拥有生存灵活性的能力。换句话说,用通用知识武装自己,这样当规则改变、玩家来来去去时,你仍然是游戏中一个可行的玩家。这个概念如何应用于编程?

游戏正在改变

那是 2011 年。我创办了一家流媒体视频初创公司。当时,我正在权衡要使用哪种技术栈。需要注意的是,当时库和框架的下一轮变革正在酝酿。像 Backbone、Ember、Angular 这样的 JS 框架才刚刚出现。jQuery 无处不在。ES6 还不存在。Internet Explorer 仍然需要解决。CORS 规则非常宽松。SASS 的使用开始更加频繁。Node.js 也开始获得实质性的采用。

市场瞬息万变,变化迅速。显然,人们对速度有着强烈的渴求——快速上市、快速开发、快速生产、快速部署。最小可行产品(MVP)成了一项信仰。

作为一家初创公司的创始人,我也想参与其中,我认为就技术而言,上述参与者是正确的选择。

发射许可

可以说,我当时不知所措,一头雾水。这个行业似乎在分化,而不是融合。W3C 和 ECMA 制定了标准,但这些流行的框架却在做着不同的事。新的想法不断涌现,挑战着极限——有时是好的,有时是坏的。

有一天,我偶然发现了一个不起眼的黑白网站。它看起来像这样:

2011年网站截图

2011 年的截图。

我读到的第一句话是:

“另一种看待模式的方式是将其视为解决问题的模板——可以在很多不同的情况下使用。”——Addy Osmani

卖。

这正是我想要的。如何构建一个足够可扩展的应用程序,以便我的代码片段能够解决不同情况下的多个问题?如何才能提高速度?

随着我进一步阅读并了解模式、反模式、结构以及诸如显示模块、装饰器、外观、观察器等特定且值得信赖的模式,我开始明白,没有一种技术、库或框架是万能的;解决问题的方法不止一种。

“……重要的不是你实现的模式的数量,而是你选择如何实现它们。例如,不要仅仅为了使用‘一种’而选择一个模式,而是要尝试理解特定模式的优缺点,并根据它是否适合你的应用做出判断。” - Addy Osmani

我可以根据实际情况使用多种技术。哇——世界尽在我掌握。现在,我掌握了全面的知识,更加自信,并且对各种技术以及何时使用它们有了更深入的理解。Addy Osmani 允许我使用 JavaScript 来启动我的创业公司。我感到自由而充满力量。

你或许不认为程序员是艺​​术家,但编程是一项极具创造性的职业。它是一种基于逻辑的创造力。——约翰·罗梅罗

速度

极品飞车电影动画

我得到了我想要的。速度。通过重用代码,开发速度加快了。通过减少重复编写并参考我之前的解决方案,加快了上市速度。通过简化团队成员的培训,我的代码现在更易于阅读,结构也更清晰。我的 5,000 行代码文件(!!)被分解成了小块。

存在的灵活性和长寿

时间快进到 2014 年。Angular 2 发布后引起了轩然大波。JavaScript的格局再次发生变化。一些最常用的框架开始失去吸引力。一些老玩家纷纷离去,而新的玩家也不断涌现

年度流行框架图表

来源:JavaScript 框架的残酷生命周期

我开始质疑我们的代码和架构。我们应该积极采用这些新框架吗?很多大型成功的公司都在使用它们,这是否意味着我们也应该这样做?

更换球员

我意识到现在发生的事情似曾相识。它发生在 3 年前的框架和库上,也发生在它们之前的框架和库上,等等。想到 Addy Osmani,我意识到开发人员只是发现了模式和反复出现的问题,寻找做出更好编程决策的方法,然后将他们的发现发布在一个叫做框架的东西上。不过这一次,它们被称为 React、Vue 等。很快,接下来的名字将是 Next、Svelte、litHtml 等等。SCSS、LESS、Django、Laravel。他们都只是想帮助我们,因为他们都曾在某个时刻经历过自己的痛苦

如果你深入研究这些框架的代码和原理,你会发现它们都应用了设计模式——有些比其他的更为突出。Observer就是其中很重要的一个。你还会发现,它们本质上是某些人的抽象和观点——用 JavaScript、Python 等“纯”语言编写的。“魔力”被揭示了,我意识到我和我的团队编写的代码在原则上与这些框架是一致的。

长寿

我们继续改进应用程序,但由于多种因素,我们无法快速采用 ES6 等新兴标准。我们的客户大多来自企业领域,这意味着他们仍在使用较旧的浏览器(IE),并且采用新技术和设备的速度较慢。我们的代码库一直基于 ES5,直到 2018 年底我离职。然而,我们的产品仍然运行良好。我们的客户仍然满意。我们的开发仍然快速且可扩展。我们仍在构建新功能。

新标准,ES6

游戏规则又变了。新的、更好的构建方式已经到来。人们也因此而去。ES6于 2015 年问世,并建立了新的标准。事实证明,这些新标准中的许多都受到了之前的框架和库的启发或衍生!

浏览器发生了变化。移动设备变得更快了。对现代语言功能的支持也迅速到来。然而,底层原则依然存在。设计模式依然存在。ES6 引入了,它只是原型继承的语法糖。引入了模块,它只是对 Addy Osmani 在其书中描述的模块模式的扩展支持。

新热点和无限游戏

《黑衣人》动画探讨如何推动新热潮
现在最热门的新事物是函数式编程,一些拥护者甚至把它奉为圭臬。突然之间,其他一切都变得无关紧要,一切都乱套了。React引入 Hooks时,我们就见证了这一点。突然之间,如果你还在使用类,你就变得不合时宜了。这就像在玩一场“无限游戏” ,玩的是“有限思维”

新的热点永远都会出现。这就是软件开发行业无限游戏的本质。没有赢家或输家,只有领先和落后——西蒙·斯涅克

Addy Osmani,许多人的导师

Addy Osmani 为我灌输了超越潮流、经得起时间考验的知识。由于我理解所使用的原则和模式,我可以更快、更高效地学习新的语言和语法。他让我有信心构建应用程序,而不受某些规则和规定的束缚(例如,你必须始终这样做)。他向我灌输了一种“无限思维”,这样当玩家来来去去、潮流兴衰时,我都能保持活力,随时准备学习,能够以最小的影响进行重构,并构建经得起时间考验的应用程序。

关于指导和独立思考的最终想法

Addy Osmani 是我的导师,他甚至都不知道这一点。他激励了我,给了我信心和工具,但最重要的是,他给了我独立思考的自由,给了我决定如何最好地解决我和团队问题的自由。

独立思考和重新发明轮子之间有很大区别。有时候,市面上现有的轮子并不符合你的要求,你就得自己造一个,这完全没问题。

这是 Addy Osmani 的书《学习 JavaScript 设计模式》的链接 - https://addyosmani.com/resources/essentialjsdesignpatterns/book/

文章来源:https://dev.to/eaich/the-one-person-book-that-c​​hanged-my-life-made-me-a-better-developer-5g81
PREV
使用 Namecheap 和 Netlify 设置域名
NEXT
使用 Fetch 创建一个很棒的 JS API 接口(少于 50 行)