第35节 学习、加入开源的阶段性


❤️💕💕记录sealosopen in new window开源项目的学习过程。k8s,docker和云原生的学习open in new window。Myblog:http://nsddd.topopen in new window


[TOC]

✨ 熟悉我的人都知道,我是一名不折不扣的开源爱好者,从大一开始接触到 GitHub 后,逐渐的沉迷于 开源世界 ~ 今天这篇文章很特别,算是自己参考并且总结出来的开源阶段,以及学习开源项目的步骤和心得。未来自己也是按照自己的规划来进行成长。 同学习 Kubernetes 的成长轨迹open in new window一样,这篇文章将会长期更新,也可以参与贡献open in new window ~

目前我是处于第一阶段,处于一种对开源世界和对知识的沉淀与积累的过程中,这个阶段的主要表现是我们开始学一些基础。但是我喜欢做笔记将它们记录下来,供自己日后翻阅和复习,当然也是制作自己的内容价值。

GitHub - cubxxw/awesome-cs-cloudnative-blockchain: 📚 菜鸟成长手册🚀 CS系列 、云原生系列、区块链系列、web3系列🔥、Golang系列💡......open in new window

这一阶段,并不是意味着我开始迈入第二阶段,第一阶段就 come to an end.

我认为以下所讲的所有阶段就像是人生轨迹,并不是意味着你当爸爸了就不是父母的孩子,你依旧可以扮演着多种角色,并且不断完善和改进自己的角色。开源项目也是如此,类比我们的成长经历,在后一阶段我依旧会扮演好前一阶段的角色。所以我会坚持做自己的内容创作和知识共享 ~

✨ 下面开始介绍适合大多数人的开源项目的不同阶段,为了方便定位,我将上面知识积累称呼为 0 阶段知识积累阶段。下面开始从第一阶段开始讲起~

第一阶段:简单看源码阶段

方法: 简单看源码

说明: 简单看源码、文档、跑跑样例代码

学习效果: 1 ~ 2

有产出: 没有产出

是否达成学习闭环: 尽量问题驱动看源码,从问题出发学源码回归问题,达成闭环

Get 到的技能点: 阅读源码的技能

案例: 阅读 sealer、sealos、Kubernetes、k3s、horizoncd 的源码,并且测试

阶段第一阶段:简单看源码阶段
方法简单看源码
说明简单看源码、文档、跑跑样例代码
学习效果1 ~ 2
有产出没有产出
是否达成学习闭环尽量问题驱动看源码,从问题出发学源码回归问题,达成闭环
技能点阅读源码的技能
案例阅读 sealer、sealos、Kubernetes、k3s、horizoncd 的源码,并且测试

第一阶段的建议是简单地看源码、文档、跑跑样例代码来学习。这个阶段的主要目的是积累基础知识,建议尽量问题驱动看源码,从问题出发学源码回归问题,达成闭环。阅读源码的技能是这个阶段最重要的技能点。建议阅读一些开源项目,例如 sealer、sealos、Kubernetes、k3s、horizoncd 等,并进行测试。

第二阶段:整理源代码

  • 方法: 整理源代码
  • 说明: 仔细阅读源代码,整理出项目结构和流程,将所有源代码或者部分源代码整理一遍,包括将包名全部改掉,编译/测试/运行 通过
  • 🔥 分为三个模块,分别是新扩展的 Makefile 演示、脚本改进的演示,以及 CICD 流的改进:
  • 有产出: 没有产出(加入没有输出分享)
  • 是否达成学习闭环: 整理出项目结构和流程后,进行总结和复盘
  • Get 到的技能点:整理源代码的能力、更细粒度的源码阅读能力
  • 案例: 整理出 Kubernetes 的项目结构和流程,对 sealos 项目进行整理和输出。
阶段第二阶段:整理源代码
方法整理源代码
说明仔细阅读源代码,整理出项目结构和流程,将所有源代码或者部分源代码整理一遍,包括将包名全部改掉,编译/测试/运行 通过
学习效果2 ~ 3
有产出整理出项目结构和流程
是否达成学习闭环整理出项目结构和流程后,进行总结和复盘
技能点整理源代码的能力
案例整理出 Kubernetes 的项目结构和流程

