技术人员上升遇到瓶颈?或许开源能推你一把!

GitHub Tencent账号下首个开源项目tinker的开发者shwenzhang受邀参加腾讯开源线下沙龙,分享他经过开源后在技术和个人影响力方面获得了怎样的成就,并追根溯源,表达开源项目应该“大而全”还是“小而美”的独特见解。开源不应该是压在开发者身上的额外负担,而是技术完善,个人绩效提升,塑造公司与团队形象的有效途径。

作者简介

Shwenzhang,张绍文,来自腾讯微信事业群,从事安卓开发,主要负责 Android 的性能优化以及终端质量平台相关工作,参与Android热补丁技术tinker的开发。

项目简介

Android热补丁开源框架tinker,具有稳定性高,兼容性强,简单易用等特性,支持在无需重新安装apk的情况下,完成对dex文件,库和资源的更新,紧急修复APP的bug,或发布新功能。

应用宝Top 1000的应用中,有包括微信之内的60多个应用已经使用了tinker进行APP的热补丁。tinker首日star数破千,登上全球日榜热度第一,取得首周star数4000+的成绩。

GitHub地址:https://github.com/tencent/tinker

演讲实录

今天我主要分享一下,开源可以让我们得到什么,可以获得怎样的成长?tinker开源有比较长的时间了,因此我以tinker为例,结合开源经历,向大家分享开源给了我怎样的帮助,希望大家能有所启发。

技术影响力

重构代码,取悦自己

程序员的使命,就是写伟大的代码取悦自己。但由于历史原因,或产品需求变更和迭代,我们往往只能恶心自己,写出来的代码连自己都看不下去。开源就不一样了,代码不仅自己看,还要放到GitHub上给所有人看。代码风格代表公司的形象,也代表我们开发人员的形象。于是,我们在代码规范、注释、项目架构上面都需要更费心思。这就给了我们对项目进行代码重构的好机会,可以优化那些写得不规范的旧代码,让它能被读者更好地接受。

技术视角

我们在公司做产品,要么跟以前版本做比较,要么跟公司其他产品做比较。开源就不一样了,我们的产品需要跟开源社区的业界同类产品做比较,分析他们的优缺点,挖掘他们没有解决的痛点,找到我们比他们优胜的方面。这是做开源前必须经历的步骤。当真正把项目开源时,我们会提供对比结果作为项目的介绍文案,例如微信终端跨平台组件Mars的网络库与其他网络库相比的优势,Tinker为什么比其他热补丁方案好。

“既要埋头苦干,也要抬头看路”,开源使我们站在很高的视角上,去了解社区的新技术,让我们意识到改变,阔斧革新了安卓客户端的开发工具链。

社区支持

开源除了把自己的技术向社区展示,同时我们也希望得到社区的支持。tinker对兼容性有极高的要求。tinker开源后便得到非常广的测试场景,先后在2000多个APP中得到验证,其中不乏UC、百度等知名公司。现在,华为、小米等厂商也会帮我们运行各种自动化的用例,项目出现问题就会及时反馈给我们。这是我们期望的社区帮助。

然而,目前国内的开源社区环境不是特别的好,80%左右的用户仅停留在用的层面,会提出bug或指出待完善的地方,而提出优化解决方案,并做出Pull request的用户不及20%,而且大部分集中在大公司。因此,我们筛选出一批只有30多人的来自阿里、百度、华为等知名公司的tinker种子用户。他们能给到tinker非常多的Pull request和优化方案。

个人影响力

情怀传递

开发者,尤其是新员工,都不会很在意个人影响力,认为只需要写好代码就行了。其实作为新时代的程序员,这样做远远不够。写好代码只是最基本的诉求,程序员还要会做总结,沉淀自己的工作成果,通过分享去引导大家进步。这恰好是开源对程序员的要求。Mars、tinker、WeUI等微信事业群的优秀开源项目,都离不开大量技术文章作为沉淀。项目开源前期和后期,我们都会输出一些有价值的文档,收拢起来,让大家了解一个项目开源的始末。

技术大会/沙龙/直播

开源一个项目就像对外发布一个产品。我们的项目即使再好,也需要发声,让更多的人知道。因此,我们积极参加GMTC、QCon等大型技术大会,还参加一些线下沙龙和直播,把我们的项目放到大舞台上曝光,得到向同行请教和学习的机会,同时也可以了解到业界的新技术。

社区交流

