面试遇到一个掉队的软件工程架构师

我准备给团队找个架构师,上周面试了一个广州的候选人。

候选人学历背景不错,名校本、硕,毕业之后在北京的微软、中兴各待过几年,因为家在四川,毕业几年之后考虑定居时,就觉得成都不错,去了那里。数一数中国IT产业发展比较好的城市,虽说北上广深杭之外就属成都还算不错,但身处其中之后冷暖自知,跟前面其它几个城市还是相差太多,于是就在小公司之间不停地游荡。这期间,买房、结婚、生了俩娃,花钱的地方越来越多,就考虑回到一线城市挣钱,简历也因此到了我的手上。

老实说,如果是猎头推荐的,我就直接拒掉了,这种经历注定满足这边要求的概率太低,不过朋友转过来的,还是要给个面子,至少要聊一聊。

从他刚毕业时在大厂做过的事,到后来回到成都,做过的互联网、企业软件服务等项目,聊了大概一个小时,我清楚了他的情况,他也意识了自己并不满足我这边的要求,还问我,他自己也觉得后面几年在小公司之间换来换去就待废了,但并不清楚问题在哪里。

一般来说,正常的公司面试我都不会在面试完之后直接给候选人反馈的,因为不管是过还是不过,后面还是可能会有变数。不过跟他聊完之后我感触太多,就委婉地说了自己的看法。

他的问题主要有这么几个:

第一、毕业时没有在大厂获得预期的成长

当然,这也是后来他回成都的原因之一,在大厂的发展不尽如意。一般来说,大厂掐尖招人,给予好的平台、待遇,以及与优秀的人共事,一起做复杂的事的机会,大多数人都能在5年左右成为某个领域内的专家。

但他在微软、中兴各待了两年,除了开头的熟悉环境、熟悉业务和结尾的心思浮动、跳槽之外,中间也就一年时间,其实只能让他在一个领域从菜鸟变成熟手,还无法具备深厚的专业素养,比如,业务的深刻理解、将业务问题转化为技术问题的方法论、系统思考问题的方式等。

第二、从0到1的事做得太多

之前我写文章时经常会提到这个观点,从0到1和从1到100需要的能力完全不一样。让一个软件工程师从菜鸟变成熟手的最快方式是做一些从0到1的事情,因为在整个系统搭建过程中他需要考虑很多领域的问题,都不深,但整个流程做下来会对自己的工作特别有体感。而菜鸟如果开始工作就进入一个大型复杂系统中去某个环节的开发,一般来说,很少人会对自己所做的工作最终是怎样变成产品交付到客户那里这件事会有深刻的认知。

就我自己来说,在团队有员工新入职时,不管之前的工作经验如何,都会安排他做一些虽然简单但涉及链路比较长,能够自闭环的事情。通常,只要度过最初一、两个月的手忙脚乱,就会对新公司新业务的一些基本常识都能了解清楚。

但是,从0到1带给人的边际成长空间是会迅速变小的,第一次做成长很大,第二次基本就没什么价值了,再继续做下去就是完全的琐碎工作,浪费时间、精力,而个人能力几乎得不到任何成长。那要怎么办呢?要找到一个大型复杂系统的某个子领域,扎下去,做上两年。

一方面,接受规范的锤炼,做事方式从在学校或小公司时的毫无章法,到对成熟研发团队的条条框框烂熟于心。这些条条框框并不是绝对的真理,换个公司换个业务可能就得重新来,它们的价值是让我们储备足够多的工具,锻炼系统性思考技术问题的习惯。

另一方面,深度经历一个业务侧的需求是如何被架构师拆分到各个领域,各领域在需求开发、问题处理时是如何协同的。需求简单时,照着产品文档写代码就可以,当需求庞大而复杂时,就需要有架构,并让架构随着需求的增加,以及对业务的理解而迭代。了解并掌握这中间的套路,是一个高级工程师成长为专家的充分条件。

回到上面提到的那个候选人,他在大厂时没有经历到从1到N的过程,在几个小公司之间跳来跳去期间又没有那样的环境。

可能有人会问,就不能靠自己突破吗?当然有这样的人,世间最初没有大厂,现在的高手总不会是石头缝里蹦出来的。但那依然需要一个恰当的环境,比如,一些软件工程师虽然在小公司待着,但小公司业务慢慢做大,参与其中的人就会慢慢面临不同深度的业务问题要解决,在解决问题的过程中自己也会跟着突破。

第三、满足于救火队员的角色

刚开始沟通时,他充满自信,好像他现在这个公司做的一些项目真的是离了他这个架构师就得玩儿完:几十个人的软件研发团队,有时中间件出问题了,他去看;有人不了解业务背景,他来讲;有人代码出bug解决不了,他一上就搞定;有人去跟客户沟通讲不清楚产品能力,他可以;有些复杂的代码别人写出来效率低、bug多,他去优化。

他是那些初级、高级软件工程师眼中的大神、救火队长、扫地僧,是公司领导器重的技术顶梁柱,他满足于被别人需要,以及解决问题时带来的成就感,所有时间陷入这些琐碎的事情当中,没有时间思考那些作为架构师应该思考的问题,更没法取得个人成长上的突破。

以上,说完了那个候选人的几个主要问题,但只抛问题不给结论从来不是我的风格。回到“屋顶的闪闪星光”这个IP的永恒主题——软件工程师个人成长和职业选择,软件工程架构师是很多技术人的追求,那么,到底软件工程架构师是什么样的?如何才能成为软件工程架构师?下面聊一聊我的看法

第一、软件工程架构师是什么样的

对业务有深刻的洞察,具备将复杂业务问题转化为技术问题的能力,能设计满足当前业务阶段并保留未来一段时间内可灵活扩展的系统,根据系统的划分确定资源需求并排兵布阵。

第二、如何才能成为软件工程架构师

在一个领域内至少做上两年,达到高级工程师的水平,即,可以解决领域内的复杂问题,独立承担复杂模块的开发。

接下来,横向看其它域,从全局视角思考问题,并在处理问题时,考虑方案的系统性,关注上下游、异常逻辑及应对方案等。

最后,形成自己的方法论,即使脱离当前业务进入一个新领域,也可以快速熟悉,并掌握其核心逻辑。

来源:屋顶的闪闪星光

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月7日
下一篇 2022年2月7日

相关推荐