第二阶段的建议是整理源代码,仔细阅读源代码,整理出项目结构和流程。这个阶段的主要目的是更深入地了解项目,掌握项目的整体框架和流程。建议整理出项目结构和流程后,进行总结和复盘。整理源代码的能力是这个阶段最重要的技能点。建议整理一些大型的开源项目,例如 Kubernetes,并进行总结和复盘。

第三阶段:整理 + 输出分享

  • 方法: 整理 + 输出分享
  • 说明: 总结出源码分析、架构设计文档/PPT或架构图,并在个人博客和社区分享。
  • 学习效果: 3 ~ 5
  • 有产出: 有产出,如博客文章、PPT、架构图等
  • 是否达成学习闭环: 输出分享后,进行总结和复盘
  • Get 到的技能点: 输出分享的能力、更深入的源码阅读能力、技术、整理、输出和分享能力。
  • 案例: 总结出 Envoy 的系统架构图和设计方案,并在个人博客和社区分享。画出 sealer 、 sealos 的系统设计和架构方案,Push 到个人博客和社区。Youtube 上也有很多做内容分享的,其中的过程特别特别值得参考和学习。
阶段第三阶段:整理 + 输出分享
方法整理 + 输出分享
说明总结出源码分析、架构设计文档/PPT或架构图,并在个人博客和社区分享
学习效果3 ~ 5
有产出有产出,如博客文章、PPT、架构图等
是否达成学习闭环输出分享后,进行总结和复盘
技能点输出分享的能力、更深入的源码阅读能力、技术、整理、输出和分享能力。
案例总结出 Envoy 的系统架构图和设计方案,并在个人博客和社区分享。

第三阶段的建议是总结出源码分析、架构设计文档/PPT或架构图,并在个人博客和社区分享。这个阶段的主要目的是通过输出分享来巩固自己的知识,并为其他人提供帮助。输出分享的能力是这个阶段最重要的技能点。建议总结一些大型的开源项目,例如 Envoy,并进行输出分享,在分享的过程中不断总结和复盘,加深对项目的理解。

⚠️ 这个过程还可以配合视频讲解,我提供一个方案,在阅读源码后写出自己的阅读笔记,总结出自己的阅读笔记,画出架构图和思维导图,在 bilibili OR youtube 上进行讲解,这样印象更加深刻。建议每个月都对一个开源项目进行一次源码的解析文章,并且发表在 个人博客 和 GitHub 中。我觉得这个习惯是非常不错的。

第四阶段:开发克隆版

  • 方法: 开发克隆版
  • 说明: 开发自己的克隆版,如 sealos 从 sealer 分割出来。开源并且分享到社区(GitHub) 中。用 Go语言 重构 Java 项目或者是 PHP 项目,或者项目模仿开发~
  • 学习效果: 5 ~ 10
  • 有产出: 有产出,如开源项目、GitHub 项目等
  • 是否达成学习闭环: 开源并且分享到社区后,进行总结和复盘
  • Get 到的技能点: 独立开发能力、深度对源码的阅读和理解,技术、项目开发技能
  • 案例: 开发自己的克隆版,如 sealos 从 sealer 分割出来。开源并且分享到社区(GitHub) 中。再比如说 k3s 也是 对 Kubernetes 发行版的精炼。
阶段第四阶段:开发克隆版
方法开发克隆版
说明开发自己的克隆版,如 sealos 从 sealer 分割出来。开源并且分享到社区(GitHub) 中。用 Go语言 重构 Java 项目或者是 PHP 项目,或者项目模仿开发~
学习效果5 ~ 10
有产出有产出,如开源项目、GitHub 项目等
是否达成学习闭环开源并且分享到社区后,进行总结和复盘
技能点独立开发能力、深度对源码的阅读和理解,技术、项目开发技能
案例开发自己的克隆版,如 sealos 从 sealer 分割出来。开源并且分享到社区(GitHub) 中

