金国阳:1个人15个月,在图书馆写出了一款小而美的国产API工具

程序员说未来 2024-07-14 02:39:28

这是《开发者说》的第11期,本期我们邀请的开发者是金国阳,它的作品小黄鸟HttpCanary,受到了很多开发者的称赞,新产品Reqable功能更加的先进与完整,目标是打造一站式接口调试与开发工具,历时15个月,由作者1个人在图书馆独立完成,有想法、有理想又有执行力的一位开发者,非常让人钦佩。

1、请简单介绍一下自己。

我是金国阳,一名独立开发者和持续创业者,居住于上海。在网络上,我一般用Megatron King作为昵称,HttpCanary(俗称小黄鸟)是我曾经业余的作品,我同时还是开源库StringFog(Android最早的字符串加密框架)的作者。目前,我正在全职开发和迭代新一代的跨平台API工具Reqable。

2、分享一下自己的职业经历,什么契机开始从事独立开发?

2013年毕业,首份工作是在苏宁易购做开发,干了几个月后和同事一起辞职创业,这是第一次草率创业未成。后来去了同程旅游和安克创新,都是主要是做Android方向的开发,积累了不少工作经验和技术。2019年,我来到上海,加入创业公司gostudy.ai,担任客户端和测试团队的负责人。公司的主要方向是做AI教育,但经历2021年疫情和双减之后,教育行业受到严重打击,公司业务没跑通,我选择离开并入职了商汤科技。2022年,我主动从商汤离职,开始全身心投入到Reqable项目的开发中。过去近十年的工作经历中,我做过很多的项目,但是没有一款完全体现自己技术价值的作品,这是崇尚技术的我非常大的一个遗憾。终于,我还是鼓起勇气,迈出创业的第一步,我希望在API工具这个领域,做出一款超越Fiddler、Postman等这些老牌的API工具。

第一次独立开发是在2018年,项目是HttpCanary,这是我第一个独立开发的项目。HttpCanary取得了非常大的成功,在很短的时间便声名鹊起,成为了全球最受欢迎Android抓包工具。两年之后,由于滥用和盗版问题,我决定停止更新和维护。

从商汤出来创业后,我开始准备做新的项目。在HttpCanary放弃维护之后的几年内,经常会有用户来信,希望我能够重启这个项目。我并不准备更新,而是准备重做,用新的技术栈和新的架构,重新设计和实现一个全平台的开发工具,在抓包功能的基础上,加入API测试功能,当然还要解决滥用和盗版的问题,这个项目就是先进API生产力工具——Reqable。

2022年3月初开始,从准备,到开发,到第一个版本,花了整整一年的时间。从基础架构,功能设计,UI设计,开发,测试,都是独立一个人完成。第一期规划的功能又很多,一年的时间虽长,但是也很紧张。2023年3月,在第一个版本出来后,开始三个月的Beta测试,测试用户大部分都是HttpCanary的粉丝。调研的用户口碑还不错,但是也有很多问题,这三个月基本上就是边测试边优化。2023年6月,正式发布了Reqable 1.0版本。受益于HttpCanary非常大的用户数量,加上Reqable的产品口碑也还不错,上线后用户增长速度很快,一年时间已经有超过10万用户。

3、成为独立开发者后,有何感受?

2022年3月,我辞职开始全力开发Reqable,原本的计划是在上海浦东图书馆工作,但没去两天,上海疫情便接踵而至了。从3月初到6月底,我在家里封闭了近4个月,再后来虽然解封了,但是图书馆还是保持闭馆,直到9月份才开放,所以我实际在家封闭了大半年。这是一段非常难熬的时光,我的效率也非常低,因为不管是产品设计还是程序开发,都是需要灵感的,我常常一个问题卡好几天,甚至做了初版后效果不满意又推翻重做了。我规划的项目开发计划是6个月,最后实际上花了12个月,除了Reqable这个项目本身较大之外,也和我长时间居家的状态有关。

