如何从 0 到 1 落地你的第一个开源项目?破局分享!

简介: 如何从 0 到 1 落地你的第一个开源项目?破局分享!

前言

大家好,我是 「周三不Coding」。最近马上就要到秋招提前批啦,相信很多小伙伴都在忙着复习八股文、刷算法题、准备简历中。

最近我也关注到了很多同学都在问一个问题,如何做一个自己的项目。

项目的重要性想必大家都清楚,如果你的项目在开源社区内有一定知名度,在面试中会非常加分(一位腾讯面试官在面试时亲口和我说的)

那么如何在临近秋招,落地一个开源项目呢?今天这篇文章主要从开源项目的 「破局之道」 与 「破局之法」角度出发,详细和大家分析如何从 0 到 1 落地你第一个真正意义的开源项目。

个人经历

在开始具体的讲解前,不妨先听我讲讲我的故事。

从接触编程开始,我就是个躁动不安的人,总喜欢搞点事情。尽管那时候什么都不会,但经常去 Github 和各大编程论坛上逛,Star 一些项目,幻想着以后自己也有能力能够做出来一个开源项目。

但是,有个最大的问题,我相信很多同学也正在面临该问题,自己有想法,但是却担心无法落地,担心做得不够好,总而言之就是一万个担心。我当时也是如此,有过一些自认为很不错的想法,但在还没有迈出第一步时就夭折了。

最近,可能是伴随着我代码能力的提升,以及持续躁动不安的心,我终于迈出了自己的第一步,跟了一波 ChatGPT 的风,做出了 GPT Terminal

其实回过头看一看,做的过程真的很快。从我有想法,到我开始做,到最终项目发布到 Github,耗时只有一周。

项目原理很简单,关键是我如何寻觅想法、获取灵感、克服完美主义、克服害怕失败的恐惧,这才是今天我要说清楚的事情。

大家对项目感兴趣的话可以看看我这个专栏 —— GPT Terminal 专栏

image.png

破局之道:执行力 >> 想法

首先,我给大家抛出一个我认为正确的结论

  • 开源项目能够落地的两个必要条件 —— 想法 & 执行力
  • 执行力 💪 >> 想法 💡

破局之道其一:想法

做自己的开源项目与跟着教程、视频做项目的最大不同在于:一个是主动输出,一个是被动输出。两者的差别十分之大。

  • 被动输出
  • 你只需要具备「做题家思维」,走一条「阳关道」,前方的坑都已经被教程的作者所填平,做的过程会十分顺利。你不需要过多的思考与设计,即可顺利地完成该项目。
  • 但是这种项目注定容易烂大街,很难照搬到简历或作为自己的开源项目,导致面试求职时天花板低。
  • 主动输出
  • 你需要具备「出题家思维」与「产品意识」,一路上会遇到多个「十字路口」,你需要分析现有的用户需求,做产品的规划与设计。需求方可以是你自己,也可以是社会大众。在做的过程中,你会去不断地思考解决方案,并从多个方案中挑选出你认为的最优解。
  • 经过这一系列的努力,最终你孵化出的开源项目,融合了你的思考,具备有你的价值导向。而且这种项目一旦具备创新性或趣味性,或解决了某种特定的需求,很容易成为爆火的开源项目。

要想做到主动输出,首先你得有一个想法,不论这个想法是否现实、是否可落地。相信很多同学就难倒在这第一步,由于长期的「做题家思维」,头脑空白,很难真正地挖掘自身需求或周边用户需求,或者想到有意思的产品内容。

接下来,我从三个角度和大家聊聊,我是如何 “破局”、如何生产想法。

image.png

开拓者心态

这一点说起来其实有点中二。大家在学习的时候,可能扮演的角色更多的是一个 Follower,跟着大牛的脚步,稳扎稳打学好基础知识。诚然,这一点十分重要,让你能够脚踏实地地学本领,但是,如果在学习的过程中,同时保持一个开拓者心态,经常性地去思考,我可不可以在某个细分领域,成为该领域的带头人,我也当一次大牛,出一些专栏、教程、视频等?潜移默化中,这种意念力会将你代入到这个开拓者角色中,思考一些框架、产品的设计,并幻想自己有朝一日也可做出来类似的产品。其实在思考中,你无意识地在向「出题家思维」转变,这一点至关重要。