第四阶段的建议是开发自己的克隆版,如 sealos 从 sealer 分割出来。这个阶段的主要目的是通过独立开发项目来巩固自己的知识,并且为其他人提供帮助。有时候我们觉得某个项目并不简单,比如说 iamopen in new window 项目,项目很优质,我们可以进行再次开发,从而深入学习 iam 的项目设计。

第五阶段:生产化落地

  • 学习如何对项目进行性能优化,如何提高项目的稳定性和可靠性
  • 学习如何进行容器化部署和管理,如 Kubernetes
  • 学习如何进行持续集成和持续部署,如 Jenkins、GitLab CI/CD、Travis CI 等
  • 学习如何进行监控和日志分析,如 Prometheus、Grafana、ELK 等
  • 学习如何进行安全防护和漏洞修复,如 OWASP Top 10、云原生安全等

建议通过实际项目来进行学习,例如可以参与公司的项目实施,或者通过个人项目来进行实践。在实践过程中,可以不断总结和复盘,加深对知识的理解和掌握。

最后,要注意在实际项目中遵循规范和标准,如代码规范、安全规范、架构规范等。同时也要注重团队协作和沟通,与同事进行交流和分享,不断提升自己的技能和能力。

阶段第五阶段:生产化落地
方法实际项目实践
说明将学到的知识应用到实际生产中,通过企业级项目实战经验来巩固和提升自己的技能
学习效果10+
有产出有产出,如企业级项目实战经验、性能优化、容器化部署和管理、持续集成和持续部署、监控和日志分析、安全防护和漏洞修复等
是否达成学习闭环在实践过程中不断总结和复盘
技能点实际项目实践能力、性能优化、容器化部署和管理、持续集成和持续部署、监控和日志分析、安全防护和漏洞修复等
案例参与公司的项目实施、通过个人项目来进行实践

这个阶段的主要目的是将学到的知识应用到实际生产中,并且能够根据业务需要进行定制或自研。建议在公司中承担业务流量,通过企业级项目实战经验来巩固和提升自己的技能。

👀 当然这个阶段,生产化落地的时候,我们肯定要对开源项目进行深度的定制,并没有完美并且最适合业务的项目,这个过程需要我们不断地去探索。这个过程中我们可以吸收到很多牛人的经验,比如说在监控领域、Kubernetes 的网络、可观测性方向的大佬对开源项目不断研究的过程,并且研究出自己的开源项目,这是非常不容易的,这个过程可以帮助你成为国内 ××领域顶级专家。

第六阶段:开发知识产品

这个阶段的目标是将自己学到的知识转化为实际的产品,并且通过分享来帮助其他人。建议开发一些实用的工具或者演示项目,例如 Kubernetes 集群部署工具、云原生应用示例项目等。制作产品的过程中,需要注意产品的质量和用户体验,同时也要注重宣传和推广,将产品推向更广泛的用户群体。

在实际制作产品的过程中,可以不断总结和复盘,加深对知识的理解和掌握。同时也要注意与其他开源社区成员的交流和合作,不断提升自己的技能和能力,让自己成为开源社区的中坚力量。

阶段第六阶段:开发知识产品
方法开发克隆项目或者开源应用演示项目,并将其制作成付费产品(视频/书籍/文档)
说明将自己学到的知识转化为实际的产品,并通过分享来帮助其他人
学习效果10+
有产出有产出,如付费视频、付费书籍、付费文档等
是否达成学习闭环制作产品的过程中不断总结和复盘
技能点产品设计和制作能力、宣传和推广能力、交流和合作能力
案例开发 Kubernetes 集群部署工具、云原生应用示例项目等

💡 这个阶段我们不仅仅获取到了知识产品设计和开发技能,同样还有无形的财富,比如说行业影响力。

第七阶段:开发自己的开源项目

  • 方法: 开发自己的开源项目
  • 说明: 在吸收开源项目 + 企业落地实践的基础上,沉淀出自己的开源项目,并且持续推动开源社区的建设。
  • 学习效果: 10+
  • 有产出: 有产出,如开源项目、GitHub 项目等、有社区反馈(issue),有持续改进(PR)
  • 是否达成学习闭环: 持续推动开源社区的建设,进行总结和复盘
  • Get 到的技能点: 独立开发能力、深度对源码的阅读和理解、项目开发技能、开源社区管理和推广等, 当然还有更多的是行业影响力,跳槽的最佳姿势(GitHub is your resume, let HR find you !)
  • 案例: 开发自己的开源项目,如很牛逼的 sealosopen in new window 项目发起人 方海涛, 在 Cloud Native 领域有很高的知名度。