后来,我的全部生活和工作就在图书馆和家里两点一线了。图书馆周二到周日开放,但由于周末人太多,所以我是周二到周五4天在图书馆工作,周六到周一3天在家里工作。图书馆一楼有餐厅,价格也非常实惠,午饭都是在餐厅解决,偶尔吃个晚饭。图书馆非常适合自由职业,有安静的氛围、餐厅、电源插口、开水、干净的卫生间等,除了网络非常差之外,简直完美了。

在全职开发Reqable长达一年多的时间里,我没有任何收入来源,这个期间还经历了疫情,封城等事情。特别感谢当时女朋友持续的无条件支持,无论是物质还是情感。当然,她现在已经是我妻子了。

API工具是一个非常卷的方向,竞品非常多,有很多开发者像我一样,觉得别的工具不好用就自己开发一个。做功能是挺容易的一个事情,但是做体验确是很难的,很多工具的用户体验并不好,包括知名的竞品Postman、Fiddler等。目前阶段,Reqable在功能上仍然有非常多的缺失,但是在体验上非常有竞争力,比如Reqable的启动极快。功能可以后面慢慢补,体验一旦做差了后面补回来是很难的。

4、作为独立开发者,踩过哪些坑?

我独自承担了Reqable项目的全部角色,包括产品、设计、交互、开发、网站和后端等,尽管大部分角色我曾经都有所见闻,但是真正实践起来仍然是一个非常独特的体验。我得不得明白一件事情,很多时候我没有办法和自己当螺丝钉时那样做得尽善尽美,学会放弃有利于推动整个项目前行。

不管是独立开发还是合伙创业,在跨出这一步之后,最大的挑战不是技术也不是资金,而是自己的心态。在长时间没有收入之后,我常常会怀疑自己当初的选择,但还是依然坚持下来,我认为坚持长期做一件有价值的事情必然能够获得回报。当产品成型之后,我又常常仍不住想,要不别提供免费版本了,付费使用至少能收回些成本,但是强行收费对于初创产品来讲是杀鸡取卵的行为,所以后我还是坚持提供免费版本,克制眼前可见利益的诱惑对项目长期的发展是非常有益的。

5、Reqable 的灵感从何而来,分享一下它的开发过程。

Reqable的理念是先进HTTP生产力工具 ,相比于Postman、Fiddler、Charles等知名竞品,Reqable更加侧重于先进这个点,包括新的应用开发框架(Flutter)、新的HTTP协议支持(HTTP3/QUIC)、客户端全平台支持、更丰富的GUI表现、更高效的性能,以及最重要的免费使用。

在功能上,Reqable打通了API测试和抓包调试之间的壁垒,强化两种功能之间的协同。比如从抓包数据创建API进行测试,又比如在API测试的时候抓包分析流量,完美结合了Postman、Fiddler、Charles等产品的核心功能。

Reqable作为国产化的工具软件,可以更好地服务中国这个市场。更安全稳定的服务、更地道的简体中文支持、更及时的问题和建议响应,和更快的产品迭代速度。这些都是国外软件所无法做到的。

关于项目,我原先的计划是做类似Postman的API测试工具,但是调研后我很快放弃了,一方面是国内已经有相当成熟的产品,另一方面是云服务需要投入较多的资源。然后,我转到了新的项目方向做API调试 + API测试,简单说就是Fiddler/Charles + Postman ,收费方式也是卖License。

首先要考虑的是这个方向有多大的市场,其次是我的项目能有多大的竞争力?关于API工具这个领域,大体也就分为上面所说的两个方向,市面上比较成熟的产品有下面这些:

上面表格里面只是一部分,实际上肯定有更多的我不知道的产品。相信这里面的名字,基本上做开发和测试的同学都耳熟能详一二甚至经常使用,说明这整体是一个非常大的市场。

那么,最核心的就是第二个问题了,我的项目能有多大的竞争力?在API调试方向,国内的产品有一点名气的就是阿里巴巴开源的LightProxy了,而且已经停止维护了,虽然比起Fiddler 和Charles两款产品来讲,逊色很多。所以这个方向,真正的竞争对手是Fiddler和 Charles,这两款产品基本上也已经垄断了国内的市场,大大小小的公司都在使用。

