本文主人公从事软件开发近 20 年,既在大公司待过,也在小公司待过。在他的职业生涯中,发现了很多跟技术选型相关的各种问题:应该选新潮的技术还是无聊的技术?应该搭建极客范的技术栈还是使用基础的工具?应该用开发者喜欢的还是维护起来省事的?他对此作了深入的剖析,希望能帮到你。(多图流量预警!)

技术架构师问的面试题复杂吗(我是一名技术总监)(1)

我叫 Dan McKinley,坑里的那个人就是我。

技术架构师问的面试题复杂吗(我是一名技术总监)(2)

我现在在一家叫作 Mailchimp 的公司上班。更早之前是在 Etsy,因为在 Etsy 待的时间比较长,所以后面会更多地提到我在这家公司的经历。其实在离开 Etsy 之后,我也在其他几家公司干过。

我既在大公司待过,也在小公司待过,还创办过自己的公司。在经历了这些公司之后,我注意到了一些现象。

大公司有自己的做事方式,他们提供了“沙盒”一样的环境,在这样的环境里,会有人满足你的需求,帮你答疑解惑,让你感觉受到了“百般宠爱”。

但我也经历过几个过渡时期,在这些过渡时期,需要自己解决一些棘手的问题。

首先,如何选择合适的技术?

另一个我比较关心的问题是:如何让开发人员开心地使用这些技术?因为我自己也是开发者,所以这一点对于我来说比较重要。如果有可能,我会尽量让自己过得开心些。

技术架构师问的面试题复杂吗(我是一名技术总监)(3)

如果你问开发人员什么东西会让他们开心,他们通常会说:“如果可以使用 Clojure 作为开发语言,我就会很开心”。我不否认,当他们说这些话的时候,他们脑子里浮现的应该是曾经最让他们感到兴奋的经历。

但我相信他们所描述的这种状态是他们所能达到的最高的精神境界。

我以前也喜欢这样。

技术架构师问的面试题复杂吗(我是一名技术总监)(4)

例如,Etsy 的早期应用程序是用 PHP 开发的,而开发这些应用程序的人当时刚好在学习 PHP。

但我却花了好几年时间尽量不去碰触这些 PHP 代码,我甚至尝试使用 Scala 和 MongoDB 来重新开发这些服务,因为我认为它们才是更好的技术栈,可以解决所有的开发效率问题。但事实上,没有任何迹象表明我的做法是对的。

现在在网上还能找到我在这段时期所做的一些尴尬的事情,你可以把它们搜出来,然后用它们来取笑我。现在的 Etsy 员工还在拿这些东西来调侃我。

技术架构师问的面试题复杂吗(我是一名技术总监)(5)

后来我创办了自己的公司,用上了 Clojure。虽然,这家公司现在已经不在了。但请不要多想,公司倒闭并不是因为使用了 Clojure。

不过我还是很乐意分享这段经历,毕竟我也是个体验过函数式编程乐趣的人。

我并不是一个容易沉迷于开发技术的工程师。我的其他演讲很少是关于工程技术的。

技术架构师问的面试题复杂吗(我是一名技术总监)(6)

我还没老到或者脾气暴躁到成为那样的人。但通过总结马斯洛需求金字塔理论,我也有了自己的看法。

简单地说,马斯洛需求金字塔就是指在满足更高层次的需求之前,需要先满足较低层次的需求。如果你连肚子都填不饱,哪里还有心情吟诗作对?

技术架构师问的面试题复杂吗(我是一名技术总监)(7)

虽然这个比喻不一定非常贴切,但在软件开发领域,这是事实。如果你还在忙于讨论要使用哪个数据库,怎么可能有时间去担心整个产品的蓝图?

幸运的是,在我经历的一些场景中,基本需求都得到了满足,所以我希望也能让其他项目进入这样的状态。

要达到这样的状态,首先要集中注意力。人类专注细节的能力是有限的。

技术架构师问的面试题复杂吗(我是一名技术总监)(8)

我的朋友 Andrew 总是穿同一牌子的黑 T 恤。他认为,如果把花在挑选衣服上的精力囤起来,就可以把它们花在其他更有意义的事情上。

我不知道这样做算不算缺乏品味,但我觉得是有意义的。

技术架构师问的面试题复杂吗(我是一名技术总监)(9)

接下来我要谈谈我的想法。假设我们手上有一些代币,但数量有限。

这些代币代表了我们的创新能力或解决困难挑战的能力。在一家公司的早期,我们可能有三枚这样的代币。

技术架构师问的面试题复杂吗(我是一名技术总监)(10)

那么你的公司会怎么做?

点击了解更多“阅读全文”

,