20个月,2K小时,200K€损失。 有关弹性和沉没成本谬误的故事

2021-01-04 16:14:26

TL; DR:很难确定我们是刚毅还是因为沉没的成本谬误而下跌。

我在目前的项目上工作了大约20个月,花了2K个小时,而由于不做其他事情而“损失”了20万欧元。该项目尚未准备就绪。这是背后的故事。

在2018年初,作为一名员工工作了10年以上之后,办公室政治逐渐传到我身边,我厌倦了浪费会议时间。我真的很想辞职,成为自己的老板,并对我周围的世界产生更大的影响。

我曾经是技术主管/团队经理/项目经理,薪水非常好,自由度很高,有一支很酷的团队与我一起工作,而且抱怨的并不多。我可以随意安排自己的工作日/工作周,从事有趣/具有挑战性的项目,而我的团队真的很酷(好,我已经说过:p了)。

不过,我还是愿意全力以赴,按照自己的意愿尝试其他事情。

我有一个同事/朋友,他也愿意创造产品。所以我们开始一起集思广益。有一阵子,我们只是试图找到这个主意(众所周知的反模式,对吗?)。最终,我们确实找到了我们认为值得追求的两个想法。

一是关于为学校创建数字解决方案,以帮助他们处理餐单,付款,收据等。我们与自己的孩子所观察到的结果使我们确信,有非常实际的问题需要解决。比利时有一些竞争对手,但竞争对手不多,并且在我们这个国家还没有出现。我们也有一个非常不同的角度。

第二个想法是为餐厅创建一个数字平台,他们可以在这里发布/自定义菜单,向客户提供反向渠道(例如向他们发送促销信息),提高保真度等。

我们开始开发针对学校的产品。作为两个全栈软件开发人员,我们在这方面没有太多麻烦。我们去了几所学校讨论。我们遇到的人非常热情,但担心他们无法获得所需的资金。此外,鉴于学校是公共部门的一部分,这意味着我们必须进行招标。我并不太害怕,因为我在栅栏的另一侧花费了很多时间。发起公开招标。我们坚信值得尝试。过了一会儿,我的朋友开始怀疑,并最终在没有告诉我的情况下放弃了这个项目。我一直努力工作,但意识到我独自一人在那艘船上。笨蛋我很失望。

之后,我们与另一位也有兴趣加入我们的同事进行了讨论;创造了新的动力;我以为三人组会有更多成功的机会。我们决定放弃第一个想法,并选择第二个想法。这次我们走得更远,并被一家新兴的孵化器所接受,这可以帮助我们走得更远,制定业务计划等。这个想法经过几次修改,但我们确实开始了开发。然后,不幸的是,这个故事又重演了。开发花费的时间比我的合作伙伴想象的要长,潜在的客户没有立即被说服。我的合作伙伴很快就开始怀疑我们是否能够实际销售该产品。在我仍在努力前进的同时,有意无意地,他们的动力和参与程度实际上接近于零。最终,我意识到他们已经不在了,并且也放弃了这些想法。我自己的动力下降了。很难吞咽;我感到失望。再次。我想一旦Covid发行,第二个产品就会大受欢迎,但是当时与我们讨论过的人并不感兴趣。他们害怕可追溯性,并倾向于能够避税(开玩笑:p)。我们永远不会知道!