从产品功能方面来讲,Fiddler和Charles并不复杂,我相信自己能完整实现;从平台支持方面来讲,Fiddler原先只有Windows上面可用,后来出的Fiddler Everywhere支持了Mac等平台,Charles基于Java开发,支持全部的桌面端,但是性能很差,很明显我也必须要支持跨平台;从产品设计上来说,这两款竞品就有点一言难尽了,说实话挺丑的(来自我这个有一点设计追求的程序员角度);从价格方面来讲,Fiddler Everywhere的价格是一年120美元,Charles的价格是每个大版本20-30美元,如果我以1/4甚至更低的价格会非常具有优势;从社会趋势来讲,去美化是很多国内大公司正在考虑的,国产替代品可以提供更加安全和稳定的服务。

总结一下,我的项目需要做到以下几点,才能有竞争优势:可替代的功能、跨平台(甚至要考虑全平台)、简洁美观、免费或者低价。为了保证有足够的竞争优势,我需要提供更多更独特的功能,比如集成Postman的基本功能,支持Python编程脚本等。我相信这些我是都能过做到的。

最后一个需要考虑的就是商业推广了。说实话,我没什么方案,找广告平台是不可能的,没有足够的资金支持是很多个人开发者面临的最大难题。我决定当一次鸵鸟将这个事情放一放,我相信好的产品没有商业推广也能够成功。我之前业余的时候开发过一款类似的Android应用HttpCanary,没有任何的推广和宣传,甚至没有在国内应用商店上架,即使没有更新维护了它的用户量和日活量依然很可观。很多用户来信,表达对这个应用的赞美和继续更新的期望,因为很多年过去在这个领域仍然找不到更好的替代品。

我为这个项目的命名特地创造了单词Reqable,意思是可请求的。创造新单词有几个好处,一是注册域名方便(reqable.com只要几十块钱),二是利于品牌推广,三是搜索引擎不会搜到重名的结果。

全职的情况下,整整一年的开发时间 + 3个月的Beta测试才完成上线。这个期间,我没有任何的收入来源,还需要投入下面这些资金。

这些基本都是必要的前期资金,今年还需要继续投入资金,例如CDN的资源包可能仅仅够支持2-3个月。我曾经考虑过省点钱,比如不做腾讯企业认证,结果测试群被莫名其妙封禁,企业认证后才给解封。

最近在考虑购买windows签名证书的事情,最便宜的OV签名证书的市场价格在1500以上,EV签名证书市场价格在2500以上。没有证书签名,Windows打开软件会被系统拦截提示未识别的开发者不予运行。

当然,这些支出相对于这个项目的成本来说,是毛毛雨。最大的成本是时间,项目的初始开发的周期是15个月。这个时间是超出我的计划的,一方面是这个项目确实太大了,另一方面为了追求细节和效果啃了很多硬茬。

以下是这个15个月的工作:

开发Windows + Mac + Linux桌面端平台产品。搭建官网,编写产品文档。搭建服务器,实现各项基本功能接口,接入支付功能。搭建许可证管理系统,会员体系、实现商品购买支付流程。对接测试用户报名、问题反馈和答疑等。

其中时间最长的是第一项工作 开发Windows + Mac + Linux桌面端平台产品。我考虑做桌面端 + 移动端,所以选择了Flutter框架。2022年初的时候,Flutter桌面端还没有正式发布,需要解决很多的问题,加上Flutter生态并不是那么成熟,我需要造很多轮子。详细过程可以阅读我下面这几篇文章。

如何基于Flutter开发一个代码编辑器Flutter如何实现一个支持HTTP3的网络框架

另外,这个项目本身的体量就非常大,光是模块仓库就建了二十多个。

很多模块都写了单元测试,比如代码编辑器模块的单元测试代码就有上万行,全靠一个人来完成。

尽管Flutter桌面端开发存在很多问题,但是其UI效果让我非常地满意。在项目的开发框架稳定之后,开发效率也有一个极大的飞跃。从三月份Beta测试开始,4个月的时间,我更新了50个版本,除了大版本之外,平均每周至少2个版本。

