3 min read

该学习公司技术栈还是追热点(译)

今天看swizec.com这个博客时,看到一篇很有意思的讨论名为《读者问题:你应该学习最新的热门技术吗?》下面是我的翻译和感想。


“你应该专注于公司的技术栈还是学习最新的热门技术?”这是昨晚关于高级工程师心态的炉边聊天会上的一个听众问题。这是一个很好的问题,也是一个普遍的担忧。如果我被困在一种不流行的技术中怎么办?或者更糟糕的是,重新学习每一种新技术会让我崩溃吗?

理想情况下,你应该跟随时代的步伐。熟练掌握你现在使用的工具,并完成好工作。关注未来,寻找推动你前进的机会。

拥有一个你想要达到的愿景是有帮助的。你喜欢解决哪些问题?你需要什么工具?不要学习你不会使用的东西。

但是这里有一个没有人告诉你的秘密:

具体的工具并不重要。根本问题都是相同的。网络也不是什么特别的东西,区块链也不是。即使是高级的 AI 和机器学习算法也需要围绕其创新核心构建产品。

我曾在几家大概规模相同(50名工程师)的Web开发公司工作过。情况总是一样的。无论是React,Angular,基于类的组件,带hook的函数组件,还是仅仅是一些HTML、PHP、Rails视图等等。前端代码只是收集了产品组织经常改变方向的废料。总有十几个未完成的改变世界的想法互相冲突,半成品的移动到新框架的举措。

我只是想说,当我听到“这是因为React”或“这是因为Rails视图”,或者类似的无数变体时,我会有点忽略掉。你们组织混乱的某些部分会在代码中反映出来,老实说,我宁愿它体现在一个大的前端代码块中,也不愿它体现在数据模型、基础设施等其他方面。

也许情况已经改变了,但是当我在2017年本科毕业时,我的学校教授教授的前端知识程度只有“手写一些HTML,如果你运气好的话可能还会学到一些PHP!”这里有一个秘密,没有人告诉你:你不需要学习前端的具体知识。所有商业软件工程的相同经验都适用。

我在2012年没有毕业就离开了计算机科学专业,从jQuery还不流行的时候就开始构建Web应用了。这并没有什么特别之处。最大的问题总是相同的:数据和域建模、管理复杂性、团队合作和状态一致性。

如果你的计算机科学学位没有教你如何在任何上下文中应用解决这些问题的方法——前端、后端、iOS、固件、桌面应用、Android或数据管道——那么这个学位就是毫无价值的,你应该要回你的学费。计算机科学的目的是学习幕后的思想,而不是具体的框架。

这只是一个薄客户端或厚客户端通过网络与厚数据源或薄数据源进行通信。我们从20世纪50年代以来一直在构建这样的系统。事实上,现代汽车就是客户端通过网络与服务器进行通信。

学习这些技能,它们永远不会过时,而在框架大战的世界中,它们令人惊讶地罕见:

数据建模、域建模、系统设计、管理复杂性、同步状态、团队合作