前言
如果业务能发展得不错, 一般公司的前端技术团队都会逐渐变得越来越庞大, 人会越来越多, 团队面临的挑战也会越来越大, 作为前端团队TL, 你可能是时候思考🤔, 在团队内培养一名前端架构师, 或者招聘一位有经验的前端架构师来解决现在或者未来可能会出现的技术问题, 保持团队技术架构的稳定发展和平衡
那如何通过面试来考察候选人是否具有架构能力或者架构经验呢?
前端架构师能力模型
基础能力
- 确定架构边界的能力
- 保持架构边界平衡, 和多方达成一致的能力
前端架构师无疑也是架构师的一个子类, 所以在没有架构基础能力的情况下就很难完成作为架构师的日常工作, 对这两点, 可以从候选人实际的架构工作经历就三个阶段进行提问, 从候选人的回答中看候选人是否具备从事架构工作的基础能力
架构诞生阶段
- 是否参与了架构的设计和落地?
- 描述整体的架构设计是怎么做的, 预计分成几个阶段? 最终是如何落地的?
- 落地过程中遇到的问题, 如何解决?
一般企业中小型的业务迭代必然不存在这个阶段, 通常企业进行中大型项目启动, 会有架构设计和落地, 比如某个业务中台, 运营平台, 智能化开发, 云IDE, 或者某类业务云, 或者某个前端工程化项目等等, 通过这个阶段的提问, 可以考察候选人是否具有真实的主导或者作为前端架构师参与过某个核心项目
架构发展阶段
如果候选人并没有在架构诞生阶段介入, 例如有些候选人是参与了某个重构, 或者在架构发展到 2.0 的时候进入的, 那架构的发展阶段可以就具体的架构演进, 问题提问, 我在上一篇文章中有提到过架构发展过程中持续发生的边界渗出是导致架构最终消亡的主要原因, 因此我们需要考察候选人在处理架构边界渗出上的能力.
- 所参与的架构当时是如何运转的, 是否有遇到架构无法有效支持的场景, 如何解决
- 如果是重构, 是基于什么原因进行重构, 重构中遇到了什么问题, 如何解决
- 能说下项目架构下一阶段的演进目标么, 为何要以此为目标
类似这样的场景其实很普遍, 比如候选人入职的时候接手了一个类似运营中台的项目, 然后需要支持智能化运营, 可能原有的架构在边界上已经有渗出的情况了, 比如没有对用于构建运营页面的组件和构建系统本身做隔离, 或者构建后的资源和项目本身存放在一起, 且没有做好目录上的隔离, 无论是逻辑还是物理都没有做任何隔离, 也就意味着整个项目内部缺少一些边界, 这种情况渗出的速度会非常快, 比如随着大量的页面被构建出来, 堆积在项目服务器上, 一些耦合的逻辑导致性能和发布问题频繁发生, 又或者因为用于构建的组件和构建器本身耦合, 越来越多的运营个性化需求堆积在那里解决不了, 类似这种情况其实就是单纯依靠项目本身的内部架构堆砌产生的平衡已经无法继续维持, 如果候选人能意识到这一点并进行有效重构, 那就可以针对上述问题来了解其重构的过程, 以及重构中候选人的思考, 如何修补和改善架构等等, 是否有加固措施, 比如在原先的项目中对项目本身和 构建后产物进行逻辑隔离, 然后逐步朝着物理隔离的方向演进.
架构消亡阶段
关于这部分已经很难提出有价值的问题, 如果候选人有经历过一个架构的终结, 可以就这方面提些问题
- 如果当时你有机会重构这个架构, 你会怎么做, 如何让架构重新可用?
- 如果这个架构已经无法再维护, 但是业务上又必须持续支撑, 如何兼顾?
通过这些问题, 候选人如果能条理清晰的回答, 他如何对架构进行边界划分, 基于什么样的理由, 实际架构运行过程中, 这些边界的作用和价值, 以及如何解决边界平衡, 保持架构稳定可演进, 我相信要回答这些问题, 候选人必须具有真实的架构工作经验, 因为仅通过理论是完全无法回答这些问题的.
前端领域的架构能力
通过对候选人通用能力的考察, 一定会涉及候选人实际所负责的项目的具体架构细节, 这部分属于前端领域, 也是前端架构师能力的深水区, 如果前端架构师能力模型是一个 T 字, 那大概是这样
通用能力 -边界思维-沟通能力-全局观-相邻技术领域-谈判能力-项目管理-领导力-分享演讲写作-行业知识...---------
前端领域能力 | 前端工程(前端项目生命全周期相关的技术)
| 前端开发框架
| 前端编程语言
| 前端智能化
| 前端标准化
| ...
|
“如果把前端架构师看成游戏中的一种职业, 你的实际精力就是你的技能点, 随着你年龄增长你能点的技能点会越来越少, 但是你要相信在可点技能上只会越来越多, 所以我相信没有一个前端架构师是全能的, 能够始终将纵向的前端垂直能力都点满, 但就像我上面提到的, 前端架构师依然是架构师, 所以对于前端领域我们应该考虑自己实际的精力和学习能力有限度的点满其中一条, 当然你也可以试试全点, 不过相信我后期你肯定 pk 不过专精其中一项的人, 但是对于通用能力我建议全点, 等你过了 35 你就知道我为啥这么说了, 而且精力有限的情况下优先保通用能力, 前端领域至少保一条
因此候选人如果通过了通用能力的考察, 那就进入前端领域的考察, 可以从简历和候选人的叙述中看他走的是哪条专精, 然后就这条专精进行深度挖掘, 不过我相信面试官也不一定能对得上号, 所以这部分的面试建议, 通用能力使用交叉面试, 前端领域一定要找对口的人来面, 切忌找个前端工程架构师来面一个专门做智能化项目架构师, 比如 UI 定制, 运营平台之类的, 那样不会有任何结果, 也无法考察候选人的前端领域的真实深度.
前端领域的细节就不展开了, 这个反正面试官心里有数就行.
后话
我知道掘金上的同学都其实都比较年轻, 大多数都还在从事一线开发的工作, 像我这种快 35 的大龄码农并不算多, 实际情况是一般到了 架构 或者 TL 岗位的人, 尤其是有老婆孩子的, 有 2个孩子的, 其实也确实没什么精力写文章, 但今年其实比较特殊, 疫情经济双重打击, 其实有很多像我这样失业在家的, 突然就闲赋了, 我希望如果你也有多年工作经验, 同时一时半会也找不到工作的话, 不如静下心来写点文章, 做些总结, 给掘金增加些多元化的内容
可能比起这篇, 大家更感兴趣如何从一线开发成长到架构师, 后面我们再开一篇讨论下这个问题
本文使用 mdnice 排版