A13 编辑器的日子

March 08, 2020

背景

今天听同事说:“咱们 A13 有个传统——新人来三个月左右都要写一份总结”。所以自己就准备从自己所在的团队——编辑器、自己所参与的项目、收获、亮点、自我的不足以及建议等六个方面来分别进行阐述。

编辑器

简介

总的来说,整个 A13 技术有三个方向,分别为服务端、引擎以及“大”前端;“大”前端里面又分 Android、iOS 以及前端;前端里面又被分成三个方向,分别为编辑器官网以及管理系统

A13 技术团队概览

职责

编辑器主要是负责易次元编辑器的日常开发;不过,有时候会在其它组人手不够的情况下,抽调部分人力去支持其它组的需求,这就是开发资源被合理分配的真实写照。

其它

目前,编辑器这边包括我这个新人在内总共有两位开发,属于典型的小而美团队。也正是因为这个特点,所以组员之间的关系是属于扁平化管理,最后都是直接汇报给宏伟哥。虽说没有名义上的小组长,但是在这段时间,杰濠同学更多地是承担着小组长这个角色,全局把控编辑器这个项目,拆分每一次需求以及任务分配,并且在这个过程中,逐渐地帮助我熟悉整个项目,在此表示由衷的感谢。

自己所参与的项目

avg-editor-web

这个项目是自己一进来就开始参与的项目,因此自己所经历的时间也比较长、感触也比较深。所以,就着现在这个机会就来谈谈自己实际的开发体验。

整体来说,这个项目给我的感觉是一个质量非常高的 React 项目。至于为什么会这么讲?这是因为该项目不管从代码质量、模块的划分以及 store 的设计等角度来看,都远超我之前所经历的项目,可以说是一个各方面都比较完整的前端工具类项目。

不过说真的,一开始做的数组那个需求就不是很顺利,即便是杰濠同学已经给出设计方案;可能是很久没有写 React 的缘故?后来在参照之前变量的写法以及请教杰濠同学,才慢慢找回感觉;在这个过程中,我一直在想——如果没有之前的变量作为参考,我是否也可以把这个需求给啃下来?接下来,在完成 tab 竖排以及拖拽功能需求的这个过程,还算比较顺利;不过,拖拽功能还是在杰濠同学的指点下才顺利完成,而且因为自己没有同步信息,导致其它同学忽略一些功能点。再后来,就是需要完成广告按钮这个需求,按照道理来说这个需求比较复杂,不过由于文档已经写的比较清楚,且有一些例子比如分享按钮可以参考,所以这个需求也算比较顺利的完成。不过,凭良心说自己那时对于项目关于这部分实现的细节还不太清楚。临近年末最后一个需求就是 codemirror 支持 js 语法检查以及提示,在实现这个需求的过程中,由于自己的一些原因,出现跟杰濠同学沟通不到位等问题。不过,幸好所做的事情没有偏离之前的设计方案太多,也就没有让自己做太多的无用功。

avg-engine-node-service

这个项目是自己最近开始参与的项目,所以印象还蛮深的。不过,在刚开始接这个需求的时候,其实自己内心有点忐忑。这是因为自己很久没有去写 Node.js,还有一个原因就是需要针对这个需求给出相应的设计方案。说实在话,针对一个需求给出相应设计方案的这件事,在我之前是没有相关的经历。这是因为之前的业务需求不复杂、迭代速度非常快、且玩法非常固定,所以基本上是不需要给出对应的设计方案,因此大家也很少会去进行这方面的思考或者去针对这个需求给出相应的设计方案。最后,这个项目的第一版技术方案是由杰濠同学给出。在这期间,我们针对是否使用 Egg.jsNode.js 框架进行了探讨;最终选择 Koa 作为一个折中的方案。

需要值得一提的是,在最开始我们这边只是提供一个转换服务(通过 Babel 实现 ES6 到 ES5 的转换);但是通过实际测试发现,Node.js 转换的速度有点不尽如人意。最后,在经过大家的激烈讨论之后,一致决定把任务管理这一块的实现放到 Node.js 端。幸亏这次任务调整对之前方案的改动不大,才使得之前的一些工作没有白费。也是多亏后端同学给出有关任务调度的流程图以及杰濠同学给出有关定时器实现的流程图,才让自己能够在之前的基础上实现目前的需求。最后,有关于部署这一块,是由杰濠同学负责实现的。

收获

重拾 React

虽说毕业就开始写 React,这个时间持续了差不多一年左右;然后就由于一些原因,就切换到 VueJS,这个阶段持续了差不多两年。现在重新拥抱 React,对自己来说未尝不是件好事,这是因为之前自己对 React 也只是停留在会用的层面。所以,在这段时间,自己把项目里经常用到的 redux 以及 redux-action 等技术源码都看了一遍。这样做的好处就是反哺业务,便于我去理解业务代码。

