你们同样不可能从现在这个点上看到将来; 只有回头看时, 才会发现它们之间的关系. 所以你必须相信, 那些点点滴滴, 会在你未来的生命里, 以某种方式串联起来.
自我介绍
我是一位 16 年毕业 211 CS 专业的本科生, 一直把自己定位为工程师, 用技术解决问题. 我之前很少写文章, 看着自己的页面 PV 从零到上亿, 技术栈从 jQuery 到 vue 到 React, 觉得是时候回顾一下这工作的两年半的成果和规划下新年的学习路线, 分享我的收获与感悟.
2016 ~ 2018 从一到亿, 我的故事.
2016 从零起步
16 年毕业 7 月后入职了第一家公司, 技术栈是 jQuery + PHP , 经历了一次比较艰难的转型, 因为大学的项目经历主要是 Java , 对 JS 的认知只有可以做表单验证, 对 PHP 一窍不通, 只能从零开始学习前端知识, 也非常感谢当时的团队对我非常宽容, 给了我时间一点一点的进行学习, 不得不说 PHP 是世界上最好的语言 (手动狗头), 我看了不到一周就能开始给自己写 API 了.
16 年底我就自己负责了整个产品的前端部分, 并且使用了 Vue 对旧的页面进行重构, 刚开始使用 Vue 还有没用 webpack 和 Babel , 想想自己当时 唯一的老师也就是博客和 GitHub 了, 但是这段时间写了非常多的代码, 因为 PHP 技术不精, 使用 JS 写了很多复杂的逻辑, 甚至用 JS 刷了 LeetCode.
2017 渐入佳境
17 年初开始将工作之外学习到的新技术带入项目中, 将项目的技术栈改进为 Vue + ES6 + Webpack 的 SPA, 虽然开发人员只有我一个, 但是还是非常享受将技术栈一步步更新的过程, 并且让我意识到 实践是学习新技术的最佳方式.
17 年下半年我开始了我的面试之旅, 平均一周两个, 当时真的是经历了一段非常痛苦的日子, 对自己项目经历的不自信, 对自己技术水平的质疑, 但是从来没有停止学习, 最终也收获了很多 Offer 并选择入职了一个非常满意的团队, 主要业务是电商的 ToC 页面, 从小作坊进入了专业的前端团队, 并开始将技术栈向 React 迁移, 整个下半年的主基调也是不停地做业务, 看别人的代码, 不断地学习.
2018 厚积薄发
18 年年初, 作为一个刚刚入门 React 的新人, 上线了第一个使用切仅 React 的项目, 这个项目虽然简单但是非常重要, 因为我使用了 Context 和 Events.JS 做了类似 Redux 和 Redux-Saga 的功能, 这使得我之后可以快速理解 Redux 和 Redux-Saga 并上手使用, 所以 理解工具的设计理念 是非常重要的.
18 年 6 月, 我完成了我人生中第一个 PV 破亿的项目. 项目做起来就像是对之前技术的一次大考, 方方面面全都涉及, 访问量大了之后对页面的兼容, 适配, 容错的要求都很高, 这里我就不讲的非常细了, 希望大家可以理解, 总之这非常像是经历了一次没有准备的高考, 却发现自己可以从容应对. 项目之后我阅读了很多关于组件化的文章, 看了一些组件化较好的实践, 对业务场景进行了场景的抽象, 组件的功能结构进行了重写, 让我在之后的项目中少加了很多班, 也在做一些规范化组件进行输出. 经历过这样的项目最大的收获是 自信和能跳出业务进行思考的能力.
三年感悟
从一开始工作的从零起步步步维艰, 到如今厚积薄发独当一面, 三年里有了一个长足的进步, 收获的不只是技术的提升, 还有信心的建立与眼界的拓展. 经历了这些总归是有一些自己的感悟.
在工作中积累知识
当我刚毕业时觉得工作经验好像没什么用处, 无非就是项目做得多而已, 我和工作几年的程序员差不了多少, 现在的我觉得这种想法很蠢, 因为项目做得多了真的可以积累到很多知识. 当我做项目中遇到问题, 我并不仅仅是 Google 一下解决方案, 我会多看一些相关方面资料去理解问题, 同时也会附带地 看一些延伸的知识并进行积累, 学习的知识也不限于前端, 感兴趣的都可以了解, 并做好笔记, 工作后真的通过这样的方式积累了很多有用的知识并拓展了眼界.
CS 基础很重要
作为科班出身的前端, 在大学中一直不是很理解大学在学什么, 等工作了之后才发现这些知识可以帮助我去理解程序的运行以及如何设计我的代码. 比如我很容易就能理解 JS 中 0.1 + 0.2!= 0.3, 这是一道计算机组成原理的填空题, 感觉我自己当年临时抱佛脚 61 分飘过的科目现在居然能排上用场. 数据结构和算法非常有用, 可以帮助我更好地将业务场景抽象为解决问题的代码. 编译原理, 计算机网络和设计模式等知识也渗透在工作中, 帮到我很多.
做一名工程师
我一直把自己定位为工程师, 我坚持用合适的工具, 恰当的方法解决, 并对 有能力对问题挺行抽象, 设计实现一类问题的解决方案. 语言, 框架, 库就是我手里的工具, 首先要做的就是会用工具并理解工具的设计思想, 以学习曲线陡峭的 React 为例, 我觉得当时我最大的阻碍是将我设计代码的思路迁移到 React 的函数式编程上来, 一开始也是一直半解只是会用, 觉得什么都很别扭, 但是当做了几个项目之后, 在一点点打开了函数式大门之后, 就觉得 React 真的是太棒了, 并且迫不及待的开始尝试用 HOC,Props Render 进行逻辑抽象, 重构之前的代码并尝试做一些业务中的轮子. 我并不觉得我是科学家, 可以去研究出一些很前沿的技术, 造一些很酷的新框架出来, 我更愿意去深入业务, 利用这些先进的思想去为业务中的问题开发优秀的解决方案.
2019 新的起点
列个 List 吧, 希望今年可以把立的 Flag 实现:
学习 RxJS 和 TS , 完成一个 React RxJS TS 的项目
深入学习 GraphQL , 造一个用 GraphQL API 的前端轮子 (肯定是个方轮子)
做一个前端的工具, 最好不用 JS
多写文章多沉淀, 把之前的学习笔记分享出来
补一补数学, 真的很差
补一补英语, 文档看得头疼
工作生活 balance , 之前可以说全身心投入工作中了
健身, 工作之后一共胖了 20 斤
写在最后
文章的开头是乔布斯的演讲中关于因果的一句, 我对此深信不疑. 从小学学绘画, 到高中感兴趣的 VB , 到大学的 CS 专业, 这一切串起来, 让我走上了离视觉最近的前端道路. 我也相信尽人事, 听天命, 只要我不停下来, 最会有所收获.
你必须相信一些东西 -- 你的勇气, 宿命, 生活, 因缘, 随便什么 -- 因为相信这些点滴能够一路连接会给你带来循从本觉的自信, 它使你远离平凡, 变得与众不同.
掘金年度征文 | 2018 与我的技术之路 征文活动正在进行中......
来源: https://juejin.im/post/5c36f13cf265da61483bce7f