我是怎样通过个人项目成长为高级 JavaScript 开发者的

2020 年 8 月 25 日

我是怎样通过个人项目成长为高级 JavaScript 开发者的

大道理都是能用三两句话说清的。


在我开发人员的职业生涯中,最好的决定之一就是不再满足于只做工具的使用者。


我决定创建我自己的工具,并不是为了卖钱,而是要了解这些技术的实际工作方式,并提升我的技术技能。


本文是关于这个决定如何改变我生活的小故事。


我的个人项目遇到的第一个重大挑战


我一直都是玩 CSS 的。在 2015 年,对 CSS 的热情让我很快成为了我们国家(巴西)的专家级人物。


那时,在我的朋友 Raphael Amorim 的鼓励下,我接受了“每天编写代码”挑战。挑战的内容基本上就是每天都在开源项目中写代码,坚持 1 年时间。



但在我刚开始编写代码的时候,我的 JavaScript 技能水平是 非常 低下的。


当我收到在 Front in Valle(我的国家举办的一场大型前端会议)的邀请,希望我随意谈一些话题的时候,事情就不一样了。我冒出了一个天真的念头, 决定创建自己的 CSS 预处理器,从而学习有关用 JavaScript 的知识


Banana CSS



巴西CSS超集。


在 2016 年,我创建了一个称为 banana CSS 的 CSS 预处理器,这个项目的目的是学习 JavaScript,但到最后我学会了 Node.js、如何创建 CLI、lint、单元测试、JSDoc、持续集成、数据结构、AST、如何创建 gulp 插件等等一大堆知识。



Banana CSS项目: https://github.com/bananacss


深入前端开发领域


这时候,我觉得自己有必要了解更多关于浏览器中的 JavaScript 的知识,因此 我考虑了日常使用的主要工具 ,并选择了 React.js。


millenium.js


在 2017 年,我创建了一个名为 millenium.js 的项目,该项目的描述为:



一个用于创建函数式无状态组件并使用虚拟DOM渲染的JavaScript库。使用Redux创建超轻和快速应用程序的理想选择。


或者我最喜欢的描述是:


🚀在不到12秒内渲染你的前端。


在这个项目中,我了解了性能相关的知识,以及创建前端库、算法、JSX 等的良好实践。当然,我保留了旧项目中的所有优秀实践。



Redux 的在线演示


millennium.js项目:https://github.com/millenniumjs


凭借热情探索新事物


在 2018 年,当我看完《头号玩家》电影之后,决定用 JavaScript 创建一个游戏。


使用 JavaScript 创建游戏是相对简单的任务,你有许多工具可以挑选,然后阅读文档,做些实验,就可以完成了。


但对我来说,我的风格当然是: 创建一个用于创建游戏的新工具


对于这个项目,我决定定义一些有趣的规则:


  • 不要使用Canvas/WebGL。

  • 仅使用CSS渲染动画。

  • 编写函数式代码。

  • 尝试编写尽可能多的同构/通用代码。


burnout.js


最后,我创建了 burnout.js:



🎮用于管理碰撞的2D游戏引擎。


在这个项目中,我学习了有关函数式编程、DOM 性能、算法(用于计算元素碰撞)和其他很多内容的知识。



burnout.js项目: https://github.com/burnoutjs


当然,我还是保留了所有优秀实践,例如单元测试、单元测试、单元测试,重要的事情说三遍。


做一个项目就冒出一个灵感


这时我又有了新的联想:


拜托,我怎么从未想到要创建自动化测试工具?


于是有了下面的项目。


N.O.M.s


🔮通用/同构JavaScript单元测试。


在开发 burnout.js 时,我构建了 N.O.M.s(我的测试工具),并使用 N.O.M.s 库编写了 burnout.js 的全部单元测试


创建测试库的目的是什么?


  • 它应该可以用在浏览器和Node.js(同构/通用)中。

  • 在纯JavaScript中创建所有断言(不使用浏览器API或Node.js模块)。

  • 使用Emojis。

  • 不要将自定义CLI用于运行测试。



