实习该做点什么好呢?

个人成长

基础篇:

酷家乐对于工程师基础的重视从第一次面试便体现的淋漓尽致,对于工程师来说不仅要知道how,更要知道why。

虽然说通过了酷家乐的实习面试,但是对于从面试当中暴露出来的基础问题每天都在责问自己:是否有所提升?

所以对于个人成长来说,基础(HTML/JS/CSS)将会放到第一位,所以希望自己能够达成以下三个目标

  1. 组织合理健壮的HTML结构,熟悉使用HTML5的新API
  2. 编写兼容性强、简洁、优雅的CSS,熟悉CSS3中新的属性,对几大预编译工具有更多的实践
  3. 写出易懂、规范、易维护的JavaScript,熟悉一些高级语法与设计模式,并实践到工作当中

这三点将会是在我平时业务开发中时刻提醒自己注意的问题,以及在空余时间,对其进行系统地、有规划性的学习与巩固。

框架篇:

自己对两大框架(React、Vue)非常感兴趣,不仅是因为能够提升自己的开发效率,更是对框架的设计思想感到很惊叹,无论是数据驱动UI、先进的jsx编写方式、组件化的思想,还是高效的Virtual Dom的算法,都对我激起极大的兴趣。

但是目前来说都只是停留在使用阶段上,曾经也尝试过去阅读理解其相关的源码,但是每每都不了了之,究其原因还是自己对于框架并不是那么熟悉和对一些高级语法和设计模式的不熟悉。所以针对这两点,将做以下规划:

  1. 尽可能多的去完成类型不同的业务,对于不同的场景做相应的实践,对React/Vue的大部分的功能和API都较为熟练并有一定的理解。

  2. 进一步对一些高级语法和设计模式做一些业务上的实践,更为熟透的掌握其思想与如何应用到实际开发当中。

  3. 对React与Vue设计上的不同点和使用场景上的判断有一定的理解,对实现同一个功能上两大框架该如何组织代码有着互通的思想。

最终希望完成的目标:

  1. 能够熟练地使用两大框架完成绝大部分的业务开发
  2. 对其周边的技术栈能够快速的学习使用,如Mobx、i18n
  3. 能够理解其核心的设计思想与API设计理念
  4. 能够大致的理解其源码结构,并对Virtual Dom的算法有一定的理解。

Node篇:

对于Node最初的实践是自己写爬虫抓取数据定期向邮箱发邮件,然后是用Koa2配合Mongo数据库写了一个完整的博客服务端。

到后面才发现,Node在前端工程师手上,更多是的用来编写提升开发效率的工具,比如目前所了解的static-data、def-cli,这都是之前自己并没有机会接触到的东西,所以对Node有了更深的认识,之后将会对“如何使用Node制作命令行工具”做一些学习与实践。

目标

  1. 熟悉使用Node的一些底层API,打好开发工具的基础
  2. 配合commander开发出交互体验良好的命令行工具,试着做出提升自己工作效率工具
  3. 能够维护一些团队中简单的node工具

前端工程化:

前端是一个非常大的知识体系结构,从最初简单的HTML配合CSS做静态页面给后端套模版,到后面完全与后端分离,做出交互复杂,业务场景繁多“前端APP”。

这个历程当中,不免要使用很多工具来做支撑与提升开发效率,从简单的gulp到配置复杂的webpack打包工具,弥补CSS功能缺失的各种预编译工具,规范团队编写风格的eslint,提升代码稳定性的typescript等等,这么多技术如何集成到一体是一个很大的“配置”工程。

于是前端最终演化为一个完整的工程结构,其中使用到的技术种类繁多、迭代迅速,如何保持对技术的敏感与持续更近,对于我来说是一个很大的挑战,从这点来说,我的实现方式是多关注业界的技术发展,对一些“精选”的方案做一些实践,应用到实际工作当中。

主要目标

  1. 对前端工程化有更深刻的理解
  2. 对配置繁多且复杂的Webpack有着进一步的理解,并且能够完一些开发过程种简单的配置
  3. 能够实现一个符合自己开发“口味”的脚手架工具

后端篇:

一直都有一个宿愿,便是熟悉另外一种语言,最终思考了很久,选择了Go作为自己第二熟悉的语言,但是更多希望学习Go是我的一个兴趣,Go在我理解上是对目前市面上大部分语言做了一层“取其精华,去其糟粕”的处理。对于其设计思想与编码方式有着很大的兴趣,短期目标是能够熟悉其基础语法,后期将会把自己博客后端服务从Node迁移到Go。

业务开发

业务开发是工作中最为基础也是最为重要的任务,如何快速且高质量地完成业务是一件非常有挑战的任务,在我看来,完成这个任务需要多方面的考虑:

  1. 对自己技术的提升,只有厚积才薄发,重视自己平常工作的技术积累与改进,书写符合团队编码规范的代码,对一些复杂的逻辑做好详细的备注,甚至添加一个“README开发指南”,用来提示未来接手该项目的小伙伴。

  2. 如何高效地对接,前端在工作中需要与多个角色进行交流,产品、设计、后端,在交流的过程中,提早发现问题、主动面对解决问题、保持高效的交流。这在工作当中将极大地提升工作效率,避免大部分因“没有说清楚”而导致的错误。

  3. 在工作当中,不能仅仅视自己为前端工程师,在需求讨论的过程中,能够提早发现一些不合理的需求,并且与产品沟通是否有更好的解决方案,在与设计师和后端配合的过程中,能够相互发现问题并且及时解决,提升团队的默契度。

团队输出

作为实习生来讲,实现对团队的输出并非易事,一是对团队的业务范围以及历史并不是很熟悉,二是因为技术水平有限。因此,在团队输出这方面,前期主要考虑的是:

  1. 发现一些开发过程遇到的效率问题,并主动提出积极解决。

  2. 发掘开发过程中的痛点,思考是否有解决的思路,把自己的想法告诉导师。

  3. 多阅读团队中使用的一些工具源码,如def-cli,mola等,理解其设计思想,试着提出自己的想法或者思考是否有更好的实现方案。

  4. 试着自己写一些小工具,提升自己的动手能力,为将来输出做准备。

如何落到实地

提高自己的工作效率,投入更多的时间到工作与学习中,并且平衡其两点的时间分配,保持对新知识的敏感度,提升学习的能力。

每周末给自己做一个总结,按照以上的目标进行一个“完成度”分析,根据实际情况规划下一周的工作与学习安排,在学习的过程中能够产出自己的学习笔记,总结自己的心得与实践,产出多篇博客。