被困在技术人员工厂

2021-04-18 21:47:21

我第一次支付使用Clojure只有两年的语言发布。毋庸置疑,它是在早期的启动。

Runa背后的想法是我们为较小的在线零售商提供动态定价,根据个人购物者行为提供有针对性的折扣。在实践中,我们向任何抛弃购物车的人提供了固定折扣。通过将少量客户视为对照组,我们可以计算我们对零售商的销售的影响,并削减。我们最大的问题是说服零售商让我们控制他们的价格,紧随其后,说服他们计算的“升降机”背后的数学。

我们告诉自己,一份大合同总是即将关闭,永久地将我们的交通量永久提高。我们使用HBase作为我们的主要数据存储,因为它旨在缩放,就像我们一样。 1在未来,我们将为一位松散的联邦亚马逊供电,由独立在线零售商组成,由我们的软件编织在一起。如果我们建造它,他们会来。

但他们没有。让我们漂浮的唯一一件事是我们为eBay建造的定制产品,因为我们的首席执行官知道那里的执行官。后来,在我离开之后,同一行政行政转移到Staples,并说服他们彻底获取初创公司。我们建造的没有什么对钉书钉有用,这只是我们“创新”的能力的证据。由此产生的“Skunk Works”团队已被解散。

我的下一份工作是事实上,一个更建立的创业公司使用Java和嵌入式JavaScript建立了他们的产品,并开始采用Clojure。他们的产品是世界上所有地方的指数,通过将数百种不同的启发式应用于Web爬网数据而产生。每个条目都有一个规范ID和各种属性,如名称,地址和小时。更有趣的是,它还具有来自不同平台的等效ID,如yelp和foursquare,我们提供了一个API,它可以解决一个不完整的(或甚至部分不正确)属性集到我们的索引中的相应实体。

我们的产品可以缝合成千上万的不同数据集,只要他们有一些地理成分;我喜欢将其描述为“世界外钥匙”。不幸的是,在本体中没有多少钱。当我加入时,数据集已被用作Facebook地点的基础,作为Apple的新地图产品的一部分。这些是大合同,但世界上只有这么多的大型技术公司,甚至更少地与他们的数据进行地理组件。无论我们试图弥补与我们较小的客户的差异,我们没有估价十亿美元的途径。

我们开始提供由我们的数据提供支持的服务。在内部,这呈现为缺点,而不是证明我们数据内在价值的枢轴;一旦人们看到我们可以用数据做些什么,他们肯定会有自己的一些想法。我们的第一个客户是Adtech公司,希望为移动广告做更好的地理目标。我们在数字广告的背景下聘请了销售人员和营销高管,当销售开始脱掉我们雇用更多。即使我建立了为您的数十亿日广告印象和定制的近似数据库为我们的Adtech Partners提供了电源的服务,我告诉自己所有偶然;我们的业务是数据,而不是广告。

当然,我错了。该公司的广告方面是所有增长发生的地方,我们的产品方向是帮助他们接近交易的任何东西。但我不是唯一一个缓慢的人,以承认这一事实。在我的退出采访中,在我发出通知之后,我告诉他,他应该更直接地与每个人的重点永久转移。他告诉我,我刚刚停止告诉自己:广告是一个临时转移,我们将在太长时间恢复到底层数据。然而,在遵循的几年里,事实上变得越来越关注基于位置的广告,直到它最终与Foursquare合并。

当一个创业者拿起风险投资时,其奇异的目标变得增长;它将达到十亿美元的估值或死亡。随着这种增长,具有更大的技术挑战。其中一些是显而易见的:更多的用户不仅需要更多的机器,而且需要更复杂的基础设施。 2其他不太明显:随着UserBase的增长,每个人都在我们软件的业务逻辑中越来越多地抽象。要处理第一个挑战,我们必须具有技术敏锐。要处理第二个,我们必须深入了解我们的业务领域。

这意味着只要初创公司继续增长,它的工程师就可以(并且必须)继续改善他们的知识和敏锐。但大多数初创公司失败了。其中一些失败是因为公司无法跟上自己的增长,但这些都是例外。常见的,无聊的失败原因是启动根本不断增长。

对抗停滞不前,工程组织可以有两个反应:他们可以试图帮助重塑公司,或者他们可以继续为必须,不可避免的增长做好准备。在Runa,我们选择了后者。

起初,工程领导层采用了有希望的,理解的技术(Clojure!HBase!),这将使他们下行必要的杠杆。但是一旦他们发起,并且停滞不前,那么准备就是需要不断准备。然而,任何早期的技术错误都令人遗憾的是,被烘焙了。试图重新审视他们,建立更好的东西,当增长终于来了,我们会挡住我们平脚。