阶段第七阶段:开发自己的开源项目
方法开发自己的开源项目
说明在吸收开源项目 + 企业落地实践的基础上,沉淀出自己的开源项目,并且持续推动开源社区的建设。
学习效果10+
有产出有产出,如开源项目、GitHub 项目等
是否达成学习闭环持续推动开源社区的建设,进行总结和复盘
技能点独立开发能力、深度对源码的阅读和理解、项目开发技能、开源社区管理和推广等
案例开发自己的开源项目,如很牛逼的https://github.com/labring/sealos项目发起人 方海涛, 在 Cloud Native 领域有很高的知名度。

这个阶段的主要目的是沉淀出自己的开源项目,并且持续推动开源社区的建设。在此过程中,需要不断地学习和掌握独立开发能力、深度对源码的阅读和理解、项目开发技能,以及开源社区管理和推广等方面的技能点。

建议通过吸收开源项目和企业落地实践的经验,进行总结和复盘,沉淀出自己的开源项目。在开源社区中推广和维护自己的项目,不断提升自己的技能和能力,并且为开源社区的建设做出贡献。

😏 再比如说这里还有一个知名大佬,吴晟,参考他的博客:https://wu-sheng.github.io/me/open in new window,以及他的 GitHub 地址:https://github.com/wu-sheng/me

第八阶段:商业化自己的开源项目

阶段第八阶段:商业化自己的开源项目
方法在自己的开源项目产品基础上,持续推进社区生态建设,并且逐渐走向商业化服务道路
说明利用开源项目为核心,打造商业化产品和服务,为用户提供高质量、可靠的解决方案
学习效果100+
有产出有完全的产出和企业客户闭环
是否达成学习闭环持续推进社区生态建设
技能点商业化运营能力、项目管理能力、团队协作和领导能力
案例TiDB、Kafka 等等

这个阶段是比较困难的,需要在前几个阶段的基础上不断地积累、总结和沉淀。在自己的开源项目产品基础上,持续推进社区生态建设,并且逐渐走向商业化服务道路。利用开源项目为核心,打造商业化产品和服务,为用户提供高质量、可靠的解决方案。

在这个阶段中,需要不断提升自己的商业化运营能力、项目管理能力、团队协作和领导能力等方面的技能点。需要建立高效的团队协作机制,同时注重项目管理和风险控制,确保商业化服务的高质量和可靠性。

在商业化服务的过程中,需要注重用户体验和客户服务,建立良好的用户关系,不断改进和优化产品和服务。同时还需要积极参与开源社区的建设和推广,为开源社区的发展做出贡献。

这个阶段的回报率非常高,有完全的产出和企业客户闭环,达到了100+的学习效果。

总结

这篇文章详细介绍了从学习开源到商业化的八个阶段,让你逐步成为开源领域的大佬。但是,如果你认为这是一条轻松愉快的道路,那你就大错特错了。这个过程需要不断的学习和总结,以及对知识的深度理解。但是,如果你能一步步走到商业化阶段,那么回报肯定是非常可观的。总之,跨越这八个阶段需要勇气、毅力和耐心,但是这个过程也会让你成为行业中的佼佼者。

这个周期会更长,即使我是从大一开始准备的,也依旧遥不可及。我一直在探索 复利曲线 的那个拐点~

对于我们来说,不管是谋事在人,成事在天。又或者是 谋事在天,成事在人,我们现在处于一个大背景的时代,可以兼容各类各样的人才,硬实力(技术)代表着硬性指标。包括更多的软实力,比如:能力、情商(沟通力、影响力、领导力)。在这个架构上,影响这一因素的包括我们的三观:人生观、价值观、世界观。从而影响我们的格局(眼界+行动力 + 胸襟、胆识、等心理要素的内在布局)和人脉~

END 链接