如何不成为恐龙。
这是我如何成为一名经验丰富的高级前端开发人员,以及如何不得不从头再来的故事。那种感觉就像必须从头再来。我是如何学习的。
这篇文章主要讲的是学习 React,但也可能适用于其他框架。甚至可能适用于完全不同的专业领域。
发生了什么?
现在是 2019 年,我 37 岁。我从事 Web 开发和 Web 设计工作已超过 15 年。高中毕业后,我进入设计学校学习设计。但我一直对编码很感兴趣。早在 90 年代初,我就已经开始使用GW-Basic编写代码。我还记得在小学高三时写下我的第一行代码。后来我学习了 HTML,甚至学习了一点 PHP 3。在设计学校,我还学习了 Flash 和Lingo中的 OOP 。当我的班级被要求编写一个简单的掷骰子程序时,我编写了完整的大富翁游戏。只是因为编写代码是一条永无止境的发现、奇迹和多巴胺之路。
这不是我。但如果我十岁的时候就留着这么帅的胡子,那我可能就是了。
在多年的开发工作中,我见证了周围的环境发生了翻天覆地的变化。21 世纪初,我开始设计和编码时,CSS、一些 JavaScript 以及后来的 jQuery 就足以让我掌握前端开发的全部技能。我还添加了一些后端代码(PHP,在那个黑暗的年代甚至用过 Coldfusion),以便将前端代码与后端代码集成。因此,多年来,我能够设计一个项目,编写代码,然后集成它。我一度被称为全栈开发人员。生活变得简单。当 SCSS 这样的后处理器出现时,生活变得更加简单。我当时就想:“兄弟,我搞定了!”
那么发生了什么变化?
所以我当时很享受编写 SCSS、JS 和一些 PHP 代码,但大约在 2012 年,我周围的世界开始发生变化。我在 Twitter 上看到越来越多关于 AngularJS 等花哨框架的文章。一度感觉每天都有新的框架发布。我自然而然地被这些框架吸引,但跟不上,并且被其中一些框架看似复杂的内容弄得不知所措。同时,我也患上了某种“元语言恐惧症”。
仍然不是我。
后来有一天,我参加了一个聚会,会上有个哥们热情地演示了 AngularJS。他做了一个医院员工列表,点击后可以展开他们的证书和技能列表。一个非常简单的页面。而为了让这个简单的页面正常运行,代码量竟然超过了 1MB。
对我来说,这就是全部了。这些新东西太复杂了,让人害怕,最重要的是:我可以用不到 1kb 的原生 JS 代码写出这个折叠列表。或者干脆不用 JS,只用 CSS 和 HTML 写……我的常识告诉我:“你他妈的为什么要用这么复杂的东西来做这么简单的事情?!”
当时我是MyOnlineStore唯一的前端开发人员。而且在我之前的所有雇主那里,我都一直是唯一的前端开发人员。所以没有人说服我接受这些新技术是明智之举。
我为何站立了这么久
2015年末,我迟到了,却病倒了。严重的倦怠感让我一年后病情复发,当时我还在康复中。一段时间后,当我感觉好一些,回到MyOnlineStore办公室时,一切都变了。办公室里来了两个新的前端开发人员。新的代码库、新的代码、新的词汇,一切都是新的!
已经是2017年了。我完全不知道从何说起。我不敢寻求帮助,因为我的自尊心太过膨胀。我的一些新同事甚至还没出生,我就已经开始写代码了……现在我竟然要去找这些人,承认我完全不知道自己在做什么?
但我尝试过......我尝试坚持了几个月,然后我就想:“我不明白!去他妈的!”
“在我的整个职业生涯中,设计和开发各占一半,所以现在是时候告别其中一个,专注于另一个了。” 由于我对新的前端世界感到恐惧,我逃到了MyOnlineStore的设计部门。这是在 2018 年初。
是的,这是我在做设计
不幸的是,做了一年用户体验设计之后,我发现这是一个错误的选择。经过多年的密集治疗,以及直接陷入另一个可能让我倦怠的黑洞之后,我得出结论:设计并不适合我。我能做设计,但我无法承受随之而来的压力。我感觉我必须为自己做出的所有设计选择负责,并为此而奋斗。而且,由于我的用户体验设计主要依靠直觉,所以这对我来说真的很难。最重要的是,这一切都让我感觉非常个人化。也许我现在或不久的将来,凭借我从那时起学到的所有东西,我可以应对这一切,但那时不行。这极大地加剧了我的不安全感。
然后在2018年末,我决定回归前端开发。我就像现代世界中的前端恐龙一样。
是的,这就是我。
如何加快速度?
现在我面临着一个巨大的挑战。我不想像真正的恐龙一样灭绝,仍然固守旧习。那么,在一个变化如此之快(并且仍在变化)的世界里,停顿几年之后,该如何快速跟上呢?首先要克服的是对“新前端世界™️”的厌恶。我尝试用一种全新、客观的视角来看待 React 和所有其他新工具。
在我离开设计圈的这段时间里,我们的代码库发生了很大变化,而“新前端世界™️”也发生了变化。我们使用的工具要么改进了,要么被更好的替代品取代了。工具和代码库变得更加稳定和成熟。
然后有消息传来:React Hooks即将在 React 16.8 中发布。这让代码的可读性大大提升,我开始想:“嗯,也许我可以这么做。”
我不想费尽心思地解释 Hooks 和 Class 的区别,以及 Hooks 为何如此优秀,毕竟已经有很多优秀的文章探讨这个主题了。如果你想了解更多,可以去看看。
对我个人而言,最大的好处是相比使用类组件,在函数组件中使用 hooks 更加简单。之前感觉类组件需要我费尽周折才能跟踪状态,而 hooks 则让我轻松搞定useState()
。
例如,在 oldskool 课堂上,我曾经写过这个来增加计数器:
this.setState({ count: this.state.count + 1 })
钩子让我可以这样做:
setCount(count + 1)
我敢打赌,如果您正在阅读本文,即使您几乎没有(反应)编程经验,您也会觉得第二个版本更简单。
在“接受挑战!”之后,最难克服的障碍就是:如何应对“我必须重新开始”的感觉。我感觉自己一无所知。我就是琼恩·雪诺。
处理他们的感受......
这些年来,我一直自称是高级开发人员,究竟在骗谁呢?我不得不一次又一次地向比我小12岁的同事寻求帮助,这是多么尴尬啊……
有些人会想“这有什么大不了的?”如果你这么想,我会为你感到高兴,但你必须明白,寻求帮助对我来说是一件大事。也是我倦怠和随之而来的人格障碍的主要原因。
所以我做了两件事:我决定开始学习所有这些新工具和框架,更重要的是,我开始寻求帮助。但最重要的一件事是:我告诉同事们我的感受,以及我对一切的不安全感。他们非常支持我,这给了我继续前进的信心。
他们给予我最大的支持之一,就是让我看到我确实取得了进步。实际上,进步很大。他们还让我明白,即使不知道所有事情,也并不意味着世界末日。只要你不断尝试和学习,最终总会有结果的。
很快,我也意识到我根本不需要从头开始。感觉上可能有点儿像,但凭借我多年的编程经验,我仍然领先一大截。我需要学习的只是一些新的框架和工具,而不是学习如何说话,也不是我使用的第一个工具。
学习所有这些新事物确实需要一些时间。没关系,好事多磨。我应该早点意识到这一点,因为它写在我身上了,但遗憾的是,有时它并不那么明显。
是的,这也是我。
好的,太棒了,挑战接受!从哪儿开始呢?
首先,我列出了我们使用的所有工具。有很多东西需要我学习:Typescript、Babel、Webpack、React、Apollo、Redux、GraphQL、Yarn 等等。这份清单有点让人不知所措,直到我开始把它们分成两类:一类是我需要从一开始就学习的,另一类是我可以稍后再弄清楚的。结果发现,第一份清单并不那么长,而且更容易上手。
比如,我现在知道怎么用 Babel 搭建项目了,虽然我不太清楚它的内部工作原理。没关系,总有一天我会学会的。在那之前,问问懂的同事也完全没问题。
归根结底,不知道也没关系。高级开发者的称号不在于你知道多少,而在于你处理事情的方式。在我看来。
我一直试图偶尔抽出一些时间进行个人成长,但这只是偶尔的几个小时的空闲时间。不过,几个月来,我们公司MyOnlineStore一直在举办所谓的“Ship-it Days”活动,在此期间,我们开发人员可以做任何想做的事情,只要与工作相关即可。这对我来说是一种学习日常工作中可能无法自然而然学到的东西的好方法。在日常代码库中工作时,我只需运行yarn dev
,storybook 就会启动,仅此而已。但在这些“Ship-it Days”活动中,我会创建新的仓库、安装软件包并自行配置所有内容。这是一种学习新知识的好方法。
结论
慢慢来:好事多磨。
做你自己。
棒极了。
如果您喜欢这个博客,请通过点赞、转发或点赞让我们知道。
如果您认为在 MyOnlineStore 工作适合您,以下是我们的职位空缺(NL)。
如果您对本博客有任何疑问,请查看我的业余时间活动,或者只是想联系我,您可以在Bad Decision Works 的 Instagram上找到我
您可以在Medium上找到我们的更多博客
干杯👋
文章来源:https://dev.to/myonlinestore/how-to-not-be-a-dinosaur-3d55