自我认知和定位


我是一名全栈开发者。尽管我目前的官方职位是资深后端开发工程师,但是我有前端工程实战经验,以前也做过测试工程师,拥有多元视角,对系统有整体的认识。尽管我最近 6 年专注在 NodeJs 技术栈,但是对其他多种语言都有涉猎。

最近我做了什么


除了线上事故排除,日常需求开发,我还主动发现问题并积极组织和推进:

  • E2E 自动化测试
  • CI/CD
  • 发现并发布公共库
  • 改进代码质量
  • 提高测试覆盖率


比如,我发现购物车存在 3 大问题,就通过公司内部文档清晰地列出存在的问题,并给出了改进的方案,不仅设计了后端接口,还找到了前端在开发过程中会碰到的问题以及相应的解决方案(比如如何信任开发环境的自签证书等)。在验证可行后,分别找到 Dev Lead、架构师线下沟通,达成一致后,邀请前端和测试同事一起开会详细讨论,并推进开发过程。

又比如,我发现后端的文档化工具链的局限,就设法改进(增加对更多种数据类型的支持,优化文档返回速度等),并且通过远程视频会议分享给 Global 同事。

又比如,针对日常开发的痛点,我组织前后端、测试同事以及 DevOps 同事,推进 CI/CD 流水线的优化。使用原始社会、石器时代、青铜时代的比喻,让非开发同事感受到 DevOps 流程优化的迫切。

除了本职工作,我还对多个优秀的开源框架做过代码贡献,比如 eggjs、urllib、flot、Skulpt、算法可视化等等。

最有挑战性的项目是哪个


https//zizhujy.js.org/zh-CN/FunctionGrapher.html

  • JAM Stack
  • LaTex 表达式解析器
  • 隐函数(采用象限四分法)
  • 区间数学应用

简历


2007 年毕业于苏州大学统计学专业,毕业后在一家 500 强外企做销售数据分析,接触到 VBA 编程不可自拔,后转行做开发,使用过多种语言如 C#、Java、Python、Go 等等,其中最多的还是在英孚教育青少儿实验室使用 ASP.NET 开发内部的 CRM 系统。从英孚教育离职后,专注于 NodeJs 开发至今。从 2007 年参加工作至 2021 年的 14 年间,按照专注点分类的话,经历大致是:VBA 4 年、C# 4 年,NodeJs 至今 6 年。

概括的说,非程序员生涯是前 4 年,程序员生涯是后 10 年。管理上做过开发组长,团队中除了自己,另外有 2 名前端和 2 名后端,也就是说没有带过大团队,垂直领导力并不优秀,但是横向领导力还是有一点的,总是在推进跨部门间的协作。最成功的一个例子是以程序员的身份,影响了产品经理提需求的姿势。

在工作之余,还拿到了复旦大学的软件工程硕士学位。

我的价值


如果公司的技术团队失去了我,那么会损失以下几点:

  • 少了一位有多元视角、熟悉全栈开发的程序员。可以预见到后面团队在开发新功能时缺少一个整体把控者,在普遍前后端分离开发的现状下,系统整合上会磕磕绊绊,项目风险增加。
  • 接上面一点,可以预见的是线上问题的排查和跟踪将更耗时,前后端分别甩锅,难以定位。
  • 少了一位崇尚测试驱动开发的程序员,测试覆盖度降低,代码质量下降。
  • 失去了一位对自动化和工具链有热情有经验的程序员,开发团队可能会停留在原始社会更长时间。
  • 开源影响力降低。