写点什么

我辛苦创业 20 个月,却亏了 140 万

  • 2022-04-29
  • 本文字数:4858 字

    阅读完需:约 16 分钟

我辛苦创业20个月,却亏了140万

本文最初发布于Sébastien Dubois博客,由 InfoQ 中文站翻译并分享。


真的很难知道我们是对困难有韧性,还是因为沉没成本而坚持。

 

我已经在当前的项目上工作了 20 个月,花费了 2000 个小时,并因此而错过做其它事情的机会“损失”了 20 万欧元(约合 139.4 万元人民币)。然而,这个项目还没有准备好,下面是它背后的故事。

工作十年后,我决定创业

 

作为一名已经工作了 10 多年的技术主管,我有着不错的薪水和一个很棒的团队,并且也能随心所欲地安排自己的工作时间,参与有趣或有挑战的项目。总的来说,我的工作没有太多可抱怨的。

 

但我受够了办公室政治的影响,并且厌倦把时间浪费在会议上。我真的很想辞职,做自己的老板,对周围的世界产生更大的影响。  

 

于是在 2018 年初,我决定按照自己的心意尝试做别的事情。

 

我有一个朋友,他也愿意创造产品,于是我们开始一起头脑风暴。经过一段时间的商讨,我们最终产生了两个创业想法:

 

第一个想法是为学校创建数字化解决方案,帮助他们处理订餐、付款、考勤等问题。我们通过对自己孩子的观察后确信,确实存在需要解决的问题。比利时有一些竞争对手,但数量不多,而且我们国家还没有出现,另外我们还有一个很不一样的角度。

 

第二个想法是为餐厅创建一个数字平台,在上面他们可以发布/定制菜单,还有一个与客户建立联系的渠道(例如,向他们发送促销信息),以提高忠诚度等等。

 

我们先针对学校的场景进行产品开发。由于我们两个人都是全栈工程师,在产品开发方面没多大问题。

 

我们也和一些学校进行了交流,遇到的人都非常热情,但他们担心自己无法获得资金来支付。此外,鉴于学校是公共机构之一,我们必须通过招标才能拿下项目。对于这一点,我也并不太担心,因为我曾在甲方待了很长时间。公开招标启动时,我们确信这值得一试,然而过了一段时间,我的朋友开始犹豫,并最终在没有知会我的情况下放弃了这个项目。我感到很失望。

 

好在之后,另一位朋友有兴趣加入我们,这也让我们团队产生了新的动力。我们决定放弃第一个创业想法,转向第二个。

 

这次我们走得更远,并且被一个创业孵化器接纳,帮助我们前进,甚至还准备了一份商业计划等等。虽然这个想法中途改变了几次,但最终还是进入到产品开发阶段。不幸的是,故事又重演了。

 

开发需要的时间比我的合作伙伴想象得要长,而潜在客户并没有立刻被说服,他很快就开始怀疑我们是否能真的卖出产品。有意无意地,他们的参与度与积极性几乎为零,而我仍在努力前进。

 

最后,我意识到他们不再参与其中,也就放弃了这些想法,我自己的动力也下降了。我再次感到失望。我之前预测一旦新冠病毒来袭,第二款产品就会大受欢迎,但与我们讨论的人当时并不感兴趣,他们害怕可追溯性,并且更希望能够避税。

以技术合伙人身份,加入 SaaS 项目

 

2019 年 5 月,我通过前同事认识了一位正在寻找合作伙伴的商人。那个商人向我介绍了他们的项目,并把我介绍给第三位未来的联合创始人,他们已经在这个项目上进行了快一年的时间,目前正需要一个首席技术官。

 

他们的目标是创建一个 SaaS 产品(B2B),帮助企业改进会议。这个想法听起来不是很吸引人,但我从经验中知道,如果处理不当,会议对于每个参会人来说都是浪费时间。因此,尝试挑战现状对我来说很有意义。

 

此外,我们团队的第三位联合创始人是一位精益教练,拥有一长串潜在客户,这使该项目更有吸引力。虽然没有从事 IT 工作,但她仍然设法创建了自己的方法和工具,并将其介绍给客户,取得了巨大的成功,所以这不仅仅是一个想法,而是有一个真正需要解决的问题,而人们愿意为解决方案买单。不用说,我很快就加入了他们,开始新的商业冒险。

