Apache Zeppelin 番外篇——参与开源的得与失

简介: Apache Zeppelin 番外篇——参与开源的得与失

背景

经常在公司做一些业务开发,公司里面由于各种人员流动等问题,导致代码质量也是参差不齐,最终问题就是很难维护,前期还想着能够优化代码,但是大部分时间都是需求都是倒排期,所以也导致不再想进行代码优化,有了能跑就行的想法,因此就是基本上在原来的代码上缝缝补补,所以越来越对这种代码无感

但是觉得长期这样下去,必然自己能力会越来越差,所以想着看看一些开源项目

参与开源项目的好处

(1)避免陷入上述代码混乱的情况中,所以试着参与开源项目,开源代码都是比较规范、而且代码质量较高,所以在熟悉了公司的项目之后,建议结合自己的工作需要引入一些开源项目进来提升自己的工作效率的同时,学习一下高质量的开源项目

(2)参与开源项目,其实就是熟悉一个新项目的流程,和公司内部项目没什么太大的区别,其实任何一个项目,只有刚进入的时候,学到的东西才是最多的,当自己熟悉了这个项目之后,从这个项目能学到的东西就有限了,就相当于熟悉一个新项目吧,只是项目代码质量更好一些

(3)开源项目一般项目工程量都比较大,里面可能也会涉及到一些算法相关的内容,比如说:

LRU算法在Apache Zeppelin 中的应用

对于经常做业务的同学来说的话,可以感受到项目里面实际使用算法,而不是仅仅是业务逻辑

(4)参与开源项目,会了解到Semantic Versioning 和 Linear Commit History ,知道软件或者项目发版本的含义,以及一些commit 信息的规范,特别是顶级项目,这种规范性更强,还有就是免费获得code review,这一般在公司也是很难收获的,大部分都是为了完成业务,而很少去关注这些

然后再就是设计文档,如果是想引入一个新的功能里面可能需要写一些详细的设计文档

(5)获得成就感或者一些面试求职加分等等

(6)提升自己的英文能力,很多人认为英文能力不强,不能看懂英文文档,说实话,可能前期确实有些难受,看英文文档,特别是在zeppelin的英文文档,刚开始会很不适应,但是随着看多了之后,只剩少量单词不懂,然后就去使用翻译软件来解决,能看到下面关于一个pr的沟通,前后沟通了40-50次对话,全程英文,但是理解起来其实也没有那么复杂,只有少量单词不懂的时候,会去查一下,然后就是怎么去回复别人,一般也是一些简单的对话,所以整体来说,只要上过大学,对于这种沟通,我认为是完全没有问题的

参与开源项目的坏处

也不算说是坏处吧,只能说一些经验

(1)该怎么选择合适的项目,记得选择自己熟悉的语言、熟悉的领域,后面再说下为什么要这么做,比如说:你熟悉java,但是你选择开源项目是python或者go 开发的,那可能前期就劝退自己了,除非你是想新学习一门语言

(2)只有自己熟悉的语言,熟悉的领域,项目前期的搭建和部署才会比较顺利,因为开源项目前期工作量非常大,怎么能让项目能够运行起来,可能需要很多的配置等等,如果不是熟悉的语言,会非常难受

(3)前期投入会巨大,基本上可能1周都在部署和运行项目,然后再花1周熟悉项目、熟悉代码,后续才能去完善自己想做的功能,前期度过之后,后续其实非常轻松的,就相当于我们自己新参与一个项目一样,前期的熟悉会花非常多的时间,突然某天弄好了,那你也就通了

(4)选择熟悉的领域也是非常有必要,不然你只能在开源项目上修修改改一些小bug,很难提出有建设性的建议,甚至如果你不是项目的使用用户的话,连bug可能都提不出来,只能看到别人提bug,别人修bug提pr,除非你参与一个有明确规划的项目,里面放一些功能规划内容,让参与者参与进去,不然非常困难,找不到bug、提不出新的功能点

https://github.com/didi/KnowStreaming/issues

KnowStreaming 项目非常不错,官方人员给了非常多的issue便于大家去参与进去,而不需要自己去找bug、想功能

(5)开源项目其实也没有那么神秘或者神奇,或者对于大家来说那么高不可攀

(6)参与一个社区活跃度较高的开源项目而且尽量找到熟人,不然你提的pr或者issue不会有跟进这么迅速,一旦其中一个commiteer不同意你的pr,你也很难受


相关文章
|
7月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
785 5
|
7月前
|
前端开发 Java Apache
Apache Zeppelin系列教程第七篇——运行paragraph的整个流程分析
Apache Zeppelin系列教程第七篇——运行paragraph的整个流程分析
87 0
|
7月前
|
SQL Java 数据库连接
Apache Zeppelin系列教程第四篇——JDBCInterpreter原理分析
Apache Zeppelin系列教程第四篇——JDBCInterpreter原理分析
75 0
|
7月前
|
Web App开发 前端开发 Java
Apache Zeppelin系列教程第二篇——整体架构
Apache Zeppelin系列教程第二篇——整体架构
171 0
|
7月前
|
SQL Java 数据库连接
Apache Zeppelin系列教程第十篇——SQL Debug In Zeppelin
Apache Zeppelin系列教程第十篇——SQL Debug In Zeppelin
115 0
|
7月前
|
算法 NoSQL Java
Apache Zeppelin系列教程第八篇——LRU算法在Apache Zeppelin中的应用
Apache Zeppelin系列教程第八篇——LRU算法在Apache Zeppelin中的应用
68 0
|
7月前
|
Java 数据库连接 Shell
Apache Zeppelin系列教程第六篇——Zengine调用Interpreter原理分析
Apache Zeppelin系列教程第六篇——Zengine调用Interpreter原理分析
127 0
|
1月前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
1月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
7月前
|
Kubernetes Cloud Native API
欢迎报名 Apache Seata (incubating) 开源之夏
Apache Seata (incubating) 邀请学生参加 2024 年开源之夏活动,报名时间为 4 月 30 日至 6 月 3 日。该项目旨在培养分布式事务领域的开发者,参与者将远程协作并有机会获得奖金。
1332 19

推荐镜像

更多
下一篇
DataWorks