记录可查,自从毕业之后就没怎么写过博客。期间写了翻译了两篇老外的文章,不过好像似乎也是烂尾了。
仔细想想,没有坚持下去的原因有很多,但是无论有多少原因,归根到底问题还是出在自己身上。什么工作之后好累啊,平时没时间啊种种,其实都是借口。
其实就是懒了,以前的激情慢慢消退了。无论你说是生活的压力,还是工作的忙碌,都是借口。时间总是用的,但是没激情没有动力,即使是双休日,哪怕是三休日也是不会提笔。
真是只是懒了,没激情了吗?我想并不是,在我看来目前自己更多的是思想上的懒惰。
毕业和入职
以前在学校时,毕业面临着就业。当时各种学习新技术,钻研,什么 Angular 、Node.js,mongo啊,然后毕设基于这些做了一个聊天室。麻雀虽小,五脏俱全。也是得益于此才有幸加入现在的公司负责 IM 模块的前端工作。好的,从这时开始,心态出问题了。
毕业之后顺利入职,起初写了一点 node 相关的后台代码,操作 mongo,加几个接口啊之类的。后来开始负责公司内部的工具系统的前端开发,期间原 IM的负责人离职,我便接手。到现在,一人负责 IM 模块的前端,偶尔在负责 node 的同学忙时 debug 一下 node 的代码。后端相关技术得以见长。
可能说到这你会感觉,喔不错喔。然而事实却是:我虽想走向全栈工程师,但是目前主要还是提高前端的技能,先成为一名优秀的前端工程师。
公司数据规模还算大,负责的模块功能也算比较复杂,在开发工程中,业务能力得到了很明显的提升。但是,公司的前端架构和前端氛围是硬伤,尤其是在我刚刚入职的时候。入职之初,公司甚至没有专门的前端组,前端开发人员只是附属于后端,一切都是后端牵着走。开发工具和流程都是古老的,包括但不限于seajs ,前端模板,git 使用规范等。入职时间为2015年7月,这时候的前端圈子已经是百家争鸣的时代,具体什么样子我想不需要我再细说了,但是公司内部的前端整体还停留在几年前。对于这些,起初我不以为然,但当我在开发的时候,我才真正意识到工具是多么的重要。
无力吐槽的 seajs
不可否认,能够做出 seajs 是蛮厉害的,或许它在阿里内部配合一系列内部工具,使用起来如虎添翼。但是放在外面,对于其他的使用者来说,有多大的利弊我无从知晓。我只能从我自身的角度吐槽。
以下都是我的个人观点。
- 乱七八糟的文档。什么五分钟上手,我看了大半天还是没搞清楚到底怎么搞,而且还在 issues 里面写文档。
- 乱加新概念。什么懒加载我不知道,我也不想知道。因为在我看来这简直无理取闹。
- 中文社区小圈子,很多问题都知道怎么办。或许配合阿里系的构建工具很爽,但是配合 grunt 啊 gulp 啊什么的简直是要哭死。
半天都没入门,可能我是真菜吧。
前端模板系统
jQuery + 前端模板引擎的思路是我13年实习的时候使用,在15年另一家公司实习时,已经是 Angular 了。所以对我而言,感觉像是在倒车。
我并不是说这种模式是多么的不好,而是公司使用这种模式与我的预期出现了偏差。
Git 的使用
且不说我 git 玩得多么的溜,但是基本的操作和规范什么的都还是心里有数的,不懂就查乃程序猿基本素质。但是公司内部大部分或者可以说所有的使用方式 都只有是粗暴的 push pull,毫无艺术可言。初来乍到的我简直被震惊了-大部分时候前后端的人都在一个分支上开发。我尝试在小组推一推 git flow,但是无奈习惯的可怕。好在我依然按照 git flow 要求自己。
以上,我内心吐槽比较多的,包括但不限于这些,毕竟本文并不是来吐槽自己可爱公司的。
然而,事实证明,这一切的背后都是有其内在原因,在不展开说。
自己的尝试
工作一段时间之后,发现使用 seajs 导致的很多问题(狗屁懒加载,还不如打包成一个文件),于是开始在自己的模块中尝试使用 webpack,配合之前的“前端架构”,同时以组件化的形式对 IM 的模块进行优化。
首先,保留模块 seajs 的 js 入口文件,将其他的 js 文件和小模块按需整理打包成一个或者多个文件,从入口文件引入这些文件。
其次,重新梳理了 IM 的代码,根据界面划分组件。原本打算参考 flux 的思路将数据在一个 store 中,但是考虑到目前还是 jQuery 配合前端模板的开发模式,担心出现无法掌控的性能问题,最终还是将组件的数据分离散落组件内部。 每个组件有自己专属的 Model,View 和 Controller。Controller 控制 Model,Model 变化之后修改 View,组件内部 Model 和 View 的通信以及个逐渐之间都是 通过订阅发布者模式通信。
到这一步之后,模块的稳定性有了明显提升,数据的“单向流动”和数据驱动页面的思路也使得代码结构较之前简单清晰。
组件化的优势在于:分治。在我的代码中,组件内部只需要处理自己 Model 和 View 的事情,在 Controller 中暴露出对外的订阅和发布。而组件之间的“交流”只通过彼此的 Controller。
|-------------------------------------|
| Controller =====> Model =====> View |
|-------------------------------------|
| |
|-------------------------------------|
| Controller =====> Model =====> View |
|-------------------------------------|
| |
|-------------------------------------|
| Controller =====> Model =====> View |
|-------------------------------------|
当然,上述过程不是一蹴而就,而是一点点的尝试和修改,最后总结如此。
好消息来了?有消息好过没消息
期间有一个好消息就是,公司终于成立了前端小组。在以为老员工的带领下和大家的努力下,前端开发规范和流程定下来了。然后小组分工对目前的一些比较重大的问题进行处理。比如 z-index 的规范,公用组件的清理和维护。我负责表情键盘的公共组件,目前已经完工,回头有空放 github 上供大家拍砖。
现实是残酷的
技术发展如此迅速,要想在当前站稳脚跟,还是要有一手绝活,提高自身的竞争力才是硬道理。工作上老技术加新思想得过且过,但是业余时间也是不能松懈的。
毕业到现在,业余时间的学习状态也是起起伏伏。一会看看 React,一会搞搞 node……一会想做一个绑定七牛云的 markdown 编辑器,一会又想写 python 爬爬网站……说的好听叫“德智体美劳全面发展”,说的不好听就是“浮躁”。东一榔头西一棒子,demo 都是半成品,简直毫无作为。
好在意识到业界竞争,及时刹车,给自己稍微定了计划和目标。
- 用现在的新技术做一个相对完整的作品
- 影片管理工具
- 学 Python,好好学,好好用
- 继续写博客
- 等等其他的事情
目前正在进行第一项:利用 Vuejs 及其生态圈做一个自己的 任务清单管理,欢迎大家送星鼓励迷途羔羊。 前后几个月的时间,断断续续。有时候大半个月不写,有时候周末狂写两天,现在每天坚持提交代码,时间少就稍微改改样式,时间多就加加功能。后端代码在这,本是以前在 daocloud 上搭着玩的,现在想慢慢把它打造成我的个人 API 接口仓库,同样也欢迎大家的鼓励。
自己的硬盘装满了各种电影,但是名字和信息乱七八糟,希望有一个管理软件,但是没有找到,于是乎想自己用 electron 搞一个,取名“MovieMaster”,还可以跨平台呢。加载文件夹中的影片文件显示影片的信息是它的基本功能,同时可以编辑影片的信息。更多好用功能以后再想。目前爬了6000多条电影数据,等有空开发前后端,仓库都建好了呢
Python 作为兴趣爱好,拓展自己的技术面,不想局限于 JavaScript。把之前的 python demo 仓库删了个干净,重新复习了基本的语法和数据接口,等有空了,重新拾起 Flask 撸起来。
继续写博客,本文不就是一个很好的开头吗?以前的博客用 githubpage 搭建,目前来说保持不变吧,同时应该会在其他平台同步博文。 主要是贴图片有点麻烦,虽然现在有很多工具,但是还是想自己撸一个,粘贴上传到七牛云,demo 都写好了。现阶段还是多写写字吧。
其实我还是挺想自己做一个单页博客,想想工作量有点大,我的 MovieMaster 优先。
demo 很多,可惜都没成型,遗憾。
后记
大半夜说了这么多,不是心血来潮,是一直以来想写点什么但是却不知道写点什么。今天能够提笔写下这篇,无论流水还是感悟,也算是一个进步。
毕业之时,曾想三五年后成为一名优秀工程师,一个打五个的那种。不论这个目标是否能够实现,但是依然要朝着这个方向前进。
与君共勉