如果有人问我,这十几年做过最成功的项目是什么,我可能一时半会儿答不上来。
但如果问我失败过哪些项目,我倒是可以一口气说上好几个。
我写过博客,做过开源项目,运营过网站,研究过 SEO,也尝试过把兴趣变成副业。每隔几年,我都会突然对一件事情特别着迷,然后花上几个月,甚至一两年的时间,把它一点一点做出来。
如果用商业结果来衡量,其中大概有九成都失败了。
有的网站上线没多久就关了,有的开源项目几乎没人用,有的博客更新了几年,最后还是停在了某一天,再也没有继续。
照理来说,这些项目应该早就被忘干净了。
可奇怪的是,直到今天,它们依然时不时出现在我的脑海里。很多工作中的细节我已经记不清了,但我还记得第一次登录 Linux 服务器时终端里闪烁的光标,记得第一次买域名时那种兴奋,也记得自己花了三天,最后只写出一百多个字的窘迫。
后来我慢慢发现,这些失败项目真正留下来的,从来都不是网站本身,也不是代码,而是它们一点一点改变了我看待世界的方式。
如果没有它们,我今天大概不会成为一名软件工程师,也不会写下这些内容。
那一年,我拥有了人生中的第一台服务器
2009 年,我放弃了国内刚读了一年的大学,来到日本一家日语学校留学,学习日语。
现在回头看,如果让我重新选一次,我大概会先把大学读完,再来日本。但那个时候,我对未来没有太多规划,只觉得墙外的互联网像另一片世界,而我想亲眼看看。
2011年,我从日语学校毕业后考入了日本横滨的一所大学,重新开始了另一段大学生活。
留学生活并没有电影里的那种,课上10分的精气神完成学习任务(或者是学渣一样的不听讲甚至逃课),课后找朋友一起开趴体一醉方休。我留学生活的每天的节奏几乎都是固定的:上课、打工、回家。
每个月兼职收入不到6万日元(按当时的汇率来算的话,只有700美元),除去房租和生活费,基本剩不了多少钱。
真正属于自己的,大概只有一台花了一百五十美元买来的华硕笔记本。这里要感谢一个我一直仰望的学霸哥哥,是他来日本商旅的时候支援我买的电脑。
这笔记本台电脑陪我打游戏,也陪我熬夜折腾各种软件。很多时候,我宁愿待在房间里研究电脑,也不愿意出门。
直到有一天,我偶然看到一个介绍日本旅游的网站。今天看来,它的设计已经很普通了,但在当时是个非常时髦的设计,我盯着那个页面看了很久。
原来,一个普通人也可以拥有属于自己的网站。这个念头让我兴奋了好几天,于是我决定照着它做一个。
网站的定位也想好了:给外国游客写日本旅游攻略。
现在回头看,这个方向一点问题都没有。真正的问题是,我自己根本没有旅游过。
可二十岁出头的人,很少会认真考虑这些。我觉得只要网站搭出来,一切都会顺理成章。
于是当天晚上,我刷信用卡租了一台服务器。其实那时候已经有不少服务商提供一键安装 WordPress,点几下鼠标,一个博客就能跑起来。(其实是我花钱花早了,后来才发现有这么优秀的一条龙服务)
但我偏偏选择了最麻烦的方式,刷信用卡租了一台服务器。然后跟着网上的教程,从 Linux 开始学起,一行一行敲命令,把 Apache、MySQL 和 PHP 一点点装起来。
折腾了好几天以后,我终于拥有了人生中的第一台服务器。
那台服务器本来就装好了Linux操作系统 Centos,只需要你自己手动安装好相关软件包就能跑起来。我原来是不根本懂Linux的,只会瞎折腾。
所以每回有些软件安装失败之后,我都只会在VM控制台的界面里重新安装Centos 系统。而这几乎成了我每天起床之后都会做的“蠢事”。。。
你们看着好像是我坚持不懈不轻易放弃,但实则我内心10万个草泥马奔腾而过。
后来,我又去 GoDaddy 买下一个域名:jaforeign.com。
这是一个 Japan 加 Foreign的一个合成词。现在回头再看看,这个名字有点长,也有点土。
但那时候才疏学浅的我已经想不出更好的了,凑活着用吧。
不过好在服务器终于跑起来了,Mysql数据库连上了,域名也解析成功。我打开 WordPress 后台,新建了第一篇文章。
光标开始闪烁,然后我忽然不知道该写什么。虽然自己仍然沉浸在Wordpress跑成功的喜悦里,但大脑里一片空白。
原来,写程序和做产品是两件不同的事
我一直以为,最难的部分已经过去了。服务器都搭好了,还有什么能难得住我?
后来才发现,真正困难的事情,才刚刚开始。
三天时间,我只写出一百多个字。不是因为不会写,而是因为没有东西可以写。
每天除了上课就是打工,剩下的时间几乎都待在家里。我没有去过那些景点,也没有什么值得分享的旅行经验。
网站存在,服务器运行着。可里面什么都没有。不到两个月,我关掉了服务器,也放弃了那个域名。
如果只看结果,这是一次彻底的失败。但直到今天,我依然觉得,那两个月没有白费。
就是在那段时间里,我第一次真正理解了 Linux、LAMP、HTML 和服务器部署。
也是从那时候开始,我发现自己对软件开发的兴趣,远远超过了旅游本身。
(我个人其实也很爱旅行,局限于当时的经济收入,自己一个人的时候没有去过任何一个旅游景点。好在当时就读的日语学校和大学补助我们留学生,举办了多次旅游的活动。这让我体验了好几次东京迪士尼乐园。我对帮助我的这两个学校至今心存感激。)。
现在回头看,那个旅游网站真正留下来的,并不是网站,而是后来十几年的职业方向。
很多事情都是这样:你以为自己在做 A,最后得到的却是 B。
第二次,我以为自己终于准备好了
很多年以后,我已经成为一名软件工程师。
我开始觉得,第一次失败只是因为自己太年轻。现在终于有经验、有技术了,这一次应该会不一样。
于是,2020年Covid疫情刚开始的那一年,我利用下班后的时间做了一个开源 CSS 框架,叫 RotalaCSS。
后来,我又围绕它搭建了自己的博客 Pitayan。这一次,我终于有能力把产品做好了。代码越来越漂亮,架构越来越成熟,博客的设计也越来越接近自己理想中的样子。
甚至还有两篇文章登上了 Hacker News 首页。 (这里追加 链接 和 Hacker News的截图)
那几天,我几乎一直开着 Google Analytics,看着访问人数不断刷新。
我以为机会终于来了。可流量退去之后,我发现真正的问题一点都没有变。
博客还是没人持续看,项目还是没人持续用。
不是因为产品不好,而是因为我依然没有回答一个最重要的问题:
到底是谁需要它?
我花了很多年,才意识到自己一直在重复同一个错误
后来,我偶尔会把这些项目放在一起回头看。
jaforeign, RotalaCSS, Pitayan 它们看起来完全不同。
一个是旅游网站,一个是 CSS 框架,一个是技术博客。
可如果把时间拉长,你会发现,它们失败的方式几乎一模一样。
我总是先想到一个很酷的点子,然后开始写代码。等产品做完以后,再去寻找用户。
旅游博客没有内容。开源框架没有用户。技术博客没有持续输出。
表面上,每个项目失败的原因都不同。实际上,它们一直在提醒我同一件事情。
产品最大的风险,从来不是技术,而是需求。
这句话今天看起来像一句正确的废话。可真等我正理解它,却花了十几年。
你自己的痛点一定重要吗?有可能。但是如果不去提前做验证,那你的方案很可能只是个孤芳自赏的伪需求。
那些失败,后来都变成了我的老师
今天,我已经不会再用"失败"去定义这些项目。
它们没有赚到钱,也没有让我出名。
但如果没有它们,我不会学会 Linux,不会开始写代码,不会接触开源,不会学 SEO,也不会对 AI 和软件工程产生今天这样的兴趣。
后来,有一些朋友会问我,为什么现在做一个新项目,总喜欢先去找人聊天(就是找这个朋友聊天),而不是着急先打开 IDE。
其实不是因为我变聪明了,只是因为我已经踩过太多次同样的坑。
第一次,我没有内容。第二次,我没有用户。第三次,我没有时间坚持。
这些问题看起来完全不同,可它们都指向同一个答案。
现在的我越来越少问自己:这个项目会不会成功?
我更愿意问另一个问题: 这个项目解决的是不是一个真实存在的问题?
因为我终于明白,代码从来不是产品的起点。
而需求才是。
写在本文的最后
如果你今天认识我,你看到的是一个写代码的人,一个喜欢研究前沿技术的工程师,一个偶尔写写博客的人。
但如果把时间往前拨十几年,你会发现,所有这些事情,都不是一开始就存在的。它们都源于一个已经消失很多年的小网站,一个只有两篇没写完文章的博客。
我后来做过很多项目,大部分都失败了。可如果没有第一个失败,也许后面的故事,就不会发生了。