分阶段从头改造代码

 

在最初的几个月里,我深入研究了现有的代码库,通过技术堆栈进行了差距分析,并为项目构建了一个清晰的功能、技术和安全路线图。这个项目采用了 CouchDB(一个开源的面向文档的数据库管理系统),是因为最初的想法是尽早支持离线优先,以获得强大的差异化特性。我决定继续采用 CouchDB。

 

不过,我很快意识到这个项目几乎需要从头开始重新构建。因为现有的代码库存在太多问题,感觉更像是概念的实验品。我们分阶段改造,避免放弃一切。事后看来,这是一个错误的决定。

 

在 2019 年 5 月至 7 月,我们审查并完成了用户故事,创建了故事地图,设计了路线图,并明确了 MVP(最简化可实行产品)的范围。我创建了一个 wiki,将代码迁移到 monorepo(单一代码库),创建/清理了 backlog(待办事项),等等。而在 7 月到 9 月,我做了不同的工作:构建系统、Docker/docker-compose、持续集成、身份认证、国际化等。

 

这种全职参与项目的感觉真的很好,我可以真正地专注,按照想要的方式工作。我负责发布自动化,创建生产基础设施(切换到 Kubernetes,尝试了 AWS,最终决定使用 DigitalOcean),实现了 HTTPS 支持、基本搜索、面包屑导航、注销、创建测试数据集、CLI 等等。

 

我们还带着产品预告片去了法国。我希望能够更快地推进 SaaS 项目,最好在 2019 年年底的时候可以投放到市场上。不幸的是,这个项目的进展甚微,我们在 12 月才开始制作会议屏幕(重要且最复杂的屏幕)。

 

那一刻,我开始怀疑我们的方法/效率,我尽了最大的努力,但一切都感觉如此缓慢。与此同时,我阅读了关于其他人花费 1-3 个月发布他们产品的推文……我想知道我们做错了什么?我找不到答案。

 

在 2019 年底,我已经在这个项目上花费了大约 1000 个小时,这意味着,由于机会成本,我已经损失了大约 10 万欧元(约 70 万元人民币)。尽管如此,我还是决定让脑海里的小声音安静下来,集中精力向前走……我相信一切都是值得的。

提升效率,放弃非必要功能

 

因为在 backlog 中仍有很多东西需要处理(重要功能、错误处理、重要的安全问题等),所以,我们把产品投放的最后期限推迟到 2020 年 6 月。

 

从 1 月到 6 月,我们在 SaaS 项目上几乎没有取得什么功能上的进展,一切都显得缓慢而艰难。我开始怀疑自己的技能和做事的方式。

 

我越来越“积极”地缩小范围,专注于要点,放弃或推迟一些非必要的功能,如离线优先(已经花费了我们整整一个月的努力)和移动支持。尽管如此,代码质量还是需要保证的。

 

我们意识到产品的 UI/UX(用户界面和用户体验)非常糟糕,特别是会议屏幕。我们决定聘请一名 UI/UX 设计师,工作 5 天费用 3000 欧元(约合 2.1 万元人民币)。但整合新的设计迫使我们重新设计系统的不同部分,例如,用 Tailwind 换掉 Angular Material、创建自己的主题、重构数据模型等等。

 

2020 年 6 月,我们还是没能完成会议屏幕,并且还有太多事情要做。所以我们又一次推迟计划到 2020 年 9 月。

该继续采用 NoSQL 数据库吗?

 

在过去的一年中,由于工作切换,我们损失了大量的时间,我认为这是扼杀工作效率的最大原因。就我而言,每个月的周一、周五和两个周三都在做 SaaS 项目,一周中不得不在不同的任务之间切换,这一点都不容易,尤其是在士气方面。

 

除此之外,我的联合创始人(与我一起开发产品)需要大量的支持,在开始这个项目之前,他已经停止编程好几年了,所以对他来说比较困难。为了帮助他前进,每天我不得不多次停下手头的工作。不过我的联合创始人也有自己的优势,他是最具商业营销经验的人,拥有一定的人脉网络。

 