有趣的是:我用 Mocha 编写了 N.O.M.s 单元测试。很讽刺,但很有趣😅!


N.O.M.s项目:https://github.com/afonsopacifer/nomsjs


值得重新发明轮子吗?


在完成这些个人项目(以及其他许多项目)之后,在 2019/2020 年,我主要开发公司产品,创建复杂的前端应用程序并领导一个全栈开发团队。


令我惊讶的是,在开源开发的最后几年中,我的技术水平提升了,并且可以轻松使用 React.JS、immutable.js、Web Components、flux、测试、PRPL 模式、后端 API(node.JS/python)、MongoDB,以及用于 Web 应用程序的许多工具/良好实践来实现复杂的架构!


结论


作为前后呼应:


在我的开发人员职业生涯中,最好的决定之一就是不满足于只做工具的使用者,而是 成为工具的创造者


原文链接: https://dev.to/afonsopacifer/how-i-became-a-senior-javascript-developer-with-personal-projects-1lpo


2020 年 8 月 25 日 08:001222

评论 1 条评论

发布
用户头像
赞一个,有前途
2020 年 08 月 26 日 15:13
回复
没有更多评论了
发现更多内容

CTO股权”避坑“,你根本不知道我们多努力

赵新龙

TGO鲲鹏会 股权 CTO

当你不知道怎么学习新技术时

石君

学习 方法论

Flink 1.10 细粒度资源管理解析

Apache Flink

大数据 flink 流计算 实时计算

说说数据库主从同步延迟的一个解决方案

M1racle

数据库 主从同步

为什么我们要工作

黄大路

思考 工作

Web3极客日报#137

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

《CSS 选择器世界》读书笔记

Zoro

CSS Java html 读书笔记 前端 张鑫旭

云函数中使用Python-ORM: Peewee

刘宇

个人的投资原则

史前靓仔

深入解读 IaaS、PaaS、SaaS

燕陈华

IaaS PaaS SaaS

回文串解题记录

程序员菜哥

Java 算法

和儿子装一台 Hackintosh

苏锐

DIY Hackintosh 装机

来聊一聊Linux常用命令(第二篇)~

程序员的时光

Linux

回"疫"录(13):不信谣,不传谣

小天同学

疫情 回忆录 现实纪录 纪实 谣言

我的编程之路-3(熟练)

顿晓

c++ 调试 经历 项目 疑问

找到自己的领域,然后封神

一尘观世界

成长 提升 领域 机遇 趋势

Spring Boot可执行JAR的原理

小判

Spring Boot 类加载 Fat-JAR deflate JAR URL

ONTAP 9 巡检模板

HU

可能是最最最最简单的搭建博客方法

彭宏豪95

GitHub 写作 博客 GitPress

谈一谈自由职业者的心态

Bob Jiang

自由职业 写作 心态 营销

在线修改主从复制选项

Simon

MySQL

基于Serverless架构的Git代码统计

刘宇

死磕Java并发编程(9):无界线程安全队列ConcurrentLinkedQueue源码解析

七哥爱编程

Java并发 jdk源码 队列

0风险高收益的投资

Neco.W

学习 投资 自我提升

Web3极客日报#136

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

裸机Ubuntu18.04 配置实现人脸识别的第三方库

月夜

dlib face_recognition 人脸识别 环境配置

抽象

落英亭郎

系统设计 面向对象 抽象

(乱记)“怎样培养优秀孩子”

启润

嫌 OSS 查询太慢?看我们如何将速度提升 10 倍!

苏锐

大数据 性能优化 数据湖 OSS 对象存储

引入了绩效管理,团队反而一天不如一天了?(一)

无箭的丘比特

团队管理 企业文化 绩效

MySQL 实现排名

黄大路

数据挖掘 MySQL 数据库 sql 数据分析

我是怎样通过个人项目成长为高级 JavaScript 开发者的-InfoQ