Hi~ 大家好,我是 Joking Zhang,是一名练习时长长达2年半的前端打字员。今天想给大家讲讲我的编程故事~
1 编程那些年
1.1 缘起
我来自于一个比较普通的本科院校。上学的时候,也只接触过C语言,Java语言,以及一些计算机相关的知识。周围同学学习编程的目的,也只是为了应付考试。可能因为大一C语言学的比较好的缘故,大二的时候老师找到我,说有一个 ACM 编程比赛,问我有没有兴趣。当时,我还是蛮兴奋的,因为这件事让我看到了编程除了应付考试还有别的可能性,毫不犹豫的就答应了。这个比赛我准备了半年的时间。当时基本已经放弃了一部分课程,打印了很多 ACM 的题目,每天上课就带上一两个 ACM 的题目,和一本小词典,趴在最后一排去想怎么解题。因为缺乏系统的训练,更难算法的学习,最终和小伙伴只拿到了省赛三等奖的成绩。Joking Team 是我们的队名,这也是笔名 Joking Zhang 的来历吧。比赛当晚,和两个小伙伴坐在操场,一人一瓶啤酒,畅谈人生和理想。恰巧此时,远方的天空升起了色彩缤纷的烟花,好像在为我们庆祝一样。我当时暗自下定决心,以后一定要写代码啊~
1.2 教练,我想写代码
毕业之后去了一家北京的小公司。当时全公司的技术栈都是 JS,后端也是用 Node.js 开发的。我没有相关经验,也只能先从测试的工作开始入手。熟悉了测试的工作之后,发现公司经常会有一些前端的外包工作,就开始自学前端,JS,逐步承担了一些前端,帮后端传数据,使用 Node.js 写脚本处理 Excel 的工作。因为一个人扮演了太多角色,每天就是很累,也没什么积累。但也因为没有什么积累,普通的学历,更不敢出去面试,还安慰自己,这样也还不错。
硕大一个北京城,面对单调的生活,没有什么奔头的日子,日渐肥胖的身体,于是想去尝试下健身。我先去了某熊快跑,每天只是简单的跑步,以及跟视频做一些训练,没怎么瘦下来,还感觉健身蛮无聊的。后来去了某刻健身,刷了 100 多节团课,认识了不少人,也瘦下来不少。这里没有说哪家健身房不好,只是想说应该找一个更加适合自己的环境。当时就下定决心要为自己争取一个更好的编程学习环境,一个纯前端开发工作。
刷了一下招聘网站,React 当时比较火,就用 React 做了一个博客,辞职出去面试了。当时投了100多份简历,因为工作经验的缘故,只有5家约我去面试。比较幸运的是,遇到了现在的老大,愿意把我当成毕业生,招进去培养。
1.3 平台期
转眼间,一年过去了,在做了一年纯前端开发的工作之后,技术得到了不少的成长,但是也到了一个平台期。因为一直都处于野蛮生长,没有系统的学习,我也不太清楚怎样能让自己变得更厉害。在这期间还发生了两件事情,一件是我去学了 poppin(街舞),另一件是我开始尝试在思否翻译文章。
poppin 的练习,在外人看起来还是蛮无聊的,重复的动作,一遍又一遍练习。可就是这种傻傻的付出,却让我一点一点学会了solo。我也开始明白,如何去慢慢把一件事做的更好。
在思否翻译文章的初衷是:1、英文没有那么好,阅读英文文档有些吃力;
2、处于瓶颈期,想要进步,希望系统的学习前端的知识,但是市面上中文的技术书籍,博客文章很多,能让我自己读起来赏心悦目,又十分符合自己目前想学的却比较少。
3、老外写的东西还不错,质量很高,且包含大量示例(我一直认为:不包含示例的技术博客就是耍流氓)
后来也因为文章被推荐,被关注,被公众号转载,认识了更多小伙伴。这些正反馈也让自己在学习前端的路上多了一点动力。
2 未来
最近我辞去了上一份工作,参加了不少面试,发现自己不论从知识的广度,深度,项目的架构能力来说都还很欠缺,也想在这里总结下接下来的学习计划。
2.1 如何学习
写Demo
在平时的工作中,我们往往只是负责一部分业务开发的工作,我们当然可以把这个过程中碰到的每一个概念,都搞清楚,学明白。但是业务开发中接触不到的东西,比如项目架构的能力,部署运维能力,网络方面的知识,新技术的学习。想要获得这些能力,只去看一些文章,肯定是达不到的,唯有实践才是唯一方法。根据这些知识点,去做一些小而美的 Demo,让自己的 GitHub 活跃起来!
阅读,翻译
刚开始写博客的时候,每天的问题都是:我这篇应该写什么?其实,肯定是日常工作中遇到的坑,填平了之后,总结成文章会比较有收获;或者系统的学习某个知识点,写 Demo 并整理成文章。但是对于我这种新手来说翻译他人的文章,阅读优秀的书籍、博客,翻译文章,会有更大的收获,也为自己写博客打下基础。
阅读源码
这方面,我做的比较少,目前也只是看过 Antd Modal 组件 Confirm 组件的封装,当时就是觉得这种命令式调用组建的方式比较神奇,不需要组件内部设置属性来控制UI的展示,公司也有类似的实践,自己也尝试实现了一个:Modal.open 。这个过程一定会让自己接触到工作中接触不到的知识,从而提升自己,并且更好地服务与工作。
Codewars
Codewars 是一个编程练习网站,类似于 LeetCode,但是它也增加了:经验、等级、战队、排行榜等要素,让练习的过程更加有趣。LeetCode 的题目主要来源于各大科技公司的面试题目,比较正规,适合准备面试;Codewars 则更加偏向于实际运用,对于提升编程技巧有很大的帮助。
关注社区,论坛
当搜索引擎不能解决我们遇到的问题时,也可以尝试借助社区,论坛的力量。我之前遇到一个问题,就是我在实现一个自定义 hooks 时给自己挖了一个坑,尝试了一晚上都毫无结果,决定求助于 思否社区 和 stackoverflow 社区,第二天早上就有回复了。(点上面两个链接可以看到问题~)
2.2 Demo List
- [ ] 个人博客
- [x] MDN 本地图书馆网站(LocalLibrary)前后端分离版 技术栈:React,Express,MongoDB
- [ ] 《Node.js实战:使用 Egg.js + Vue.js + Docker 构建渐进式、可持续集成与交付应用》 学习并实践
- [ ] Ant Design Pro
- [ ] Ant Design Mobile
- [ ] React Native
- [ ] Weex
- [ ] 微信小程序
- [ ] PWA
- [ ] Flutter
- [ ] 快应用
3. 总结
互联网人中年危机,比其他行业来的更早一些。任何时代的组织进化、干部年轻化运动都有助于保持企业的活力,从人性的角度来说,每个人都有舒适区和懈怠期,“企业要创造一个让停止成长的固定型思维人群无法停留的生态环境和组织机制”。所以,如果我们想在这个行业让自己保持活力的话,就让自己快速成长吧!
本文参与了 SegmentFault思否征文 「一起分享你的故事」,欢迎正在阅读的你也加入,分享你的故事。