我在工程机构进入其防守蹲伏之前几个月加入了Runa。我太过于经验,太分散了3个问题。每天我们都玩jenga,尝试尽可能少地追逐现有的代码库。后来,当我意识到我到目前为止的任何工作都不为我所做的任何工作都不自豪,我开始强大地推动重建系统的关键作品。

几个月后,我被告知要丢弃它或留下三周的遣散费。我接受了遣散费。

当然,即使我已经得到了我的方式,也没有任何改变。我们所有人都仔细忽略了实际问题,这就是我们的商业模式并没有真正工作。我们的产品和定价模型都需要我们未来的客户所需的无疑,但我们都没有看到这是我们解决的问题。我们在商业模式下游;我们的工作只是等待和准备最终的成功。

我加入了事实,因为我发现问题空间令人着迷,但它的大部分都已解决了我加入的时间。大约六个月后,领导力开始承认我们的商业模式,同时成功,不会让我们估值十亿美元。所以开始我的血统。

我想证明我已经了解了我的课程;如果目前的商业模式不起作用,我会帮助他们建立一个新的。我建立了消耗原始数据的服务,以及为客户提供处理结果的服务器。我参加了销售会议,写了设计文档,并煞费苦地分析了分析的包垃圾,以证明延迟尖峰在其系统中其他地方发生的合作伙伴。

最后,我了解到我不喜欢广告业。当一个品牌想要经营一个数字广告活动时,他们就前往一个机构,这是负责将他们的预算支出最大的效果。该机构然后去了一个需求侧平台(DSP),该平台(DSP)负责对交易所的个人广告印象进行实时出价。要告知这些决策,DSP将像事实一样的公司进入公司,这可以将手机的当前和过去的位置蒸馏出与广告系列相关的二元特征。

至关重要的是,当您没有在线销售某些东西时,几乎不可能衡量数字广告活动的效果。这意味着该机构几乎可以说,只要它关闭交易即可。反过来,DSP又出售了他们认为有助于机构的交易。在这个链条的尽头是事实上,销售我们认为的任何东西都会吸引销售人员诱人的销售人员。

我以为我已经成为产品专注,准备解决任何有助于公司成功的问题。事实上,我只是真正关注技术问题。一旦他们在很大程度上得到解决,它就会变得越难以忽视我的矛盾,因为产品实际上是什么。最终,我离开了。

我从这个时候学到了两节课。第一个是个人的:我是,在内心,技术人员。我喜欢概括,摘要。虽然我相信了解软件周围的背景是至关重要的,但是当上下文是其他人的软件时,我最开心。

第二课更广泛,而且不太明显:我们的行业旨在培养像我这样的人。

这令人惊讶,因为它似乎很清楚地反对我们自己的兴趣。在几乎每种情况下,公司都失败了,因为他们建立了错误的东西。除非您的客户自己是工程师,否则我是错误的人的帮助。您希望有人在系统的周边舒适,他们希望了解竞争景观,愿意与客户交谈。您想要产品工程师。

但考虑我们的标准面试问题:数据结构,递归和计算复杂性。当我看到有人认为这些不反映“真实”的日常软件任务时,它总是感到有点奇怪;我一直在写递归函数。但这是抽象的结果;当您尝试通过一组可能的数据类型概括时,任何特定数据类型都可能是一个简单的嵌套查找变为递归。

同样,我已经看到它认为,说,O(log n)和o(n)之间的区别并不重要,因为实际上n往往足够小。对于某些域来说,这可能是真的,甚至可能是大多数域,但如果您正在构建一个通用工具,您必须专注于病理案件。

当然,其他人将争论这一年度CS材料是我们所做的本质。这肯定是我在谷歌时的态度; 6由于他们现有的员工将避免编写JavaScript的任何长度,他们决定将有前部经验的人持有较低的技术标准。这些雇员被广泛被视为二等级;只允许的人因为他们愿意做其他人想要的工作。

但如果我们想聘请产品工程师,那么我们应该问哪些问题?考虑到我们行业的范围,鉴于我们的精确产品空间,只考虑候选人是不切实际的。同样,期望我们在候选人的先前产品空间中拥有专业知识是不现实的。我们缺乏共同的词汇,对差别的差别很常见,从中间林分开良好的设计选择。

因此,我们继续搜索街灯下的钥匙;他们可以在任何地方,但这就是光线的地方。如果我们幸运,我们雇用的技术人员也将拥有使人性化,有用的软件所需的所有其他技能。

