一个人如何开发超过 15 万行代码的开源项目

查看 9|回复 0
作者:cheunghy   
我是 Victor Teo ,开源项目 Teo 的作者。在 2012 年进入软件技术领域,从事后端前端移动端技术的研究和创新,态度端正、勤劳刻苦、脚踏实地。十余年深刻实践总结和研究创新,从一个谦虚好学、天赋秉异、不想输给人的入门者成为罕有的坚持专注做好一件事的师匠。我从 2022 年 5 月开始编写 Teo 。到今天,包括项目本体功能、代码编辑器插件、网站、文档、未完成的一个支持 macOS 和 Win11 的工具软件,已有不止 15 万行代码。
如何发现商机
开发者工具领域是广泛大众不熟悉的领域,一般来说是帮助他人开发软件和搭建网站的一类工具,其受众群体是开发者、即程序员。这个领域比起餐饮、电商等领域,相对竞争没那么激烈,但产品和技术实力要达到市场中的程序员广泛认可。
在这个领域中,WordPress 市值为 6360 亿美元,其母公司单次融资达到 2.88 亿美元; Postman 估值 56 亿美元;与我的产品相对类似和接近的,已创业几年的德国 Prisma 公司已融资超 2 亿多美元。在这个领域虽然不能够像苹果、谷歌、腾讯、阿里那样做的那么大,但是给开发者带来价值回报投资人和员工,并让家人不愁吃用还是能够做到的。
这么多年开发经历中,无论我的职位头衔是前端开发工程师、后端开发工程师、全栈开发工程师、技术主管、技术总监、CTO ,还是自己经营外包公司那三年,我都在一线从事开发。如何把技术做的稳健、不易出 bug ,并且开发效率高,可以让一个工资中等的程序员的生产力产生一般的大公司的 3 人或 3 人以上的价值,是我始终在做的事。给人打工是贩卖人力的交易,做人做事要讲诚信和品德,让项目开发更快,为公司省时省钱,让公司在产品研发上成为更经得起商场风浪的一艘稳健的船;让团队中的程序员能够快速成长、自信快乐,将优秀的技术和开发流程教授并传承发展下去,是专业人士的职责也是专美。
因为这种脚踏实地的务实作风,我深入使用过的各类技术工具和产品非常的多。这类产品其实也像大家用的一些日用品一样,有旧有新,有升级换代。一些人使用电动牙刷,一些人使用手力牙刷。手机从最初的拨号键盘,换代成全键盘的塞班黑莓智能手机,又换代成大屏的苹果安卓智能手机。每一次换代,设计都较前代更精巧,内部结构更复杂,但使用更简单,功能更全面。技术产品也是一样,70 年代的开发工具、90 年代的开发工具,智能手机时代的开发工具,AI 时代也需要支撑 AI 时代的技术底层和工具链。我们现今的技术开发工具,其实是有些陈旧的。在开发中,若是同时追求产品的开发效率和质量,就会令人苦不堪言,有大量的开发时间和精力被痛苦的浪费掉。现在使用智能手机的大家,若是带着今天的记忆穿越回到十多年前全键盘手机的年代,那一定很痛苦,不能拍照、看剧、玩手游,也不能刷微博抖音朋友圈。在一个领域中,能做出下一代产品的人,一定是在这个领域深入耕耘的,常常参与产品结构设计和研发的人。
我常常浏览各类开发工具产品下,用户提出的问题和需求,配合自身工作中总结的经验加以整理。以及思考为什么开发工具的发展停滞不前。我关注新推出的技术产品的内部结构和市场发展。事实上,做一个同代际产品是不难的,但是做一个“下一代”产品,是需要先洞悉到产品的下一个阶段该有的样子,并有能力将其研发出来。洞悉力和开发能力都是需要在业内领域内持续实践、积累和思考的。其中的开发能力,需要随着年龄渐长,不断勤劳努力和积累,甚至还需要相当的天赋。80 年代,一个电脑操作系统甚至可以由一人完成,FC 游戏超级马里奥的设计和研发只需要 5 个人,而如今一个电脑操作系统需要一个巨大的团队,超级马里奥也需要百人团队来开发。没有资本也很难把一个概念变成商用的产品。不过幸好的是,我熟练掌握十多门编程语言,能够独自负责前端后端移动端和编译底层的所有开发;我的英语熟练,能够编写相对比较正宗的英文文档;我在自己经营公司的时候,做过商务类工作,虽然经验比不上专业人士,但也可以继续成长。所以最差的情况是多花小几年的研发时间,也能让产品的研发和推广按部就班地进行。因此,这件事、这个项目是可以做的。
有人会好奇掌握多门编程语言不会混淆吗,不会互相占用精力从而各个都不精吗?举个例子,我最近爱好学习日语,日语中有大量的英文词汇和汉字词汇,而日语的音系和语法是中文或英文都无法套进去的。所以在使用日语时,很天然地、本能地就不可能把其他语言的语法和发音套进去使用。反而,这些来自英文和中文的经验,会让学习日语轻松很多。如果学会日语再学韩语,就变成连语法都不用学,只需要换音的又一个程度的降维打击。这就是为什么一些文化品德修养极高的翻译官、文豪、政治家能掌握“八国语言”的原因。学第一门外语最难,第二门开始难度都是不同程度递减的。且因为语言学知识的增加,每个语言都说的更好了。编程语言也是一样,不同编程语言的语法不同,不会让人混淆,但编程的结构和逻辑是相通的,一个人在编程语言 A 中的经验会提升这个人在编程语言 B 中的经验。
为何坚持
很多人常常看到某新兴领域有人赚到了钱,就想去从事一样的看似更易赚钱的行业,其实是没看到他人背后的深厚积累。我们一直在做的事情就是最擅长的,在自己熟悉的领域里是更容易计算成本优化流程产生更优质的产出的。而自己积累的丰富经验也是他人学不来的。去做一个自己本不擅长的事情,需要更强大的资源和运气。但是如果有这么强大的资源和背景,自己凭什么又是掌舵人呢?我不喜欢靠运气去赌他人的赠予,更不蓄意接近高贵的人来策划或甜或辣的把柄交易。踏实做事,在实践中做好产品,积累好经验,把斗争的精力用在取悦用户和产品市场的争夺上。当他人认为自己不灵活不精明,做牛做马做研发,不找机会跟省长的儿子喝酒,不能成就一番事业的时候,要有心性要忍耐。当事业足够大的时候,在社会中牵扯的资源足够多的时候,自然就会接触各方人士,那时会尽量做出对各方都有利的决定并尽量保持友善和合作的关系。
我觉得产品如果产生了粘性用户量,验证了产品的需求,并有清晰的商业模式规划,就可以去努力融资扩大规模。如果没达到这个阶段,但有国际上高水平人士的认可和加入,那也是有理据来努力融资的。这样,给潜在的投资人造成的骚扰和困扰也会更少。
一个好的产品,只要是方向没选错的话,是要投入相当大的精力来研发和推广的。选择方向要慎重,选好要坚持,做事能力要够强,且要不断进步。这样的话,不坚持也是没道理的。
产品研发,计划安排,调整计划,文档编写,这些属于核心研发。编辑器插件,工具软件研发,这些属于工具研发。网站设计和开发,属于宣发开发。录制推广视频,发表文章,发布公众号,发布帖子,回应群组消息,这些属于市场推广。在过去到现在的这个阶段里,我一个人做所有上述事情,每天时间安排的很满,当然各项具体命令的进度表现得很快,但整个项目来看,就进行的很慢,因为人手不足。
在水果市场里,个头饱满的水果更容易被人看中。我的产品之前还没投放市场。我的经济条件只能艰苦地聘请毕业生、实习生和兼职人士。而开发工具产品的研发难度,比起一般的“做个网站”“做个 app”,要难上几何倍数的数量级,没有深厚的经验的人是很难做好的。找海内外优秀的工程师加入,是我自始就打算的。项目确实很庞大,所以我确实花了大量时间独自完成了已经很完善的初版功能,开发了产品的门面网站,让这个创业产品在水果市场中,看起来是个吸引人的,令人觉得香甜的水果。这样,优秀工程师的加入,大概不是被忽悠或是被骗,因为看到了成品的样子。
创业产品要做大,需要很多优秀的各类职业人才的加入,作为服务软件开发者的工具,开发人才尤其重要。我想要有出色的人才,能够担当合伙人、CTO 这样的角色。我能够亲自培养传授技术能力。在非技术的其他的方面,我也要有能一起做事并能够向对方看齐和学习的人。
项目规划
到目前为止,产品的初版核心功能已经开发完毕,且软件架构已经为接下来的版本安排做了铺垫,相当长一段时间内不会导致重写。现在我来到了为近几个月的新功能编写文档的阶段,同时也启动了中英双语推广模式。
在明年年底之前,会上线类似请求发送器和数据库查看器的工具 Teo Studio ,发布多个向后兼容的大型版本更新,以及若干小 bug 修复。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部