整整一年时间,产品第一版功能开发工作完成后,开始了Beta测试。测试分成了两期,累计共邀请了800位用户参与了测试。虽然存在很多问题,但是用户的反馈还不错,给了我一些信心。

产品在继续优化了三个月后达到了我认为的上线标准。接下来,就要考虑定价了。在Beta测试结束的时候,我发了一份调研文件,65%用户的能接受0-50/年的价格,25%的用户能接受50-100/年的价格,9%的用户能接受100-200/年的价格。经过深思熟虑,我没有强制要求用户付费,产品的任何功能都可以免费使用,用户可以选择在增值服务上为产品付费。我认为好的产品不应该将用户隔绝在外,不管喜不喜欢都来试试吧!

Reqable终于还是在2023年6月初正式上线,下面是正式上线时候的产品实测效果图。

6、Reqable已上线一年多,复盘一下?

有几点可以更大家分享一下:

一、国内的用户付费意愿偏低,这个是不争的事实。那么,这个国内付费项目是不是就没出路了呢?其实非也,用户还是愿意为喜欢的产品付费,Reqable有几位粉丝用户,购买了10年的许可证。

最近我在考虑的事情,就是产品如何出海,但是有两个问题我还在烦恼。一个是企业需要申请进出口,就是又要花钱,代办的市场价格在2k;另一个是收钱渠道,注册Paypal资料审核还没有完成,又听说Paypal会无故封账户钱取不出来。

第二点,不管是独立开发还是创业,有时候最大的困难可能不是技术,也不是资金,而是人的心态。我曾经在一家AI创业公司带团队,公司有非常强的技术实力,也有不错的资金支持(两轮国内顶级资本投资),最终的结果是团队分崩离析,两位联合创始人离职。原因很多,但是我认为最根本的原因在于创始人缺乏持续如一待人的态度,团队管理管的是人心,人心散了,产品就差了,团队就没了。

对于开发工具类的软件,这是一个付出和回报非常不匹配的方向,风险非常高。开源软件是一个非常大的利空因素,开源项目中几乎能找到任何你所需要的开发工具。我个人觉得,对于没有足够的信心、扎实的技术和强大的心态的开发者,需要谨慎进入这个赛道。

7、自己最喜欢的产品有哪些?你认为什么样的产品是好产品?

这些是我认为不错也经常使用的产品。

- 开发工具:VS Code

- 设计工具:Sketch

- 社交软件:微信、Discord

- 生活类:钱迹

我认为好产品最基本的两点:UI简洁,交互流畅不卡顿。进阶部分:功能完善,主要功能一套交互下来很顺畅;不错的UI设计,重视细节。终极部分:持续迭代但是又很克制,新功能不会影响老用户的体验。

8、你如何评价程序员这个职业?优点与缺点?

程序员是一群创造力非常强的人,热爱分享也好拿来主义;消费欲望低,不乱花钱,所以想从程序员身上赚钱很难。

9、会一直做程序员员吗?如果不做程序员,你会做什么职业?

会一直做,我喜欢创造新的东西。如果不做程序员,会考虑做产品经理吧。

10、分享一下自己业余爱好,书、电影或游戏?

业余爱好:养狗。

书:科幻类的,例如阿西莫夫。文学类的,例如查尔斯狄更斯。

电影:指环王三部曲。

游戏:最喜欢策略类的,例如钢丝,文明;其次,战棋回合类的,例如博德之门。

11、对于自己的生活与工作,未来有何期待?

对于后续规划,Reqable会探索toB方向的业务,提供更多团队性的功能。融到资或者收入起来后,我会慢慢扩大团队,现在一个人全揽开发、测试、客服、运营等等事情,精力难以为继,严重拖累Reqable的发展。我觉得3-5个人的小团队,应该是比较适合Reqable这个项目的。

故事征集:

《开发者说》是我们最新推出的一个访谈栏目,邀请了一些国内外有趣的程序员来分享他们的经验、观点与成长故事,我们尝试建立一个程序员交流与学习的平台。

欢迎大家推荐朋友或自己来参加我们的节目,分享与对话是一件利他又利己的事。

0 阅读:2

程序员说未来

简介:感谢大家的关注