社区圆桌分享(代码学习无止境,程序员如何规划自己的职业生涯发展())
CloudWeGo Study Group 是由 CloudWeGo 社区发起的学习小组,开展以 30 天为一期的源码解读和学习活动,帮助新成员融入社区圈子,和社区 Committer 互动交流,并学习上手 CloudWeGo 几大框架项目。01 圆桌议题
目前 CSG 第二期——Hertz 框架篇已经正式启动!本期活动期间安排了 4 期直播分享,主题分别为:
从精通烤肉到精通HTTP——HTTP 框架初识;
如何利用命令行工具 Hz 快速开发 Hertz 服务;
如何对开源项目进行学习——从全局到局部分析的思路;
代码学习无止境,程序员的未来归于何处。
本文为 CSG 第二期第四场直播中杨文、王伟超和李龙圆桌讨论分享的内容。
回放链接:https://meetings.feishu.cn/s/...
- 议题一:开源自 2020 年开始列入国家规划后,开源项目越来越多。开源项目的涌现,为大家提供了学习和深度了解升级项目的途径。从学习的角度来看,一个开发者如何参与项目、学习项目?
- 议题二:CloudWeGo 开源项目主要方向是云原生微服务框架,这类项目主要的使用场景是什么样的?学习这类项目的价值点在哪里?混迹社区有什么经验分享?
- 议题三:程序员作为项目使用者的角色,开发者作为开源项目设计者的角色,这两种角色关注的点有什么不同?作为一个经历过这类角色转换的社区 Committer 来说,有什么经验可以分享?
- 议题四:在社区视角和全局角度下,谈一谈为什么大厂都在招聘 Go 工程师?程序员应该如何规划自己的职业发展?程序员最终的归宿是哪里?
- 议题五:大佬分享环节,大佬们关注的博主/学技术的网站/书籍推荐。
文章图片
03 议题一 开源自 2020 年开始列入国家规划后,开源项目越来越多。开源项目的涌现,为大家提供了学习和深度了解升级项目的途径。从学习的角度来看,一个开发者如何参与项目、学习项目?
分享人:王伟超
关于这个问题的介绍主要从以下四个方面展开:
- 如何与 Kitex、CloudWeGo 社区结缘;
- 个人对于云原生和开源文化的认识;
- 为什么要参与开源以及我理解的开源精神;
- 个人以后对开源的想法。
其实与 Kitex 的结缘是非常巧合的,虽然做了几年后端开发,但是感觉在技术上还是存在一些瓶颈,因此想要提升自己。回顾一下本人的过往经历:
- 2021 年 9 月尝试在 InfoQ 做输出,挑战日更,更多是做翻译;
- 10 月底决定学一点特定的技术,发现之前自己学习的更多是“道”和“法”层面,主要关于编程理念的知识和理解,很少关于“术”和“器”;
- 联想孔子的一句话:“吾尝终日不食,终夜不寝,以思,无益,不如学也”,就是之前都是思维层面和架构层面的思考,不如学点具体的技术。因此,我决定再找一个话题,从感兴趣的方面入手,但是 Docker、云原生、架构设计、微服务思考这些话题非常火热且竞争很大,可能一时难以入手做出自己的东西;
- 想起刚刚开源的 Kitex ,以及刚开源的 CloudWeGo 项目中相关的一些中间件集合的资料和实践应该比较少,于是开始了《CloudWeGo 微服务实践》系列,做了一个小的集合,但是也没写完整,只是写到了操作数据,不是一个完全的业务实践。
个人对于云原生和开源文化的认识
那么我是怎么一步一步了解或者接触到开源文化的呢?
这大概要回顾 2018-2019 年,当时在深圳经常参加一些技术峰会、Meetup 等活动,这个城市的技术氛围还是比较不错的。那时就能明显地感觉出来云原生、围绕容器的虚拟化 K8S 相关一定是一个技术趋势,当时也是因为对 Docker 感兴趣,所以更多地留意了 K8S 这些相关的技术领域。
最后在机缘巧合下,了解到 Linux Foundation,即 Linux 开源基金会,会有一些技术认证。当时我想通过这种机会,特意地学一些特定的技术,比如他们推出了 CKA 、CKS,所以这也是一种学习的渠道。
不仅如此,我还会经常关注基金会推出的一些开源项目。当时在学 K8S 的时候浏览了一遍 K8S 相关文档,给他们的文档提过一些 PR ,这是我最早接触到开源。
为什么要参与开源以及我理解的开源精神
- 学习优秀的开源项目
- 开源世界是一个包容开放的世界
- 协同共建,从点滴做起,融入社区带来成就感
- 个人以后对开源的想法
- 梦想
- 布道者
- 未来计划
分享一名很有代表性、具有极客范儿的开源爱好者——苏业钦,是云南的一名儿科医生,但是他业余其实也是一个 Linux 玩家,感兴趣的同学可以了解一下。
文章图片
最后希望大家都能够在代码的世界里找到乐趣!
分享人:杨文
关于这个问题,从我的实际经验出发,将从两个方面进行分享:
- 自己去做的角度;
- 参与项目的角度。
自己主导去做开源,其实相对来说不是很硬核,比如 Go 夜读这样一个 Repo。
Go 夜读目前在 Github 上 Star 数应该有 1W+,其实 Star 数量本身不会代表什么,它更多代表的是一种经历,从这个角度来看,我觉得 Star 数的参考有助于我们理解开源的精神,或者说它是开源所带来的反馈。
- 明确开源项目运作的意义
- 项目发展需要过程
首先就是要去做,做到一个你认为还不错的程度,然后在你的朋友圈或社区去推广。比如CloudWeGo,其实也是通过实际解决了一些场景需求的问题,然后开源出来,之后一步一步稳扎稳打发展起来。类似今天我们这样的一个活动,其实都是在实实在在地帮助社区的人。项目本身如果有价值且有活力,不管你是组长还是参与者,只要加入其中,其实都能学到很多东西。
以上就是从自己的角度出发,找到一个你自己想要去投入的项目,或者对于你来说需要解决的痛点问题,然后持续迭代。是金子总会发光的,项目也一样,只要项目是实实在在有价值的,总会被更多的人关注到。
- 参与项目的角度
- 能解决你的问题。这是评判你要怎么选择项目、参与项目的条件或标准。
- 确定开发语言。选择相对来说覆盖面比较广的开发语言,不管是项目构建还是开源的运作会更体系化、规范化,避免踩坑。
- 参与开源项目的目的。考虑开源项目的影响力,能否有所学习和收获并为项目输出一些自己的价值。
总之,选择当前适合你的,以及明确你想要成为什么样的人,承担什么样的角色,然后对应地寻找一些项目帮助你完成目标。其实参与开源项目也要量力而行,选择真正适合自己、感兴趣的领域,然后在这个技术领域之上继续深耕。只有通过长期的技术方面的投入,才能够在该领域里面真正有一些比较好的产出和结果,从而真正学到内核并获得提升。
分享人:李龙
关于开发者如何参与开源的问题,我提供了以下三种参考方式:
- 通过参与 First Good Issue 贡献 / 解决社区 Issue;
- 通过实战(项目实战 / 性能对比等),发现可优化的点,解决并反馈社区;
- 直接阅读源码。
- 一般社区会有很多积压的 Issue ,初期可以挑选一些简单的 Issue。
有的 Issue 可能是使用方面的 Bug,可以尝试修复这些 Bug。我通过不断地解决 Issue ,逐步熟悉框架,有简单的 Bug 去修复,大概持续一到两个月,对这个框架基本上也就比较熟悉了。
- 开源社区一般会不时提供新手任务,大家可以积极参与。
综上,可以通过社区发 Issue 或者自己主动找 Issue 的方式参与开源。相比而言,像 Gorm 本身 Issue 就很多,感兴趣的同学可以挑一些简单的 Issue 参加。CloudWeGo 会定时发一些新手任务,大家也可以积极参加。
参实战(项目实战/性能对比等)
- 修改文档上的实例 Demo 反馈社区。
- 做一些压测,去压下不同框架的性能。
直接阅读源码
当然也可以直接阅读源码,但是对于小白来说比较难上手,也会比较痛苦。
以上是三种参与开源的方式,另外在对象选择上我个人比较倾向于研究平时会使用到的项目,比如我平时会使用到 Kitex 或 Gorm ,这样感受会好一些。
04 议题二 开源 CloudWeGo 开源项目主要方向是云原生微服务框架,这类项目主要的使用场景是什么样的?学习这类项目的价值点在哪里?混迹社区有什么经验分享?
分享人:李龙
CloudWeGo 的使用场景
如果是希望选择一款高性能、灵活性强以及可以满足内部定制化需求框架的用户,CloudWeGo 提供的微服务框架会是一个不错的选择。CloudWeGo 开源项目主要有以下特征:
- 高性能( Netpoll / Sonic / Frugal 等)
- 提供了丰富的扩展能力
- 优化的用户 API 接口
学习这类项目的价值点
- 学习框架分层设计 / 一些比较好的设计点
参考资料:字节跳动开源 Go HTTP 框架 Hertz 设计实践
- 学习框架的一些性能优化的 tip,扩展自己的视野
参考资料:https://juejin.cn/video/70462...
- 压测框架性能,探讨交流学习
社区经验分享
- 一个好的 Case:通过在社区学习优秀的设计和性能优化点,贡献兄弟社区。
讨论地址:https://github.com/cloudwego/...
- 一个不好的 Case:对使用的框架提出了一些模糊的问题/评价。
05 议题三 程序员作为项目使用者的角色,开发者作为开源项目设计者的角色,这两种角色关注的点有什么不同?作为一个经历过这类角色转换的社区 Committer 来说,有什么经验可以分享?
分享人:王伟超
项目使用者视角
作为一名项目使用者,在考量开源项目时会考虑以下几点:
- 开源项目是否会持续维护;
- 文档是否丰富;
- 社区是否活跃;
- 当前项目是否可用、好用,能解决当下团队的技术问题;
- 不满足的地方是否能扩展。
作为一名开源项目设计者,主要是考虑如何更好地或者更快地帮助用户解决其问题。以 CloudWeGo 项目来说,作为字节内部实践的总结,开源出来是想帮助更多人解决一些共性问题,因此可能会更多考虑以下问题:
- 通过维护项目接受用户反馈,还有哪些共性的问题没有覆盖到;
- 开发新的一些特性;
- Bug 的维护是否及时;
- 能否比较快的帮助用户解决他们遇到的问题;
- 文档维护与不断丰富,业务案例的整理。
分享人:杨文
为什么大厂都在招聘 Go 工程师?
- Go 语言的逐步发展
- Go 语言的特性
- 大厂的应用场景
程序员的职业发展及最终归宿?
我有一个观点:语言只是用于解决问题的工具。
关于个人职业发展和职业道路,需要考虑好以下几点问题:
- 本身擅长语言,希望在技术深度上去发力?
- 结合所在业务,希望提升业务能力、相关的个人软性素质以及管理能力?
- 通过技术解决业务的问题,带来业务价值?
Go 所带来的价值维度,只是作为一个能帮助你踏入门槛、或者能够帮助你去解决问题的语言工具。而个人的职业发展主要取决于当前你自身的定位和价值点。Go 是用于业务,还是去做基础设施和底层一点的内容,都取决于你自身所在的领域、或者是工作需求,它只是作为能够满足你职业发展需要的一门语言工具。
另外,当前我理解,Go 工程师的工作还是偏向业务的,或者产品功能偏多一些,在基建或偏底层一点的相对比较少。大厂应该也是业务或产品居多,但是基建等其他方面的需求可能会逐步处于上升的状态。
Aftership Go 应用主要还是业务侧,还有一部分会和云原生或基础设施有一定的关系,但是还没有覆盖很广、或者像字节这种有专门的架构部门去做 Go 生态的基础建设。目前还没有,根据公司发展的阶段后面可能还是会需要并去展开做这方面内容。
07 议题五 大佬分享环节,大佬们关注的博主/学技术的网站/书籍推荐。
分享人:李龙
文章图片
推荐原因:
- 《设计数据密集性应用》
- 《程序员的自我修养:链接、装载与库》
- 《Google SRE 工作手册》
- 《微服务架构设计模式》
分享人:杨文
文章图片
推荐原因:
- 《微习惯》
- 《沸腾新十年》
- 《Salesforce 传奇》
分享人:王伟超
文章图片
- 书单
- 博客
- 软技能
08 Q & A Q:Go 语言后续的一些整体架构的演进如何?主要是为了支持什么?
A:主要是针对性能的问题,支持一些业务发展。就字节跳动内部的一些场景来说,框架调优主要是为了性能优化。比如对于框架而言,传输的整体损耗在数量大规模积累的基础上都是实打实的成本,所以通过优化性能可以减少我们成本的一些损耗。也正因为如此,字节跳动,包括 CloudWeGo,都在性能领域持续的推进,以期达到最优的状态。同时,希望更多关注这一方面技术,希望在这里能够获得一些极致的性能的框架,包括一些极致的性能的体验的同学持续地关注我们的项目。
Q:大厂对 Go 工程师的需求和要求?
A:大厂招聘 Go 工程师当前业务侧会多一些。还有一部分就是在做基础架构的内容,主要针对基础的框架,对其性能方面进行整体调优。这一部分所涉及到的语言会比较偏硬核,可能不光要会用 Go 而且关于 Go 的内核,包括语言生态、底层逻辑都要非常熟悉,然后再在这里面去做相关的一些框架的性能优化。
结合云原生现状,当前其在行业里处于发展中的状态,很多企业正在处于云转型的阶段,而这个过程是需要一定时间的,可能无法一次性迁移到位。这种状态之下,其实会涉及到非常多的后台逻辑与操作,所以针对架构调整、演进可能也会是后续 Go 工程师发展的一个职业方向。而根据不同公司发展的阶段,后续更多的公司发展起来之后,可能会增加对于基础建设的需求,推进和维护自己的基础架构,由此关于 Go 语言工程师的需求也会有一些相应的提升。
项目地址
GitHub:https://github.com/cloudwego
官网:www.cloudwego.io
【社区圆桌分享(代码学习无止境,程序员如何规划自己的职业生涯发展())】GitHub 9K Star!字节高性能开源微服务中间件 CloudWeGo 技术沙龙来了!相关链接:https://mp.weixin.qq.com/s/x0...
推荐阅读
- 《感恩日志》第25天
- 翻车!误删/usr/lib/引发的血案,从棺材边成功抢救的过程分享。
- imi-etcd|imi-etcd 正式发布,由社区贡献开发——imi 框架微服务配置中心开发进度 20220820
- python爬虫数据教程_Python爬虫教程,4天快速入门Python数据挖掘教程分享!-Go语言中文社区...
- 有多爱,就有多抱持
- 【博赞官方】卓卷首届思维导图认证班学习分享No.0022——第八章|【博赞官方】卓卷首届思维导图认证班学习分享No.0022——第八章 资产减值损失
- 程序员做技术分享或公开演讲时的建议,希望能帮到大家
- 4月18号奇迹分享
- 龙蜥开发者说(我眼里的龙蜥社区:一个包容的大家庭 | 第 10 期)
- 城市更新中的文化力量|城市更新中的文化力量 | 索珊清华大学地产金融峰会分享实录