2019年终总结


2019年的年度总结

2019年在这个博客上写的东西很少了,主要是因为感觉在这个blog上东一篇西一篇地写文章很没有章法,也不利于记忆。于是在github上另开了两个仓库,前端知识手册前端面试手册,关于系统性知识的总结都放在了github的仓库上面。

一时间都有种想要废弃这个blog的打算,但是意识到知识手册终究是知识手册,想要有一个全面性的知识输出,还是得靠博客,于是我又回来了

正式开始之前先感慨一句,去年9月份才刚刚研究生入学,但是一晃眼,我就又到了要准备两个月后的春招了,时间真的不等人啊,不过小组内一届的专硕更加不容易,研究生生涯开始半年就要开始准备工作的事宜了,想想大家都还是挺不容易的

2019年,这一年的我是既勤奋又不勤奋的一年,我虽自诩为前端行业从事者也是爱好者,本科阶段的课程作业也均是使用前端相关技术,但说来惭愧,我从去年9月份才开始接触vue,进而引入前端的新浪潮,在这短短的一年里,我接触并学习了无数的新名词和新领域。新知识之多让我不禁感慨,怎么本科阶段通杀的那些技术到了如今显得如此不堪,再回首以前的经历时感觉自己好像在玩泥巴。

正式总结如下

在这一年里,我在技术方面做了如下的事

项目方面

  • happy-question项目,学习vue全家桶做一个稍大型的项目
  • 在学习css布局各种知识时,使用vue-cli创建了一个项目用于加深理解
  • vue-beauty项目,vue+vuex+vue-router+vue-infinite-scroll+vue-awesome+axios+懒加载+less,做了一个懒加载好康图片的应用(github上找的练手项目)
  • vue-chat项目vue全家桶+mock+less等,一个仿微信聊天的应用,练手之作
  • vue-todos项目,技术栈同上,也是一个练手之作,主要是好看,自己觉得特别舒服
  • js-archive项目,最开始是因为在整理知识网的时候,有好几个项目想要整理,感觉都可以写成一个工具,以便复用,现在是一个半完成体,只支持localStorage,还没有做数据库的存储
  • vuelegant,打算自己从头写一个UI框架,参考的是ant-design-vueiView的源码,虽然尚未完成,但是学习了很多组件库的组织方式,命名规范等
  • osm-track-proj,这个是研究生期间导师要求完成的项目,技术栈为vue全家桶+mock+ant-design-vue+less+axios+Web GL+nodejs+mySql,是一个很全面的项目,不过导师并没有采纳此方案
  • 完成了两个小程序,一个是给女朋友的生日礼物,还有一个是给机房设计的月报系统

开源方面

  • 学习了vue-cli2.x版本的自定义template,自己写了一个常用的template并且push到github上了(后已全部改用vue-cli3.x ~ ?)
  • 耗时两个月,系统学习了数据结构和算法,并且在leetcode上刷了一定量的题目(后来因为准备前端系统知识而暂时搁置),对基本的数据结构和算法有较为熟练的掌握和理解。并且在github上基于docsify建立了一个项目
  • gulp+babel+npm script做了一个docsify的theme,这个时候还不知道CI,自己写了一个脚本用于打包和部署npm仓库,但也算正式脱离vue-cli工具,自己构建工具流。
    • 可以改进的地方有很多,比如持续构建,AST代替正则会更好
  • 基于webpack+babel+travis CI+semantic release+mocha+chai做了一个自定义log的库,正式用持续构建的思想去维护开源项目
  • 基于rollup+travis CI+semantic release+babel,将本科阶段写的webGL封装库优化并且以npm仓库的形式发布,rollup比起webpack更适合打包第三方库
  • 建立了一套脚手架工具,类似yeoman,用于快速生成代码模板,并且创建了两套模板,一套用于快速生成js第三方库,基于rollup打包,另一套用于快速生成文档模板
  • 维护了两个前端知识仓库,前端知识手册前端面试手册,可以说这两个仓库占据了我下半年的绝大部分精力,我意识到光会使用vue做项目根本算不上精通前端,也意识到一年前看的书如今再次回顾宛如新书,我决定以在线笔记的形式维护这两个大型的项目(第二个项目是在准备面经时创建的,主要还是第一个项目)

看起来好像今年做了很多事,但其实难度都很浅,只是更高程度的CURD,这里单指项目方面,在知识学习方面还是汲取了很多的,尤其在js基础知识上认真巩固了一下。前面之所以说今年也是很不勤奋的一年,就是因为我本可以做更多更有趣更深入的事情,但是我贪图玩乐(?),将很多时间浪费在了娱乐上,每次看到大神都会感到冷汗直冒,深感惭愧。明年将是转折的一年,我需要同时面临毕业和找工作的压力,希望新的一年我可以学习更多的知识,更好地巩固自己的能力