这意味着即使您不是技术人员,您也必须学习如何假装。 7,这让我们回到了开始,当我的第一个Clojure工作很明显,只有两年的语言被释放,就会在早期启动。

大多数新技术,如果他们完全被采用,请遵循熟悉的道路:首先来到业余爱好者,然后雇用那些业余爱者的公司。当公司几乎没有进程采用新技术时,第二步是最简单的;换句话说,早期启动。这种现象周围的标准叙述是某些技术简单地更加强大,但只有初创公司才能达到足够的才能雇用知道如何挥动它们的人才池。

但新技术8没有权力;为此,他们需要一个社区,文件和繁荣的辅助技术生态系统。他们有什么是潜在的,这在启动中的潜力和早期采用者共鸣;或许他们可以随着时间的推移,一起成长。

正如许多人所说,这不是建立公司的理性战略。然而,培训新技术人员是一种现象的方式。叶鹿尽管是最快的方式来学习为什么围栏存在的是将它撕下并看看会发生什么。

从这个角度看,似乎不合理;在达到具有任何存在的技术风险的规模之前,大多数初始启动失败。他们可以提供其工程师的唯一保证福利是发明自己挑战的自由,并通过迭代失败来学习。 9如果启动失败,则没有损害。如果启动获取牵引力,工程师可以应用他们的新发现智慧。

这意味着初创公司尽管他们不成熟,但由于这种不成熟,他们不采用新技术。这推动了不断流失的新奇和过时,这可以放大技术专家技能集的重要性,这使得启动是采用新技术的启动。

这款飞轮一直在旋转很长一段时间,并不会仅仅因为我指出,我们指出我们与技术进步的新颖性。希望我们能够减慢它,因为我相信它导致真正的伤害。

通过将抽象引入我们解决的每个问题,我们将自己与我们的工作最终如何偏信。我们告诉自己,我们正在建设锋利的刀具;如果我们让他们更安全,他们就会对除了传播黄油以外的一切。我们浮动到我们创造的内容的影响,将它们视为进展的不可原谅的后果。

这是真的,我们无法将我们的价值编码为通用软件,但我们不仅仅是雾化技术人员,我们的世界并不受到我们曝光的界面的限制。我们为我们创造的集体分享了一个集体责任,并能够集体起到这一责任。

但是,在实际术语中,集体责任的信念是什么意思?它需要什么行动?老实说,我不知道。我所知道的就是我们不能永远留在街灯下面。在某些时候,我们必须在黑暗中看到那里的东西。

在一个人的扭曲中,没有人惊喜,我们使用它的方式永远不会缩放。支持在关键空间上的线性扫描,在键盘中的连续范围内的HBase分区。由于我们想扫描给定日期的事件,因此我们所有的密钥都开始使用时间戳。这意味着每个写入时间段都专注于单个碎片,这会驱动HBase以在徒劳的尝试中不断重新分配其碎片,以便同样地分配负荷。我们的HBase集群始终在跌倒的尖端上。 ↩

即使在您的核心服务可以水平划分的非常罕见的情况下,处理他们生成的增加的数据量将在您的系统其他地方引入复杂性。 ↩

我的第一年符合突破大多数不相关的抑郁症,以及软件开发的一步前方的途径完全反映了我生命中的其他一切。 ↩

这是2010年的回归,但如果任何事情都大幅改变,我会感到惊讶。 ↩

我知道几种方法来跳过这个手套,但他们都没有普遍上诉。如果有人在一个早期的启动凭借你的奉献,他们往往会跳过直接,以确保你是“文化合适”。然而,这仅适用于拥有强大网络的候选人,他们想要为一个小型启动工作,谁适合有问题的文化。同样,您可以简单地找到自己的公司,但作为创始人首先在商业和投资者之间的界面中首先让您首先放置产品和用户之间的接口始终在列表中进一步。 ↩

初创公司采用的利基技术几乎没有例外,新的。格雷厄姆的丽水福音派没有导致普遍采用普通的丽斯普斯,它导致了克洛康的采用,这是一个仍然充满潜力的全新的Lisp。 ↩

鉴于我们目前的情况,告诉初级工程师只能使用无聊技术,实际上可以被描绘为老世代工程师拉起梯子。他们必须通过失败学习,为什么新一代不能这样做? ↩

我乞求当某些东西或未用于读取伦理上的单本书时的东西或未用于读取一本书时,每个认为软件许可证都可以描绘的人。 ↩