无论如何,我决定尝试一下我的另一个想法:改用自由职业。我的目标是腾出一些时间,同时保持大致相同的收入水平。另外,我认为咨询会帮助我扩大视野。因此,在2019年1月,作为一名员工工作了10年以上之后,我休了一年假并开始了我的自由职业(https://developassion.be)。它不太冒险;最糟糕的是,它会惨败,而我会回去找老板。我确实与我的第一个客户(一家位于比利时的FoodTech小型创业公司)签订了合同,而且我很上进。几周后,梦想变成了一场噩梦。我尽力了,但是没有点击。我不喜欢这种氛围,我的客户对我也不满意。太紧张了三个月后,他们让我离开了,这真令人沮丧,而且有点吓人,因为那时我还没有备份。他们仍然还必须支付我的最后发票;我想我永远也看不到这笔钱^ _ ^。

发生的事情是,他们想要一个大声喊叫,发布公告等的领导者,但我一直是比较安静的人。更专注于创建共同的愿景和团队合作,而不必试图成为会议室中更大声的声音。无论如何;我想我的风格与他们的公司文化不匹配...

寻找另一个客户并不难;我从四月底开始为第二个工作,并在那里呆了几个月(长话短说,那里的情况要好得多)。

我一直在考虑创造自己的产品。这似乎是对我真正有意义的唯一途径。我今天仍然坚信这一点。作为员工或自由职业者,我只能为他人的梦想做出贡献;当然,薪水不错,但是不能扩展,这意味着我仍然在别人的“摆布”下。我对此不再感兴趣。

在2019年,我还在写书(https://www.amazon.com/Learn-TypeScript-Building-Applications-understanding-ebook/dp/B081FB89BL?tag=developassion-20)时间和精力(大约一年)。

2019年5月,我通过我的一位前同事会见了某人。她的丈夫是一位商人,正在寻找合伙人开始新的生意。当然,我很感兴趣。长话短说,他向我介绍了该项目,并向我介绍了未来的第三位联合创始人。他们已经在该项目上工作了大约一年,需要一名CTO。他们以前的伴侣已经离开。

目的是创建一个SaaS产品(B2B),以帮助公司改进会议。听起来不太性感,但是我从经验中知道,如果处理不当,会议对于所有相关人员来说都是浪费时间。因此,尝试挑战现状对我来说很有意义。

另外,我们团队的第三位联合创始人是一位精瘦的教练,他的潜在客户名单很多,这使该项目更具吸引力。在不从事IT工作的情况下,她仍然设法创建了自己的方法和工具,并与客户一起介绍并使用了该方法和工具,并取得了巨大的成功。因此,这不仅仅是一个想法;有一个真正的问题要解决,人们愿意为此付出代价。不用说,我很快就加入了他们。

由于我已经与第二个自由职业者客户协商了一份兼职合同,因此我每周可以腾出大约2天的时间来从事SaaS启动项目。数量不多,但这只是一个开始。我很紧张,但也很激动。一直持续到八月底。

在最初的几个月中,我深入研究了现有的代码库,在技术堆栈中找到了自己的方法,没有太多困难,进行了差距分析,并帮助建立了清晰的功能,技术和功能。该项目的安全路线图。

该项目之所以使用CouchDB,是因为其想法是尽早获得脱机优先支持以具有强大的差异化功能,因此我接受了这一点,因此我们向前迈进了一步。

对我而言,很快就需要(几乎)从头重新创建该项目。现有代码库存在太多问题,它比任何东西都更像是概念证明。我们分阶段进行工作,以避免只是丢掉所有东西。事后看来,这是一个错误。

因此,在2019年5月至2019年7月之间,我们遍历了用户故事,完成了这些故事,创建了故事地图,设计了路线图并阐明了MVP的范围。我创建了一个Wiki,将代码迁移到monorepo,创建/清除了积压的订单,等等。

在7月到9月之间,我从事不同的工作:构建系统,Docker / docker-compose,持续集成,身份验证,国际化等。

我们还带着拖车去了法国,这是我们上一次同盟前的世界冒险,但这是另一个故事!

9月,我开始全职从事该项目。这对我和我的企业来说都是冒险的选择,因为这意味着我的成本保持不变的同时几个月都没有任何收入,但是我希望能够通过SaaS项目更快地发展。我对我们取得的进展如此之少感到沮丧。

我们希望能够在2019年底进入市场。不幸的是,我们没有成功;离得很远。

在9月和12月之间,专职从事该项目的工作确实感觉非常好。我真的可以专心于此,按照自己的意愿进行工作(最后!),感觉我们正在取得良好的进步。我负责发布自动化,创建了生产基础架构(切换到Kubernetes,尝试了AWS,并最终决定使用DigitalOcean),实现了HTTPS支持,基本搜索,面包屑,注销,创建了测试数据集,CLI等。 。

去年12月,我的有关TypeScript的800本书(砖头?)终于出版了,所以我的负担减轻了,我的家人有更多的时间……以及SaaS项目。

不幸的是,我们只是在12月才开始在会议屏幕(主要和最复杂的屏幕)上工作。为时已晚,但是我们没有走得更快。

那时,我开始对我们的方法/效率产生怀疑。我尽力了,但是一切都变得如此缓慢。同时,我正在阅读有关其他人花费1-3个月并发布他们的产品的推文。我们做错了什么?我找不到答案。

到2019年底,我已经在该项目上花费了大约1000个小时,这意味着,由于机会成本,我已经损失了大约10万欧元(我本可以通过咨询获得)。尽管如此,我还是决定让自己的声音微弱,然后集中精力向前迈进……我坚信一切都是值得的。

到2020年1月,很明显,我们前面的路还很长。积压中还有很多要解决的问题(主要功能,错误处理,主要安全问题等);因此我们将截止日期推迟到2020年6月。我的同事们更加乐观,但是现在我有了一些关于过去/实际步伐的数据,对我来说显然会花更长的时间...不过,我们还是尝试了一下,给自己施加正压力

同时,我试图找到一位每周接受顾问1至3天但未能找到/说服一位顾问的客户,因此我不得不再次工作一半的时间作为一名雇员,这要归功于我的育儿假。

我的士气受到重创,因为我没想到必须回到以前的雇主那里。当我这样做的时候,我失去了状态,团队,角色等。我感觉像在往后爬,寻求帮助。

在那个地方,我成为了处理复杂技术问题的消防员。这很具有挑战性,但让我感到非常沮丧,因为我喜欢与团队合作,并且发现自己一年中的大部分时间都独自工作。一旦Covid打败了我们所有人,情况就变得更加糟了。尽管我不想抱怨;它把食物带到桌上,我的家人对此表示赞赏,这对我来说并不比对其他人那么糟糕。

紧接着,我尝试了不同的方法使公司保持生存。但这并没有多大帮助……我竭尽所能,抑制了空闲时间,游戏和其他东西。我是一台机器。我确实尝试保持良好的平衡,但是Covid在这方面根本没有帮助。我仍然设法在每周花些小时的时间旁边玩一些棋盘游戏;-)

在1月到6月之间,我们在SaaS项目上的功能进展甚微。一切都变得缓慢而艰难。我开始怀疑自己的技能以及处理事情的方式。在缩小范围和专注于本质方面,我变得越来越“激进”。仍然,我不想忘记代码质量。我并没有太努力,但不能接受在那方面做得太少。取而代之的是,我主张放弃/撤消非必需的功能,例如脱机优先(已经使我们花费了整整一个月的时间)以及移动支持,而这些功能我们肯定可以一开始就不用依靠。

我们意识到我们产品的UI / UX确实很差,还不足以令人信服。特别是对于会议屏幕,这是最复杂的屏幕。我们决定雇用UI / UX设计师。这花了我们5个工作日3K欧元,这是合理的,但是集成新设计迫使我们重新设计系统的不同部分(例如,用Tailwind替换Angular Material,创建我们自己的主题,重构数据模型等)。 ,这又使截止日期离我们越来越远……我们花了两个多月(时间),但影响确实是积极的(即使我们在过程中很晚才完成)。这显然是一个好举动。

到2020年6月,我们的MVP还差一点呢?我们仍然无法完成会议屏幕,还有很多事情要做。所以我们又往后退了。这次到2020年9月。

整年以来,由于上下文切换,我们浪费了很多时间,我认为这是最浪费我们生产力的原因。最后,我在每月的星期一/星期五+ 2个星期三进行SaaS项目,并且不得不在一周中切换非常不同的任务,这并不容易;特别是士气。

紧接着,我的联合创始人(与我一起开发产品)在整天中都需要大量支持。在开始这个项目之前,他已经停止编程很多年了,所以这对他来说很难。这增加了上下文切换开销。为了帮助他前进,我不得不停止每天要做的任何事情,这使事情变得更加困难。

当然,那只是故事的一部分;我的联合创始人也是拥有最丰富的业务/企业家精神/市场营销/销售经验的人,并且拥有令人印象深刻的网络;所以他也有自己的长处。

不过,我仍然需要解决每一个技术问题,对所有问题进行故障排除,处理补丁程序管理,错误修复,安全性,文档,积压管理,预测等。这很多,并且没有帮助我们加快产品上市时间。

NoSQL数据库使我们浪费了大量时间,对我来说,很明显,由于离线优先的思想,坚持使用它是一个错误。无论如何,还有其他解决方案可以实现这一点。到那时,我们已经将离线状态推迟到更高版本,并且我们的数据模型是高度相关的。没有逻辑上的理由可以保留它。考虑到所有操作的复杂性,这只会使我们放慢速度。

尽管如此,我们还是决定坚持下去,认为切换到经典RDBMS所需的工作太重要了,并且使我们退缩得太远了。我真的不知道哪一种情况更糟:浪费更多的时间来重新设计更好的东西,希望最终节省时间,或者在功能上步履蹒跚,冒着保持缓慢的风险……我们选择了后者,但是我不知道如果是最好的。

从那时起,我们就非常努力地添加授权,为不同的概念定义状态机(因为会议的生命周期对我们完成工作至关重要),处理验证以及应用程序中的各种功能(例如富文本格式)编辑,pdf导出等。但是MVP仍然不存在。而且我们已经将其缩减为基本要素。

同时,我公司的银行帐户继续像奥拉夫一样在阳光下融化。随着几个月的过去,人们的疑虑开始越来越多。我们在某些方面取得了良好的进展,但是感觉非常缓慢。

2020年10月左右,我们开始寻找资金选择。我们考虑过要获得一笔贷款,其中50%由欧洲投资基金支持,也许想从我们的国家/地区获得资金,我们与银行会面,为该地区的资金做准备,等等。但是我们没有还没有获得任何保护。

对于我们来说不幸的是,由于Covid的原因,我们很乐观的客户(医院)显然不准备释放时间来集成我们的解决方案,这意味着即使我们为他们准备好了,他们也不会为我们准备。因此,我们必须考虑其他目标并重新评估我们的范围。这使我们想到了一个“下一个”版本,其中包括足以说服其他客户购买我们的解决方案的版本。但是按照我们目前的步伐,该版本将推动我们迈向2021年年底。假设我们继续半场工作。

问题是,鉴于我们对进度和市场的不确定性,我们开始考虑其他引导方式。现在,我们正在考虑先从服务模型开始,然后再切换到SaaS,以获取一些时间并使我们继续前进。但目前我们只是在集思广益。一切仍然很模糊。

而到了2021年初,我们又投入了一千多个小时,因此现在已经“损失”了约20万欧元,因为我最终仍在从事此项目,而不做其他事情……并且使用的产品仍不准备很快进入市场。

我现在已经花费了2K个小时来从事这个项目,感觉非常好。当我想到要为此付出多少努力时,我几乎感到as愧。也许很正常,也许不是。我确实尽力而为,但是有时候我感觉自己一无所知,也不擅长做我的事情(您好,冒名顶替综合症,我很想念您:p)。我已经花了很长时间工作,每天晚上/周末都在努力使事情前进,但是仍然太慢了。

至此,我公司的银行帐户显然处于红色区域。这不会持续六个月,而且我的压力水平一直很高(即使我仍然设法微笑并保持镇定)。我会继续半场工作,今年可能会继续工作半天。我希望摆脱所有这些,能够将100%的时间和精力奉献给该项目,但我们仍然没有。这条路漫长而黑暗,现在无疑存在疑虑。

保留NoSQL数据库的决定也许是错误的决定。也许上下文切换确实是杀死我们的原因。也许我不够好。也许我们没有专注于正确的事情。也许我太在意代码质量。也许我应该在一年前退出。也许我们需要一个额外的开发人员。也许吧,也许吧。

不过,我的一部分还是想继续前进。首先,因为我仍然对我们的团队充满信心,并且相信该产品确实有意义,并且可以真正帮助团队和团队。组织的工作效率更高。其次,因为我仍然有大量的精力,而且我有韧性。我只是讨厌放弃。最后,可能是因为我已经投入了很多时间/精力,并且觉得如果我现在辞职,那将是徒劳的。

在我的所有疑问中,我损失了很多钱,在我面前做了很多工作,还有很多不确定因素。 我感到陷入困境。 结束这一点意味着输掉比赛; 也许让我错过重要的事情。 另一方面,继续下去可能意味着陷入沉没的成本谬误,最终损失甚至更多。 我很难知道。 没人知道。 两种现实都是合理的;-) 抱歉,我撒了谎。 实际上,这篇文章没有结论,也没有任何直接的问题(除了那些无休止的问题一直在我的脑海中反复出现),但这就是我的故事。 这不是全部,而是简短的版本。 让我感到奇怪的是,在2020年,我也花了很多时间写博客。 ......