11月份的时候和机房的几个同学一起想要参加qq小程序比赛,这个时候的我自诩在前端方面做一个简单的业务开发还是问题不大的,再加上自己年初的时候有小程序的开发经验,在和小组成员头脑风暴一个晚上初步定下项目的方案后,就拍胸脯承诺下了全包此事(组队的除了我之外只有一个初级前端)。现在想想这可能是本科阶段我参加项目的后遗症,本科时我负责过很多项目都是我一个人承担,但万万没想到这样的工作模式一旦工作量大了就会带来巨大的隐患。真正接手这个项目才发现它的各种棘手之处,首先qq小程序平台开发体验极其极其极其恶心,要啥功能啥功能没有,我不明白都是一个公司的产品,该编辑器还在微信开发者工具之后,咋功能还反过来落后微信的几个档次呢?它连基本的emmet也没有,组件页面一键生成也没有,而且热更新的执行效率也非常差(估计是编译的问题),平时用vsc开发vue的程序,保存文件后1s之内html就发生了对应的更新,qq小程序开发工具将这个时间成功得延长了5-10倍,整个人像吃了屎一样的恶心,还不如手动刷新页面来得快。此外这个工具还有各式各样的bug,在pc端能够正常运行,一到真机调试就会出现问题。在这里可以剧透了,我们小组最终放弃了该比赛,而导致我们真正放弃比赛的原因还不是前面那些,而是小程序端和服务端的交互,在微信小程序开发中,它提供了免费的云开发,但是到qq这里,没门,不仅如此,它还要求你在短短一个月的时间里办好域名,服务器和相应的域名备案。而我们团队知晓这一点时,距离比赛结束的时间已经不足以备案了,再加上组内的几位小伙伴一点也不擅长此事,只得就此作罢。

以上这些是我们放弃比赛的客观原因,当然也是存在主观原因的,那就是我对一个产品的开发流程过于乐观和松懈了,尽管我之前已经了解了软件工程里的敏捷开发和瀑布模型等知识,但真正上手一个产品开发时还是硬着头皮一把梭,初步订好功能模块之后,也不设计原型,也不考虑各个模块的复杂程度和可实现度,代码写到哪就是哪,再加上我之前把开发的工作全都揽下了,产品UI和代码全部都是我一个人负责,我在开发完产品的二分之一部分时就感觉到了严重的力不从心,难度不大,但无奈要设计的部分实在太多了,全部工程交由一人负责实在困难。我本来指向安心地写代码,现在产品设计和UI还有代码架构的事全要负责,而且还要限时一个月之内完成,我着实感觉有些困难。

现在回过头来看这次比赛,还是能有不少收获和反省的

  • 对于在校生来说瀑布模型显得不够灵活,敏捷开发也太捉襟见肘,那么快速迭代模型显然是一个可以采取的方案
  • 设计产品方案时,在讨论好产品定位和大概模块之后,也不要急着开写,可以细分模块,再做进一步的讨论
  • 模块也要细分讨论,主要商议细节怎么处理,以及该模块可能的复杂度
  • PD和美工一起设计原型,然后再开会讨论,组内一致通过后,再可以开始前端页面的构建
  • 代码方面至少要两个人,前后端分离,如果人员有空闲,最好再分一个人解决服务器,域名和备案这方面的配置准备
  • 讨论方案时的复杂度可能和实际施工时的复杂度有出入,这个时候可以慢慢啃让这个模块成为程序中的亮点,也可以适当缩减模块的内容,让单位时间的产出比更高
  • 一个人全揽活不适合大型开发除非你有异常充盈的知识储备和充足的时间
  • 代码全部完成后要快速迭代,可以组内讨论也可以请人来测试,然后再按模块修改产品功能

今年我比较满意的点是认真学习了数据结构,这让我在思考代码和平时的很多场景中都充满自信,还有认真学习了js的基础知识。事实证明任何时候学习编程的基本能力才能真正提升人的编程水准和自信。不满的地方在于项目过于单薄,明天争取做几个有挑战性的项目,让能力和水准上一层台阶

2020计划

技术方面

  • 初步完成深度学习入门,看完《深度学习入门》,并且做出知识整合
  • 学习编译原理
  • 学习ts,并且完成项目落地
  • 学习node,基础的后端知识
  • 学习react
  • 学习Electron
  • 重看红宝书(2遍)
  • 项目
    • 重新维护vuelegant项目
    • 重新维护js-archive-creator项目
    • 实现一个简易版的vue
    • 实现一个美团仿版
    • 使用PWA重构vue-todo
    • 做一个复杂一点的后台系统
  • 开启看源码计划
    • vue
    • jquery
    • ant-design-vue架构剖析

生活方面

  • 找到心仪的offer
  • 初步学习制作音乐

结语

这算是正儿八经的第一次年度总结和计划,以后这个版块我希望自己能越做越好,自己的博客也要慢慢