我的失败,并不是因为选择了MVVM。我失败,是因为我固执地捍卫一种模式,而不是一个正确的决策。创业公司的面试,不会奖励那些追求“完美架构”的人。它真正奖励的,是审时度势的判断力。如果你看完这个故事,心里觉得不太舒服——那就对了。那种不适感,恰恰是创业公司面试想要制造的感觉。
那场面试,一点儿都不像面试。
没有八股文,也没有“请自我介绍”。只有一张桌子、一块白板,以及一句像随口聊天般的话:
“我们来设计一下App的第一个版本。”
听起来似乎很轻松。但我一点儿都没能轻松起来。
创业公司的面试,最让人措手不及的地方在于:它从来不会告诉你它到底在考你什么。它就坐在那儿,假装这是一次普通的讨论,然后默默地观察你如何思考。
条件反射式的回答
我们选了一个很简单的页面,没什么复杂交互。我抬手画了个View,又画了个ViewModel,然后像所有iOS开发者一样,说出了那句熟悉得如同肌肉记忆的话:
“这里我们用MVVM。”
面试官点点头。停了一秒。然后问:
“为什么用MVVM?”
语气不凶。也不质疑。就像纯粹出于好奇。
但就是这种“纯好奇”,反而把我按在原地动弹不得。
我冻住了
我当然会MVVM。我用它用好几年了。我拿它上线过App。我在Code Review里还替它吵过架。
可那一刻我突然意识到一件很不舒服的事:
我从来没有被逼着真正解释过它。
我的脑子像在搜索一个“听起来不像抄博客”的理由,结果搜出来的全是空白。
为什么这问题在创业公司面试里这么狠
大厂通常问你“你会什么”。创业公司更爱问你“你为什么这么做”。
他们不在意:苹果示例代码偏MVVM;推特上大家都推荐MVVM;你上三份工作都这么写。他们只关心一件事:
这个选择,是在帮我们快点上线,还是只是在让你自己安心?
于是那一秒,MVVM突然不再是“显而易见的正确答案”。它变成了一种需要被证明的成本。
我开始说话(然后开始错)
我张嘴了。而这往往是灾难的开端。
我开始抛出那些熟悉的词:
“关注点分离”“整洁架构”“可扩展性”
面试官没有打断我。这在创业公司面试里通常不是好事。
因为那种沉默经常意味着:
“听起来像背的。”
我忽略的上下文
这不是一个成熟产品。这是V1。
他们脑子里想的是:以“周”为单位上线,而不是以“月”为单位;可能被推翻的功能;用户反馈回来之后需要大改甚至重写的代码。
而我在干什么?我在为一个“可能永远不会到来”的未来,提前搭架子、堆层次、抬成本。
我那次防卫的不是系统,而是自己的习惯。
他们真正想测的是什么
他们不是反MVVM。他们测的是:我有没有判断力。
他们可能更想听到接近这种话:
“第一版我会先把逻辑放在ViewController里。如果逻辑开始膨胀、或者测试变痛苦了,我再抽ViewModel。”
这个回答背后暗含了几件创业公司非常在意的能力:
你有产品思维(先上线再优化);你有成本意识(不过度设计);你不怕重构(知道什么时候该拆)。在创业公司,这些比“画得干净的架构图”更值钱。
资深开发者的陷阱
经验有时候会害你。
在大代码库待久了,模式会变成一种“负责任的信仰”。而选择简单,会让你本能觉得“这很不专业”“这很危险”。
但创业公司看法不一样:过度架构会拖慢团队;多一层抽象就多一层摩擦;“很干净”的代码如果上线晚了,仍然是错的。
那次面试之后,我怎么改了
我现在准备这种题,会换顺序。
我不先谈架构。我先问问题:
我们要多快上线?这个页面未来变化概率大吗?谁负责维护?我走了以后谁接?什么是“最简单但不会害我们”的方案?
只有这些问题有了答案,我才决定MVVM到底值不值得上。
最关键是:我会练习把这种判断说出来。因为创业公司面试考的,不是“你知道什么模式”,而是“你能不能解释你的权衡”。
那句能救命的一句话
如果能重来,我会这么答:
“MVVM在逻辑变复杂之后很有价值。在那之前,我会先保持简单,等它开始让人痛了再重构。”
这一句话,比任何花里胡哨的架构图都更显高级。
最后
我不是因为选了MVVM而失败。我失败,是因为我在捍卫一个模式,而不是捍卫一个决策。
创业公司面试不奖励“完美架构”。它奖励的是:判断力。
如果你看完这段故事觉得不舒服——很好。那种不舒服,正是创业公司面试想制造的感觉。
