代码学习无止境,程序员如何规划自己的职业生涯发展?
圆桌议题
- 议题一:开源自 2020 年开始列入国家规划后,开源项目越来越多。开源项目的涌现,为大家提供了学习和深度了解升级项目的途径。从学习的角度来看,一个开发者如何参与项目、学习项目?
- 议题二:CloudWeGo 开源项目主要方向是云原生微服务框架, 这类项目主要的使用场景是什么样的?学习这类项目的价值点在哪里?混迹社区有什么经验分享?
- 议题三:程序员作为项目使用者的角色,开发者作为开源项目设计者的角色, 这两种角色关注的点有什么不同?作为一个经历过这类角色转换的社区 Committer 来说,有什么经验可以分享?
- 议题四:在社区视角和全局角度下, 谈一谈为什么大厂都在招聘 Go 工程师?程序员应该如何规划自己的职业发展?程序员最终的归宿是哪里?
- 议题五:大佬分享环节,大佬们关注的博主/学技术的网站/书籍推荐。
嘉宾
议题一
开源自 2020 年开始列入国家规划后,开源项目越来越多。开源项目的涌现,为大家提供了学习和深度了解升级项目的途径。 从学习的角度来看,一个开发者如何参与项目、学习项目?
分享人:王伟超
关于这个问题的介绍主要从以下四个方面展开:
- 如何与 Kitex、CloudWeGo 社区结缘;
- 个人关于云原生和开源文化的认识;
- 为什么要参与开源以及我理解的开源精神;
- 个人以后对开源的想法。
如何与 Kitex、CloudWeGo 社区结缘
- 2021 年 9 月尝试在 InfoQ 做输出,挑战日更,更多是做翻译;
- 10 月底决定学一点特定的技术,发现之前自己学习的更多是“道”和“法”层面,主要关于编程理念的知识和理解,很少关于“术”和“器”;
- 联想孔子的一句话:“吾尝终日不食,终夜不寝,以思,无益,不如学也”,就是之前都是思维层面和架构层面的思考,不如学点具体的技术。因此,我决定再找一个话题,从感兴趣的方面入手,但是 Docker、云原生、架构设计、微服务思考这些话题非常火热且竞争很大,可能一时难以入手做出自己的东西;
- 想起刚刚开源的 Kitex ,以及刚开源的 CloudWeGo 项目中相关的一些中间件集合的资料和实践应该比较少,于是开始了《CloudWeGo 微服务实践》系列,做了一个小的集合,但是也没写完整,只是写到了操作数据,不是一个完全的业务实践。
个人关于云原生和开源文化的认识
为什么要参与开源以及我理解的开源精神
- 学习优秀的开源项目
- 开源世界是一个包容开放的世界
- 协同共建,从点滴做起,融入社区带来成就感
个人以后对开源的想法
- 梦想
- 布道者
- 未来计划
分享人:杨文
关于这个问题,从我的实际经验出发,将从两个方面进行分享:
- 自己去做的角度;
- 参与项目的角度。
自己去做的角度
- 明确开源项目运作的意义
- 项目发展需要过程
- 起初,开源项目的发展可能是由某一两个人发起的。在这个过程中,你可以引入一些对这方面感兴趣的人,或者通过你的项目给别人带来帮助,然后吸引别人进来,进而逐步扩展项目规模。不管是什么样的项目,其实都是这样的过程。即便是那些现阶段比较成熟、规模较大的项目,比如说 Go 夜读、 PingCAP 的 TiDB 以及其他的一些 Go 的 Repo ,其实都是这样一点一点做起来的。
参与项目的角度
- 能解决你的问题。这是评判你要怎么选择项目、参与项目的条件或标准。
- 确定开发语言。选择相对来说覆盖面比较广的开发语言,不管是项目构建还是开源的运作会更体系化、规范化,避免踩坑。
- 参与开源项目的目的。考虑开源项目的影响力,能否有所学习和收获并为项目输出一些自己的价值。
分享人:李龙
关于开发者如何参与开源的问题,我提供了以下三种参考方式:
- 通过参与 First Good Issue 贡献 / 解决社区 Issue;
- 通过实战(项目实战 / 性能对比等),发现可优化的点,解决并反馈社区;
- 直接阅读源码。
参与 First Good Issue 贡献 / 解决社区 Issue
- 一般社区会有很多积压的 Issue ,初期可以挑选一些简单的 Issue。
- 开源社区一般会不时提供新手任务,大家可以积极参与。
实战(项目实战 / 性能对比等)
- 修改文档上的实例 Demo 反馈社区。
- 做一些压测,去压下不同框架的性能。
直接阅读源码
议题二
CloudWeGo 开源项目主要方向是云原生微服务框架, 这类项目主要的使用场景是什么样的?学习这类项目的价值点在哪里?混迹社区有什么经验分享?
分享人:李龙
CloudWeGo 的使用场景
- 高性能( Netpoll / Sonic / Frugal 等)
- 提供了丰富的扩展能力
- 优化的用户 API 接口
学习这类项目的价值点
- 学习框架分层设计 / 一些比较好的设计点
- 学习框架的一些性能优化的 tip ,扩展自己的视野
- 压测框架性能,探讨交流学习
社区经验分享
- 一个好的 Case:通过在社区学习优秀的设计和性能优化点,贡献兄弟社区。
- 【举例】@Halst 的 关于shardmap中size大小的调整 · Discussion #306 · cloudwego/kitex,在社区发起讨论,并将优秀的、可借鉴的地方应用到其它的开源项目中。
-
- 一个不好的 Case:对使用的框架提出了一些模糊的问题 / 评价。
- 【举例】经典评论:“设计的不太好 / 设计的太重了”,具体哪里设计的不好 / 太重了需要说出理由,这种 Case 请及时规避,尽量用数据说话。
-
议题三
程序员作为项目使用者的角色,开发者作为开源项目设计者的角色, 这两种角色关注的点有什么不同?作为一个经历过这类角色转换的社区 Committer 来说,有什么经验可以分享?
分享人:王伟超
项目使用者视角
- 开源项目是否会持续维护;
- 文档是否丰富;
- 社区是否活跃;
- 当前项目是否可用、好用,能解决当下团队的技术问题;
- 不满足的地方是否能扩展。
开源项目设计者视角
- 通过维护项目接受用户反馈,还有哪些共性的问题没有覆盖到;
- 开发新的一些特性;
- Bug 的维护是否及时;
- 能否比较快的帮助用户解决他们遇到的问题;
- 文档维护与不断丰富,业务案例的整理。
议题四
在社区视角和全局角度下, 谈一谈为什么大厂都在招聘 Go 工程师?程序员应该如何规划自己的职业发展?程序员最终的归宿是哪里?
分享人:杨文
为什么大厂都在招 Go 工程师?
- Go 语言的逐步发展
- Go 语言的特性
- 大厂的应用场景
程序员的职业发展及最终归宿?
- 本身擅长语言,希望在技术深度上去发力?
- 结合所在业务,希望提升业务能力、相关的个人软性素质以及管理能力?
- 通过技术解决业务的问题,带来业务价值?
议题五
大佬分享环节,大佬们关注的博主/学技术的网站/书籍推荐。
分享人:李龙
- 《设计数据密集性应用》
- 《程序员的自我修养:链接、装载与库》
- 《Google SRE 工作手册》
- 《微服务架构设计模式》
分享人:杨文
- 《微习惯》
- 《沸腾新十年》
- 《Salesforce 传奇》
分享人:王伟超
- 书单
- 博客
- 软技能
Q&A
更多资讯
- 官网地址:CloudWeGo
- 项目地址:https://github.com/cloudwego
- Hertz: https://github.com/cloudwego/hertz
- Hertz v0.2.0 版本发布:Hertz v0.2.0 版本发布 | CloudWeGo
- Kitex: https://github.com/cloudwego/kitex
- Netpoll: https://github.com/cloudwego/netpoll
Thirftgo: https://github.com/cloudwego/thriftgo
Netpoll-http2: https://github.com/cloudwego/netpoll-http2

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
基于Impala的高性能数仓建设实践之虚拟数仓
导读: 本文主要介绍网易数帆NDH在Impala上实现的虚拟数仓特性,包括资源分组、水平扩展、混合分组和分时复用等功能,可以灵活配置集群资源、均衡节点负载、提高查询并发,并充分利用节点资源。 对于高性能分析型数仓,除了需要有优秀的执行引擎能够让查询尽快完成外,还需避免因为查询间的相互干扰导致查询性能下降的问题,比如对计算和IO资源的竞争等。上节提到Impala可以通过资源池来进行计算资源的管理。但在使用时发现光有资源池还不够,仍然会出现不同的资源池竞争同一个计算节点上内存资源等问题。 1基本概念 “虚拟数仓”来源于Snowflake的“virtual warehouse”,简称VW。虚拟数仓能够按需进行水平和垂直扩缩容,是一种高效的资源调度方法,是存算分离设计架构下,计算资源弹性伸缩非常好的验证案例。如下图所示,该Snowflake集群有两个虚拟数仓,分别服务于BI和ETL用户。其中BI虚拟数仓为了应对报表查询的高低峰,采用了单元化的水平扩缩容模式,ETL主要关注计算能力,采用了改变虚拟数仓规格的模式。 NDH的Impala组件也具备类似的能力,在开始之前,先结合Impala的实际来...
- 下一篇
【云原生】如何快速部署Kubernetes
文章目录 What is Kubernetes? Kubernetes架构示意简图 Kubernetes环境搭建方式 Kubeadm部署Kubernetes Kubernetes部署环境要求 Kubernetes部署环境准备 Kubernetes安装具体步骤 部署网络插件 What is Kubernetes? Kubernetes这个单词来自于希腊语,含义是舵手或领航员。Kubernetes,也称为K8S,其中8是代表中间“ubernete”的8个字符。 官网描述如下图:生产级别的容器编排系统,是用于自动部署,扩展和管理容器化应用程序的开源系统。 (编排:按照一定的目的依次排列;调配、安排)。 K8S是 CNCF 毕业的项目,本来Kubernetes是Google的内部项目,后来开源出来,又后来为了其茁壮成长,捐给了Cloud Native Computing Foundation(CNCF:云原生计算基金会) 我们在github上可以看到,Kubernetes是采用Go语言开发的。Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Hadoop3单机部署,实现最简伪集群