尽管如此,我仍然需要解决每一个技术问题,排除一切故障,处理补丁管理、漏洞修复、安全、文档、待办事项管理、规划等,这些庞杂的事务并不能帮助我们在市场上赢得时间。

 

此外,NoSQL 数据库让我们损失了大量的时间。很明显,由于离线优先的理念,坚持使用它是一个错误,而且有其它解决方案可以实现,我们将离线功能推迟到更晚的版本。并且我们的数据模型是重关系型的,没有理由再留着它,除了减慢速度,还给所有的操作带来了复杂性。

 

尽管这样,我们还是决定继续用它,考虑到切回经典的关系型数据库管理系统(RDBMS,Relational Database Management System)所需要的工作太多了,会把上线计划推更远。

 

我真的不知道哪个更糟:是浪费更多时间重新设计得更好,希望最终节省时间,还是冒着继续缓慢的风险在功能开发上奋力向前……我们选择了后者,但我不知道这是不是最优的。

第一波浪潮之后

 

从那以后,我们非常努力地添加授权,为不同的概念定义状态机(因为会议有一个对整个开发而言非常重要的生命周期),处理验证,以及应用程序中的各种功能,如富文本编辑、pdf 导出等,但我们仍然没有实现 MVP,虽然已经把它裁剪到最基本的要求了。

 

与此同时,我公司的银行账户就像雪花一样在阳光下融化。几个月过去了,虽然我们在某些方面取得了不错的进展,但速度慢得让人受不了。

 

2020 年 10 月左右,我们开始寻找融资方案。我们想获得一笔贷款,其中 50%由欧洲投资基金支持,此外也许还可以试试从我们的国家或地区获得资金。我们会见了银行,准备了该地区的融资方案等等,但我们还没有获得资助。

 

更不幸的是,由于新冠来袭,我们曾经看好的客户(医院)显然没有时间来集成我们的解决方案,这意味着即使我们为他们准备好了,他们也没有好准备。所以,我们必须寻找其它的目标,并重新评估产品的范围,这促使我们设想“下一个”版本,还要包括能说服其他客户购买我们的解决方案,但以我们目前的速度和半工作的状态,这个版本将推到 2021 年底。

 

鉴于进展和市场的不确定性,我们开始考虑用其它的方式来引导,比如先从服务模式开始,然后再切换到 SaaS,这样可以换得一些时间,好让我们继续前进,但这点现在还处于头脑风暴阶段,一切还很模糊。

 

到了 2021 年初,我们又投入了一千多小时,至此我已经“损失”了大约 20 万欧元,因为我仍在这个项目上,而不是做其它事情…..还有一个短期内还没有准备好上市的产品。

压力和自我怀疑

 

我现在已经花了 2 千个小时在这个项目上,感觉是一个很大的数字,但想到取得的成果是如此之少时,我几乎感到羞愧。也许这是正常的,也许不是,我真的尽了最大的努力,有时我觉得自己什么都不知道,也不擅长正在做的事情。我工作了很长时间,晚上和周末都在努力地让事情向前发展,但仍然太慢。

 

此时,我公司的银行账户明显处于红色区域,不超过 6 个月,我的压力值已经突破底线(即使我仍然保持微笑,看起来平静)。我继续半工半薪,今年这样可能会很长一段时间,我很想摆脱一切,能将 100%的时间和精力投入到这个项目,但是现状不能。路漫漫其修远兮,疑虑重重。

 

也许保留 NoSQL 数据库的决定是错误的,也许工作切换才是真正折磨我们的原因,也许我还不够好,也许我们没有聚集在正确的事情上,也许我过于关注代码质量了,也许我一年前就该退出了,也许我们需要额外的开发人员,也许……

 

尽管这样,我内心深处还是想继续前行。首先,我仍然相信我们的团队,相信这个产品确实有意义,它可以真正帮助团队和组织更有效地工作。第二,我仍然精力充沛,有很强的韧性,不愿放弃。最后,也可能是因为我已经投入了太多的时间和精力,觉得如果现在放弃的话,一切都将付诸东流。

 

