粗粒度的聊聊个人规划

405

开胃小菜

面试的时候候选人经常会被问到,"为什么要从事前端这个职业?",特别是你的履历中之前是做别的岗位甚至是别的行业,然后又转到前端岗位的时候,就更会勾起面试官的好奇,我被问到过这样的问题,也问过别人这样的问题。大部分的回答可以总结为:"兴趣",也有少部分同学会有如下的答案:"前端比其他岗位好入门"、"前端现在很火,赚钱很多"等等...

当然如果在其他条件基本一致,HC 又有限的情况下,我会优先选择感兴趣的同学,因为这部分同学会拥有更持续的动力继续专研下去 ...

但是面试官为什么会问这样的问题呢?

那这就要看你是在第几面被问到这个问题的,头一面可能大部分情况下是满足自己的好奇心,越往后,大部分情况下,面试官可能想听到的就是你对自己职业的规划或者是理解了 ~~ 这时候的答案可能就会丰富多彩了 ~~ 当然大部分情况下可能依旧是 "感兴趣" 😝😝😝 ~~

聊聊我自己(闲扯)

实习时做现场实施(偏技术运维),转正后 java 开发,再之后做前端至今,正因为这样的"体质",让我无形中具备了"百分百被问为什么转前端"这样的被动技能。

转前端至今将近四年的时间,对前端的认识从最开始的懵懵懂懂到现在发生了很大的变化,对自己的职业规划也越来越清晰(迎娶白富美,走向人生巅峰!)。

在大学期间就对有视觉冲击的东西更感兴趣,之后就是觉得写 html + css + js 实现的东西比写 shell, 写 sql, 写 java 更能给自己带来成就感,然后就是在做了 1.5 年的 java 后带着自学不健全的前端知识体系义无反顾的转了前端岗,也是从那时起真正领略到了前端的魅力,接触到了正规的前端工程化,从此无法自拔(尽管与大神相比,自己成长缓慢) ~~

前两年的职业规划就是没规划(无意识),就是各种健全前端的知识体系,当然这个事情目前依旧在进行,然后就是痴迷工程化,开始觉得很神秘,高不可攀,当知识积累到一定情况下,写了一些 "玩具" 性质的工具后,慢慢的也有了一些自己的认知,再后来自己设计了一套前端工程化的方案 pandolajs,旨在为前端同学提供一种沉浸式的开发体验,这也是我目前以及未来业余时间会一直去维护与实践自己理论的东西。

最开始 pandolajs 是想围绕 react 去打造工程化的,但是很多东西都是在公司项目中实践完后,但由于仅是自己一个人利用业余时间维护,其实主要是自己懒,所以从实际项目中抽象出来进行开源,react 工程化的进度就比较慢。

后来公司开始搞微信小程序,为了能提供一套高效的小程序开发工作流,所以基于 pandolajs 整理实现了小程序脚手架 pandora-boilerplate-wechat, 感兴趣的可以看看我的另外一篇文章 一款小而美的小程序脚手架,让你更流畅的开发小程序 由于在公司实践的时间比较长,所以目前是使用起来也比较流畅,也是目前我觉得比较好的一个作品。

pandolajs 的实践中让我对工程化有了更深的认知(后续整理),也让我对自己的职业发展有了更清晰的规划,当然也发现了 pandolajs 最初设计中的诸多不足,所以目前这套方案中所有的 packages 都处于 0.x, 最近在参考了其他开源方案后,正在进行 1.0 方案的设计,完全重构之前的架构(严格来说,0.x 没啥架构),让 pandolajs 更具扩展性,把之前没有做彻底的事情做好,当然也会对 0.x 中的脚手架提供方便的兼容方案。

我的规划

跑远了(广告预热),回来继续聊规划,在实践中,让我对自己的职业规划更加清晰。

我一直信奉这样的信条:“技术是为业务服务的”, 脱离业务的技术是没有前途的,所以 pandolajs 的初衷就是 提高开发效率,以更低的成本,更快的节奏支持业务,一开始我只是想做一条"流水线" 但是现在我想围绕这条 "流水线" 打造一个生态,因为仅仅是一条 "流水线" 根本无法彻底的低成本高效率的支撑业务,但是这两个事情有完全不是一个量级的,"流水线" 可能经验丰富的的工程师就能完成,但是一个生态,就需要有一颗 "强大" 的心脏(内核),至少要有搞扩展性,即完善的二次开发的 API, 就目前市场上的一些方案,就是提供插件能力,或者中间件能力,要实现合理的设计,就不仅仅是丰富的经验了,更需要有更专业的设计能力,更完善的知识体系。

要达到上述的 Level, 我要做的第一步就是建立更完善,更底层的知识体系,所以未来两年的规划就是:

  1. 深入学习编译原理
  2. 加强数据结构与算法能力

说白了不在拘泥于上层 DSL 的学习,尽可能多的去修炼自己的"内功"。新建 daily 这个 github 仓库中更新我的学习计划,周日进行本周的总结与下周的计划。

不管是工程化还是生态圈,目的都是 低成本,快节奏。低成本就是要为业务的运营提供自给自足的平台,换句话说就是让自己失业,快节奏就是丰富平台中的素材(组件,功能模块,api 等等)。

要实现上述目标,仅仅靠使用已有的上层应用(高级语言,框架 ...)是不够的,我们必须具备发明上层应用的能力,编译原理提供了可能性和灵感,深入学习能让其成为可能。

复杂底层的实现,没有深厚的数据结构与算法功底无法实现高效可用的系统,这个自不用多说。

要想实现上述的目标,并参与其建设,上述能力不得不成为自己信手拈来的技能 ~~