没在“初创公司”呆过(虽然前公司自称“永远都是 startup”),更没在“不选择最主流的技术栈”的“初创公司”呆过。不过个人网上的观察:
* 有些“不选择最主流的技术栈”的“初创公司”是真的相信他们选择的技术栈更适合他们的场景。至于到底是不是我不做评论。不如换个角度讲,楼主认为:Java SpringCloud,行。Go,不行。现在某公司认为:Go,行。Java SpringCloud,不行。凭什么楼主就一定是对的,某公司就一定是错的呢?或者凭什么某公司就一定是对的,楼主就一定是错的呢?为什么 Java SpringCloud 一定没有坑,Go 一定坑很多呢?或者为什么 Go 一定没有坑,Java SpringCloud 一定坑很多呢?当然楼主可能会说:Java SpringCloud 用的人多,“成熟”,“主流”,但是楼主不知道有句话讲:“真理往往掌握在少数人手中”么?这个逻辑左右都说得通。
楼主凭什么居高临下评价 Go ?楼主是 Gopher 么?楼主用过 Go 么? Golang,不吃楼主这一套!
什么楼主用过 Go ?那么楼主有没有在某公司用过 Go ?有没有亲自体验过某公司的场景? Golang,还是不吃楼主这一套!
正经地说,有很多试图解释技术和开发效率之间关系的尝试(包括一些量化的思路),但是目前没有哪个真的能服众,楼主只是相信了其中的一个流派,就是“最主流的一定是最好的”而已。我的观点,这个问题暂时还没有绝对的对与错。
* 当然还有个人的 preference 问题。如果如同第一点一样,排除了对技术的优劣判断之后,个人偏好就会成为很大的因素。云风的公司就用 Lua 硬撸 3D 引擎,Yaron Minsky 的公司就用 OCaml 写交易系统。当然他们都能拉出一大堆理由来 justify 他们的选择,但是按第一点的意思,别人不一定认。所以最理性的解释是“有个人偏好是非常正常的事情”。或者也可以用统计学解释,有 N 个技术,M 个人,每个人选一个技术,既然没有绝对的标准谁好谁坏,那就是某种随机选择,样本足够大的话不可能全选择同一个技术。
* 有些公司不仅仅是单纯选择技术栈,选择一个技术栈,同样也选择了这个技术栈背后的 implication 。一个技术栈往往 imply 了相当多的东西,比如像隔壁帖子
v2ex.com/t/795881 有人说“Java 背后的群体代表的就是不思进取,故步自封的保守派”,就是这个意思。这并不是说每个 Java 用户都是“不思进取,故步自封的保守派”,也不是说“不思进取,故步自封的保守派”该被消灭,而是如果一个 CTO 不希望构建“不思进取,故步自封的保守”的文化的话,那么避开 Java 是一个可能有效的 heuristic 。上面还有人说可以过滤培训班,应该也有这个效果,虽然我之前没想到。在有些技术的圈子里偶尔会碰到什么“用这个技术的开发效率倍儿高”“用这个技术的人都很聪明”之类的话,道理跟什么“在简历上留 QQ 邮箱的负面效果”是一样的,heuristic 而已。虽然我看大多数都逃不过草台班子定律。
* 用新技术,可以成为招聘广告的亮点!亮点!楼主说“从本站的各种招聘帖子,以前别的地方的招聘帖子发现,很多 ...”,这个“很多”可能并不真的是“很大一部分”,而只是“在楼主的视野里格外显眼”而已,因为写的技术“非主流”,所以留下的印象更深。这个道理是这样的:根据草台班子理论,大多数人的工作是比较无聊的,为了排解这种无聊,除了刷 V 站之外,使用不一样的技术(倒不一定是“新技术”,但是这种情况下新技术更受欢迎)也是一种方案(虽然都不解决根本问题)。有使用新技术的机会,那自然会成为亮点。
另外,开发者和 CTO 一样会有个人偏好,CTO 表达偏好的方式是开个用这个技术的公司,而普通开发者表达偏好的方式则是选择用这个技术的公司。依然是统计学,“非主流”技术用的人少,用的公司也少,只要不是非主流到样本实在太小的程度,没有理由说非主流技术比主流技术招人更难。
我再尝试把“样本实在太小”这个 edge case 的坑填上:我知道有一些公司用的是这类非主流技术(也许我现在公司也算?不过是大公司),这种情况可能会有另一个 buff:就是因为招聘者和求职者都难找,所以(理论上)会更加珍惜已有的机会——我实在想用某技术,但是实在找不到对应的工作,能有用这个技术的工作那简直就是奥丁下凡啊!别的我都不在乎,只要打败波兰,啊不,能用这个技术就算是成功了!