带着我所有的怀疑,以及损失的那些钱,庞大的工作量,还有那么多不确定的因素,我觉得进退两难,结束意味着输掉游戏,也可能让我错过一些重要的事情。而继续又可能意味着陷入沉没成本谬论,最终损失更多。我很难分辨,也没人知道,这两种情况都是可能发生的。

结论

 

对不起,这篇文章实际上没有结论,也没有任何直接的问题。这就是我的故事。

 

让我感到惊奇的是,在 2020 年,我也花了很多时间写博客,抓住机会分享我在开发 SaaS 产品时学到的东西,月度经常性收入(MRR,Monthly recurring revenue)达到了 100 美元左右。虽然这没什么好吹嘘的,但却是我这一年的亮点。

 

也许这就是促使我开始写新书的原因,也许这是来自我内心的声音,它在说:“停下来!让我们试试别的吧!”或者只是因为我喜欢分享所知,帮助他人。

 

现在是凌晨 2 点,周一。今天,我将在 SaaS 启动项目上工作,这是我要做的,因为我还没有下定决心是否放弃。

 

关于作者:

 

Sébastien Dubois,作家、创始人和首席技术官。写过关于软件开发和信息技术、个人知识管理、个人组织能力和生产力的书籍和文章,同时也会制作一些可爱的数字产品。

 

原文链接:Startup failure stories: 20 months in, 2K hours spent and 200K € lost.

2022-04-29 14:003167

评论 1 条评论

发布
用户头像
感觉标题党了,第一次看用自己投入时间的机会成本来算经营亏损。。
2023-07-15 16:50
回复
没有更多了
发现更多内容

知其然,而知其所以然,JS 对象创建与继承

掘金安东尼

JavaScript 前端 设计模式 7月月更

分库分表

ES_her0

7月月更

Android ANR和OOM

沃德

android 程序员 7月月更

SAP Fiori 的附件处理(Attachment handling)

汪子熙

SAP Fiori SAP UI5 ui5 7月月更

云原生(五) | Docker篇之深入Dockerfile

Lansonli

云原生 7月月更

LeetCode-108. 将有序数组转换为二叉搜索树(java)

bug菌

Leet Code 7月月更

Block 的分类

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

java零基础入门-File类(实战篇)

喵手

Java 7月月更

各厂商的数据湖解决方案

五分钟学大数据

数据湖 7月月更

MFC|框架下自绘CEdit控件

中国好公民st

c++ 7月月更

初学者如何快速的上手Linux命令,这34条新手必会的命令一定得会!

wljslmz

Linux 7月月更

mysql进阶(六)模糊查询的四种常见用法介绍

No Silver Bullet

MySQL 7月月更 模糊查询

架构实战营|模块7

KDA

#架构实战营

查找——平衡二叉树

乔乔

7月月更

队列的链式表示和实现

工程师日月

算法 7月月更

【萌新解题】三数之和

面试官问

面试 LeetCode

还在为处理事务烦恼吗,要不试试Spring是如何处理业务的

Java学术趴

7月月更

【LeetCode】滑动窗口的平均值Java题解

Albert

LeetCode 7月月更

C# SerialPort配置和属性了解

IC00

C# 7月月更

Pyodide 中实现网络请求的 3 种方法

OpenHacker

Python pyodide

nacos服务注册之SpringCloud 集成nacos

急需上岸的小谢

7月月更

函数初认识-上

芒果酱

C语言 7月月更

通过Dao投票STI的销毁,SeekTiger真正做到由社区驱动

鳄鱼视界

【愚公系列】2022年7月 Go教学课程 012-强制类型转换

愚公搬代码

7月月更

如何使用SVG制作沿任意路径排布的文字效果

南极一块修炼千年的大冰块

7月月更

SDL图像显示

柒号华仔

7月月更

Android实现无序树形结构图,类似思维导图和级联分层图(无序,随机位置)

芝麻粒儿

android 7月月更

jQuery 的节点操作

Jason199

jquery js 7月月更

关于目前流行的 Redis 可视化管理工具的详细评测

宁在春

redis 7月月更 Redis 可视化工具

Android热更新调研汇总

沃德

android 程序员 7月月更

开发第一个Flink应用

程序员欣宸

Java flink 7月月更

我辛苦创业20个月,却亏了140万_文化 & 方法_Sébastien Dubois_InfoQ精选文章