产品思维

「开拓者心态」其实是一种虚无缥缈的东西,每个人都可以胡思乱想,通俗点来说叫 YY。所以说,它还需要与切实的思维逻辑相绑定,从而发挥出最大的作用。「产品思维」在其中起着重要的作用,这意味着你需要去站在用户的角度思考问题,关注用户需求,从而想清楚你要做一个什么样的项目或产品。如果你找不到需求,那也没关系,你只需要关注你认为有意思的东西。如果它能够起到娱乐作用,那么相当于你发现了用户的潜在需求,甚至你是在引导用户需求。

知识输入积累

当你具备了前两者之后,你应该很快就会发现身边的需求,产生一些初步的想法。但是,你还需要大量的知识输入积累,才能支撑着你把项目做下去、做成功。举个🌰,小学打游戏的时候,我就想做一个游戏脚本,辅助刷怪升级,但是我当时并没有对应的编程能力与技能,所以说这个想法在当时就只可能是想法。前期的「知识输入」重要的,当你有了足够的「输入」,你就会发现「输出」是顺其自然的事情。

Idea 分享

说了这么多,有没有什么实际的想法呢?其实是有很多的,这里给大家说几个比较简单的。目前 AIGC 非常火热,那么咱们可不可以从最简单的 ChatGPT 入手,考虑一下如何基于 GPT 来搭建一个新项目或优化我们的现有项目?

  1. 我之前写过一个编程论坛的项目,其中有问答模块,但是其实有很多问题都是比较重复的、简单的。如果网站用户反复地看到这些问题,会认为网站质量较低,丧失用户粘性。那么我们是不是可以将重复的问题过滤并收集起来,做成一个数据集,并 Feed 给 GPT 模型,将其训练为一个编程助手语言模型,这不就解决了网站中的重复性问题吗?(大家如果不知道如何可视化训练模型,可以看看我这一篇文章
  2. 做一个自媒体助手,通过 AIGC 辅助创作者创作文章、视频、音频等内容,你需要完善你的平台服务,提高用户创作内容的效率。这也是个不错的想法,而你需要做的事情比较简单,只需要对 ChatGPT 进行微调,使其能够起到辅助创作的作用即可。
  3. GPT Terminal 项目的出发点是兴趣,我觉得将 GPT 与终端结合在一起比较酷。此外,我也是为了提升我日常的工作效率,我在设计之初加入了命令行翻译角色、中英文互译角色、SQL 翻译角色。这三类都是我最经常用到 ChatGPT 的地方。

破局之道其二:执行力

这一点重要性其实不言而喻。在我看来,执行力 >> 想法

想法很有可能是你在吃饭、散步、打游戏、刷视频时,突然冒出来的奇思妙想。思维活跃的人可能一天一个想法。但是如何将想法落地,最关键的是你的执行力。在有了想法之后,你如果确定想法是可落地的,那么你就不需要再继续想下去,毕竟你做的不是真正的产品,不需要你进行大量的需求分析,就算是真正上线的产品,也不需要你一次性做到完美,毕竟现在最流行的是「敏捷开发」嘛,通过多次迭代后创造出成功的产品。

所以说,在有了想法之后,不必继续深想,不必瞻前顾后。你只需要想方设法做出第一版 Demo,将你的想法落地,并不断完善,那么它就是一个有价值的开源项目。

这一过程中,执行力十分重要。你需要持续付出努力,完成你在每一个阶段设下的既定目标。

破局之法:从 0 到 1 落地开源项目

其实,做开源项目就像是搭建一个房子。

  • 你需要负责房子的户型设计
  • 你需要考虑修改房子需要用到哪些原材料
  • 你需要为房子打好地基
  • 你需要一层一层地将房子盖起来
  • 你需要购置家具、装修样板房
  • 你需要将你的房子卖给用户。

这每一步环节,其实都可以一一对应到我们做开源项目的过程。

相信聪明的大家已经猜到大概内容啦,接下来我给大家进行具体的拆解。

image.png

“规划你的摩天大楼” —— 项目需求、技术选型、设计方案

在有了项目想法之后,你需要对项目的想法进行细化,即你需要进行详细的需求分析,拆分你项目的功能点。这些功能中,有的是核心功能,有的是非核心功能。这也意味着,核心功能必须在你的第一版 Demo 中完成,而非核心功能可以排到后期完成。这其中我们采用了「分治思想」,将大问题拆分为小问题,逐个击破。这样一来,在做的过程中,我们不会有太大的压力,能够快速发布第一个版本。

拆分完需求之后,我们需要进行技术选型。如果只是快速落地想法、将开源项目做成,我认为咱们直接采用最熟悉、最简单的技术栈即可。

  • 这里就不得不提到「学生思维」啦:在做项目时,总是过度选型、过度设计,导致最后罗列出一堆看似高大上,却完全用不到且不熟悉的技术栈。这样可能会使得你初期斗志满满,但是一旦受挫后就容易使项目夭折,中途放弃。因此,我建议首选熟悉的技术栈,除非你认为你的执行力足够强,一定能坚持到最后。

至于设计方案的话,因项目而异,大部分在 Github 上都有类似的解决方案,只不过你需要将其整合到你的项目中。

“打地基,搭架子” —— 最艰难的一步

这一步我愿称之为最艰难的一步,也是最容易劝退的一步。万事开头难,从 0 到 1 去搭建一个项目架构,很考验设计能力。对于完美主义的人来说,在这一步会浪费大量的时间,想方设法地去构建项目框架,想让其做到「可扩展」、「可维护」、「可迭代」。但是咱们冷静下来细想一个问题,如果你的产品已经到了快要无法 “生存" 的地步,你还会去费尽心思提升用户体验吗?所以说,最关键的是先 ”活“ 下来,再去考虑 ”发展“ 的事情。

因此,如何快速 ”渡劫“,关键之法在于,以做 Demo 的心态去搭架子,即使你最后写出来的是 ”屎山“ 代码,那你也可以第二版、第三版中不断维护、不断改进,任何事情都不可能一蹴而就

“筑高台,大力出奇迹” —— 填充完善你的项目内容

恭喜你,迈过了最艰难的一步,顺利走到了这个阶段。这时候,相信你已经初步搭建起了项目的框架,并实现了部分核心功能。之后,你需要考虑的就是按照之前的层次结构,将其他功能点逐一实现并填充进去。如果你的项目比较简单,那么到了这一阶段,你只需要去复现其他的开源解决方案,将其集成到你的项目中即可。

大力出奇迹,当你投入足够多的时间到项目中,你的项目功能点会越来越多,并且越来越完善。

“门面工程,装修艺术” —— 修饰完善 README 文档

终于到了最后的轻松 + 愉快阶段啦。这个时候,你已经完成了项目的主体开发,进入到了发布上线的阶段。而为了便于你之后推广项目,你需要对其进行一定的修饰与包装,即完善你的 README 文档。

我相信绝大多数用户在浏览开源项目时,第一眼看的便是 README 文档。一个好的 README 文档能够给用户留下深刻的印象,使用户想要尝试去使用你的项目。

“装修” README 也是一门艺术,接下来我给大家列一个大概的 “装修” 框架。

具体示例可以参考 GPT Terminal

  • 项目 Logo:使你的项目高大上一些,吸引用户(可选)
  • 项目简介:简明扼要告诉用户你的项目核心是什么
  • 项目预览:通过图片、视频的形式,让用户直观地感受项目(可选)
  • 功能概览:分点告诉用户项目的核心功能
  • 快速开始:清晰明确地告诉用户,如何从 0 到 1 运行该项目
  • 贡献指南:当你的项目吸引到用户时,你需要给用户一个渠道与方法,一起参与到开源项目的建设中(可选)
  • 特别鸣谢、开源协议(可选)

“销售之道,用户心智” —— 如何推广你的项目

在《定位》一书中,多次提到获取「用户心智」在营销当中起到至关重要的作用。

其实咱们细想一下各个互联网领域的头部产品,其实它们正是做到了牢牢掌握用户心智,成为了这一品类的代名词。

那么,我们也是需要按照这一准则,去推广我们的项目。在推广的过程中,它一定是具备鲜明的标签,有着区分于其他项目的亮点,这样才能让用户牢牢记住你的项目。

我在推广 GPT Terminal 项目的过程中,主要以两个亮点为主:「终端交互」&「角色定制」,围绕这两点进行宣传,让用户直观地感受到 GPT Terminal 项目与普通 ChatGPT 项目的区别在哪里。

而且你需要坚持地维护项目,因为长期的维护本身就是一种宣传方式,这可以使用户感受到你是在用心做这一项目,一定程度上证明项目是可行的、可用的,出 Bug 的概率较低。

总结

相信大家看到这里,一定对于如何搭建一个开源项目,有了更加深刻的理解与认识。不过还是要牢牢记住「破局之道」 —— 想法与执行力。这两点具备后,「破局之法」是顺其自然、顺理成章的事情。

如果大家目前仍然没有一个具体的想法,可以参考想法部分的 Idea 分享。如果大家还需要我提供更多想法,我可以再写一篇文章,详细和大家聊聊我最近关于开源项目的思考~

祝大家能够尽快拥有一个属于自己的开源项目,为自己的简历添加点儿真东西!

看在我这么认真的份上,大家点个 Star、点个赞不过分吧(磕头!)下期再见!

相关文章
|
7月前
|
项目管理 测试技术
初创团队如何做好第一个项目
初创团队如何做好第一个项目
652 2
|
7月前
|
消息中间件 存储 缓存
阿里P8架构师带你“一窥”大型网站架构的主要技术挑战和解决方案
传统的企业应用系统主要面对的技术挑战是处理复杂凌乱、千变万化的所谓业务逻辑,而大型网站主要面对的技术挑战是处理超大量的用户访问和海量的数据处理;前者的挑战来自功能性需求,后者的挑战来自非功能性需求;功能性需求也许还有“人月神话”聊以自慰,通过增加人手解决问题,而非功能需求大多是实实在在的技术难题,无论有多少工程师,做不到就是做不到。
|
前端开发 JavaScript 小程序
新来个技术总监,给公司项目引入了全新的业务架构,堪称最佳实践!
新来个技术总监,给公司项目引入了全新的业务架构,堪称最佳实践!
|
Cloud Native
《拥抱云原生,创造业务“新生”》电子版地址
拥抱云原生,创造业务“新生”
136 0
《拥抱云原生,创造业务“新生”》电子版地址
《研发效能36计:研发效能提升之路,从天文学的演进说起》电子版地址
研发效能36计:研发效能提升之路,从天文学的演进说起
151 0
《研发效能36计:研发效能提升之路,从天文学的演进说起》电子版地址
|
运维 Kubernetes 算法
独家深度 | 那些年我做开源和自研走过的弯路和经验
本文将重点分享开源结合自研项目的一些经验。
1055 0
独家深度 | 那些年我做开源和自研走过的弯路和经验
WM
|
存储 canal 开发框架
我所经历的创业公司是如何做技术的?--《我与开源的故事》
人类的文明得以快速发展,很重要的一点在于我们可以站在巨人的肩膀上继续探索。而开源世界之于互联网行业来说就是这个巨人之一, 本文将重点阐述作者本人所了解的开源世界,以及如何通过开源项目做出有效个工作产出。
WM
9088 0
我所经历的创业公司是如何做技术的?--《我与开源的故事》
|
人工智能 算法 搜索推荐
又一个行业PaaS即将落地,你准备好了吗?
又一个行业PaaS即将落地,你准备好了吗?
202 0
又一个行业PaaS即将落地,你准备好了吗?
|
机器学习/深度学习 人工智能 算法
带你读《创新之巅: 未来十年重构商业的六大战略性技术》第一章未来十年重构商业的 六大技术1.3AI 如何工作
带你读《创新之巅: 未来十年重构商业的六大战略性技术》第一章未来十年重构商业的 六大技术1.3
带你读《创新之巅: 未来十年重构商业的六大战略性技术》第一章未来十年重构商业的 六大技术1.3AI 如何工作