重拾 Node.js

虽说之前也写过 Node.js,不过那也是很久之前的事情;有段时间也想过重拾 Node.js,不过由于当时公司业务的限制以及自己自身的原因,这个想法就一直被搁置。而且自己那时的想法就很简单:主要的精力放在前端,偶尔客串后端工程师来写部分 Node.js 代码。至于为什么会有这个想法?这是因为有时候自己想做一个小项目,但是由于自己对后端技术不太熟悉,所以只能厚着脸皮去求后端同学帮忙写个接口;这样的情况出现一次两次还可以,次数多的话,可能就不太好去麻烦别人。秉承着“自己动手、丰衣足食”的原则,也就萌生了自己去写接口的想法。

团队

由于自己本身的一段经历,导致自己脱离成熟的团队有一段时间。所以在有段时间内,自己特别渴望回归团队;恰好去年就有这么个机会,不过这中间参杂着一些小插曲,不过最后还是来到现在这个团队。其实刚来的时候,有件事让我比较疑惑——团队没有配备对应的微信群,至于为什么会有这样的疑惑?这是因为现在的这个做法跟我之前所有的经历都不太一样,而且很多人在下班之后更多使用的是微信。再后来,也不知道是出于什么原因,相对应级别的部门也都有对应的微信群。顺便提一下,在刚开始进来的时候,其实自己内心有点紧张,这或许是因为刚到一个陌生的环境,再加上自己不太善于表达;后来随着大家之间慢慢熟悉之后,这种紧张感也就逐渐消失。

亮点

技术功底扎实

由于自己之前的一些经历,使得自己的前端技能树变得比较健壮;也是在之前同事的潜移默化下,使得自己对代码风格以及代码设计这一块看的比较重。

分享意识

自己喜欢秉承着“独乐乐不如众乐乐“的原则,再加上喜欢关注前端界的一些动态,所以会不定期分享一些文章。

积极的工作态度

本身这个编辑器项目就比较符合自己的预期,再加上现在的团队也不错,使得自己很有干劲以及冲劲。

自我的不足

沟通的能力

背景

这个问题可以算是自己的“老毛病”,不过在之前自己本身并没有意识到这个问题的严重性,最后是通过自己的亲身经历才印证这个问题。之后自己也一直在尝试改善这个问题,不过貌似效果不太明显。

解决方案

  • 阅读相关书籍,比如《金字塔原理》
  • 在沟通之前,尽量把问题想明白,拒绝陈述事实,直接给出结论
  • 主动进行沟通,拒绝全盘被动接受

预期目标

  • 不会出现因沟通不及时等原因导致一些比较严重的后果,例如项目延期,出现 bug

方案设计的能力

背景

有时候,我一直在想这个问题——如果不参考别人之前的设计,是否自己也能够给出相应的解决方案?关于这个话题,我跟很多同学讨论过,我甚至举出这个例子——如何造一个火箭。当然,这个方案设计的能力也跟从业者的经验有关,但是我更觉得该能力的养成跟从业者的逻辑思维以及从业者本身是否具备独立思考有着密切相关的能力。

解决方案

  • 在进行每一次需求开发之前,都要进行一次方案设计;然后,自己和杰濠一起探讨设计方案的可行性

预期目标

  • 在自己独立负责的项目里面能够给出合理的设计方案

项目管理的能力

背景

之前的很多时候,我觉得自己更像是一个执行者,在执行的过程中本身没有加入自己的思考。所以,有时候就会导致眼光被局限在自己所负责的那一块,也即不能从整个项目或者全局来看待一些问题。这样一来,就会引发很多问题,比如开发时间的准确评估以及提前预估可能潜在的风险。

解决方案

  • 在进行每一次需求开发之前,都要进行一次时间评估;然后,和杰濠一起评估任务拆分是否合理以及时间估算是否合理

预期目标

  • 在自己独立负责的项目里面能够给出合理的任务拆分以及时间评估

建议

前端团队

现在,A13 项目的前端同学分别散落在不同的业务线,如果不是业务本身之间有交集,否则很难去主动交流;不过还好团队内部不定期会有技术分享,不过这些分享更多的是分享非其它端的技术话题,或许还没轮到我们前端分享。

我的想法是在业务不是很忙的时候,咱们前端团队是不是可以进行一些输出,形式可以有多种,主题不限,比如写文章博客、基于咱们的场景,进行一些技术沉淀以及不定期技术分享。不过需要声明的是——这些输出完全是基于自己的兴趣以及业务的繁忙程度,不需要做强制规定,也即不跟绩效挂钩。当然这样做也会存在一些问题,比如输出的动力不足。


© 2021, Built with and proudly powered by Gatsby.