项目开源需要跟社区做一些反馈与交流,例如处理issue和pull request,筛选出种子用户并跟他们深入交流。我们还会给tinker项目比较优秀的贡献者寄礼品作为奖励,已经寄出两三批了。

个人发展

个人影响力的提升,无论是对你的晋升还是个人成长都非常有帮助。大部分参与晋升考核的员工,只是与过去的自己或公司其他人进行比较。可当你拿出的方案是,经过开源社区的验证,我在业界是什么水平,达到了怎样的高度。这显然比其他人更优胜。以我的晋升经历看来,tinker开源绝对是锦上添花的一笔。

开源还有一个很重要的意义是,无论你在哪里,都可以继续为自己的项目做贡献。所以我希望大家都能加入到开源的行列当中。

开源项目的选择

中国人的思维习惯倾向于一个项目做到"大而全",能满足所有功能。但我认为,不妨尝试一下"小而美"。项目质量好坏的关键,在于它能否直击一个特定的痛点,能否有特定的市场定位。它与竞品相比具备怎样的性能优势,在哪些场景下可以解决问题但竞品不能。可能是一件简单的事情,但star数却非常多。因此,优秀的开源项目不一定是功能全面的软件,也不一定是超级庞大的系统,只需要能解决某些人在某个场景下的痛点就可以了。

结语

Github地址:https://github.com/tencent/tinker

欢迎Star Tinker!

去年10月,Tinker在开源社区,尤其是安卓热补丁技术领域掀起热潮,一时名声大噪,带动腾讯开源迅猛发展。但事实上,部分开发者认为,做开源劳累于代码审核、项目运营和社区交流,而这些工作的成效却不一定是立竿见影,因此做开源成为了自己的负担。

打造个人影响力,已经成为新时代程序员对自己职业生涯长期规划的保证。回顾shwenzhang的经历,我们看到开源可为自己赢得更多的上升空间。同时,开源能够为团队的技术能力注入新鲜血液。这些都将吸引着更多开发者加入到开源的行列当中。

文章来源: 腾讯开源 公众号

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

云计算如何改变人们的生活方式

导语 云计算打破了人们固有物理操作和地域限制,实现从电脑到手机、汽车、家电迁移,把所有的电子设备都连接入网,并能接受远程控制,这就是物联网设计的初衷。 近十年来...

3348
来自专栏BestSDK

环信SDK助力“智慧树”,打造国内最大幼教互动云平台

智慧树的方案概括来讲,是一个管理后台、三个应用客户端。平台功能涵盖幼儿(及家长)档案管理系统、多媒体教学资源,实现幼儿园一体化信息管理。

1124
来自专栏ytkah

微信小程序与传统APP十大优劣对比

        随着微信公众平台的开放,微信端小程序涌现市场,带来很很多便利和简单的原生操作,询:微信端小程序是否会替代传统的APP应用?两者的优劣如何?我们一...

1.3K5
来自专栏机器人网

设计工程师的“易筋经”:元器件数据库SiliconExpert发布中文版

SiliconExpert直接与数千家制造商和分销商合作,捕获最准确、最新的元器件信息。值得再次提及的是由SiliconExpert超过400名电子专家组成的团...

3806
来自专栏大数据文摘

人工智能如何解决影响零售业客户体验的三大痛点

23111
来自专栏陈树义

2、产品经理深入浅出系列——产品经理的职责

==================  1、市场调研分析  ================= 1.1 了解市场需求 -与潜在用户交流尝试能否获取需求 -明确...

3496
来自专栏麦应用专栏

麦应用小程序 | App可直接打开小程序!微信到底想要干嘛?

未来,用户可以从APP跳转至某一微信小程序的指定页面,完成服务以后再跳转回原APP,多场景使用更加方便。

46714
来自专栏知晓程序

别光顾着玩「跳一跳」,我们教你怎么样做一个!

去年 12 月 28 日微信迎来更新,正式发布了小游戏,并开放了小游戏开发文档和开发者工具;今年 1 月 15 日,微信小游戏预告将面向企业和个人开发者全面开放...

1292
来自专栏云市场·精选汇

小程序+公众号玩出新花样?有趣skr了

微信也是一张流量温床,奈何转化能力一般,而小程序的出现结合小程序一起,从公众号呈现内容,到引流吸粉,再到转化成交,很大程度上帮助了商家解决了高成本问题。

1345
来自专栏Miguel三先生

糊弄鬼的竞品分析

1834

扫码关注云+社区