在本篇没有杂乱的技能细节,彻底叙述我作为一名开发者的故事。从一名小白到GDE(现在我是国内第11位Android方向的GDE),我的故事并不具有代表性,但是期望能够对你有所启发。
文章首要介绍:
- 什么是GDE
- GDE参加进程
- 我的生长与认知
什么是GDE
GDE 全称是 Google Developer Experts 谷歌开发者专家。这个方案由谷歌官方建议,旨在挑选出有技能影响力的开发者,经过同享自己的技能经历、反应技能落地状况、推行新技能方案,来树立完整、可衔接的Google技能社区文明。 GDE是Google技能的种子用户,也能够说是试验田,当有新的Feature的时分,就会在GDE内先推行运用,经过反应来完善。GDE可请求的领域有许多,比方Android,Flutter,机器学习等等。我的GDE方向是Android,这也跟我的作业有关。
GDE 的官方链接:https://developers.google.com/community/experts
参加GDE后,有以下福利
除了福利之外,咱们能够愈加深化与Google的交流,起码提Bug单的时分,有专人跟进(狗头),还有便是能够愈加深化这个GDE这个圈子,这儿能看到全世界的GDE的活动。
需要注意的是,成为GDE并不代表与Google树立雇佣联系。成为GDE大约有以下几个进程:简历挑选(维度为讲演,内容输出(博客|视频产出),开源项目),现役GDE面试(英文),Google产品/技能负责人面试(英文),文件签署。后边我会在参加进程,详细介绍这几个我在这几个场景的经历。
截止至今日,Android方向的GDE 共有11位,我是终究一位
参加进程
哪里了解到GDE项目
从我接触android开发的时分,就了解到了GDE项目,其时朱凯(扔物线)大佬是国内第一批推行GDE项目的,之后也有越来越的作业大佬参加,比方郭霖大佬,还有之后的许多位大佬,渐渐的,我也知道了有这个项目。
GDE项目类似于会员制,请求有至少一位Google职工或许现役GDE约请,才干进入简历挑选流程。当然,那个时分的我并没有这样的人脉,也没有自傲能够请求成功,因而我把GDE当作自己作业的一个方针来看待。
之后在一次偶然的时机,我在阅读《JetpackCompose从入门到实战》这本书中,知道到了第一位GDE,也是这本书的作者,王鹏教师fundroid,王鹏教师现在在字节作业,作业之余也输出了许多关于Compose的文章,这些文章对我来说收获颇丰。一起自己也有幸针对书中的一些章节,与王鹏教师进行了讨论。后边经过王鹏教师的同享,知道到了一名谷歌职工lily(现已离职),国内大部分GDE都是lily带出来的,经过lily教师的引荐,我有了许多对外同享的时机。
在lily的指导下,我了解到了许多GDE方案相关的常识,也经过了初次挑选参加了GDE生长方案,为了成为一名合格的GDE做准备,遗憾的是,因为一些原因,GDE生长方案在6月份现已没有再推进了。虽然lily教师现已离开了Google,但是她带给我许多名贵的经历,一起在职期间也还帮我修订了简历的一些语法表述(英文简历)。因而我在经过了一些准备之后,终究在7月末建议了GDE请求
简历挑选
GDE的简历会进行一次挑选,或许大部分请求者会倒在这儿,因为这儿会由Google GDE项目负责人Ben去严格挑选请求者的信息,首要包含三个维度调查。
- 对外讲演(3次以上)
- 内容输出(博客|视频产出)
- 开源项目
我在社区的活泼度还能够,一般会在产出博客,上一年还成为了的签约作者。一起我自己的话,也喜爱倒腾各种各样的技能,也在Github上发布了不少自己的开源库,因而在内容输出上与开源项目上,没有太大问题,一起早期我自己也会在一些活动上同享,比方社区说,Google相关的的一些活动。
我的过度磨皮照如下:
因而审阅力度最大的讲演,我也没有什么太大问题。三个维度都还能够,所以我的简历很快就得到经过,当然,因为请求的时分一名GDE举荐,这儿我找到了王鹏教师!王鹏教师也很乐意当我的举荐人。
一面(现役GDE面试)
英文面试,对咱们国内开发者来说,是一个严重难关!对我也毫不破例,即便我从小学就开端学习英语,然后到大学本科低分飘过CET6级。英语仍然对我来说是一个难题,因为这么多年学的都是“哑巴英语”。连日常外国人问路我都会结巴的英语水平,就更谈不上英语面试了。
走运的是,我知道自己这个弱点,因而在请求GDE面试之前,我每天都会花30min与外国教师交流,进行口语练习,也把手机上的抖音换成了Youtube,便利我日常时分的英语堆集,同样是刷视频,但是在这个玩乐进程中,我堆集了必定的语感。经过一个多月的练习,也让我的表达有必定的进步。
我的一面GDE是一位现在在新加坡的GDE,Hassan
因为新加坡与我国处于同样的时区,因而咱们约了一个周末,进行了我的一面。
Hassan是一位经历十分丰富的GDE,他成为GDE现已6年了,一起也是一位CTO(youtube看到)。因为近期我的活泼领域在Android native 开发与功能优化,他问了我许多功能优化相关的问题,比方crash监控,OOM产生原理。当然,他也问了许多架构的常识,比方MVI架构的优势与旧架构的差异,一起也问了我一些关于native hook与字节码相关的东西,我的答复也让他有必定的兴趣,因为国外不怎么卷这些,终究他也供给给了我许多名贵的意见。当然,面试进程中,用英语表达是特定领域的东西,对我来说挑战十分巨大,走运的是,我提前做了许多准备与口语练习。
二面(Google职工面试)
一面往后,过了差不多两个星期,我收到了二面的告诉,来自于Google的产品司理Yuichi(日本人),
谁能想到,Google产品司理写代码也十分溜,这是Yuichi在youtube同享的compose动画相关的视频
比较于一面,二面的时分我反而不怎么严重,因为我本身日语现已过N1级了,一起之前玩游戏的时分,也知道许多日本的朋友,因而我反而不怎么严重,咱们在一个作业日晚上,开端了二面: Yuichi首先问了我许多开源项目的作业,比方Signal,信号机制,这也让他十分感兴趣,因为国外一般用Firebase,一般不需要关心太多底层的东西。一起他也问了许多新技能,比方Compose,KMM相关,一起他也着重问了Compsose的重组,也问了许多Compose在国内的落地状况。有趣的是,在面试期间我还向他抱怨Compose没有像MotionLayout一样的合适制作杂乱动画组件,他也笑着回复我说,Compose现有的动画的状况以及后续规划。一起他也告诉我当时日本的移动互联网迁至Compose的状况,十分多,Compose活泼状况比国内要好得多。后续Google也会持续发力Compose与KMM。期间遇到了一些记不起来的英语表述,我都用日语圆了过去,还算是功德哈哈哈。
认证签约
二面没多久我就收到了终究的反应信息,因为在二面我的表现还能够,因而成果是第二天就同步给我了。之后有个邮件发给我,签好相关的保密协议,参加了Slack,我就正式成为了一名Android GDE了。成果同步也十分快,第二天我就在Google官网上看到了我的信息现已被录入。
我的生长
关于作业
本科毕业后,我就参加了货拉拉。这儿面的技能气氛很不错,有许多技能同享,一起也有许多时机宣布博客与开源,也欢迎咱们重视货拉拉技能。一起也特别感谢身边的大佬,给了我许多技能落地的时机。走运的是,作业之余我一向坚持着较高的技能敏感度,会去深化了解一些更深层次的常识与运用。
关于博客
在大学的时分,我有养成写博客的习气,其时首要是为了记录一些自己遇到的问题。后边参加了,发现这个渠道的文章质量都很高,我也后续在宣布了许多文章,首要是自己在作业中会遇到的一些技能,以及一些Google近期推的一些新技能,比方Compose。一起因为功能优化逐渐进入了深水区,我也决议深化了解一些Jni相关的常识,包含jni,native hook等等,近期首要输出的文章也是功能优化中关于native相关的常识。后边跟着时刻的堆集,我的文章也被转载到了许多闻名的大众号,比方鸿洋大佬大佬的大众号。后边在上一年揭露招募签约作者的时分,我也顺畅经过,成为了的签约作者之一。
社区建造
跟着成为签约作者,我也知道到了许多作业大佬,比方超哥yechaoa,鸿洋大佬,曹大(曹立成),彭旭锐,强哥等等。一起这些大佬也创办了Bagutree社区(因为不能发布二维码,咱们能够大众号搜索Bagutree),我也在大佬们的约请下,成为了Bagutree同享大军的一员。
在Bagutree中,里边简直有着作业内所有闻名的大佬,大部分GDE都在里边,偶然咱们也会吹吹牛逼聊聊技能,一起这个安排也会定期约请嘉宾同享自己的作业心得,还有技能等等,这儿算是我对外同享的种子地,经过在Bagutree同享,我得到了许多训练,在后边更大的同享中,比方GoogleIO extended相关的活动,我也愈加得心应手。除此之外,我的公司,货拉拉内部也十分鼓舞同享,我也参加了许多个topik的讲演,最近是在货拉拉开发日中讲演了关于App耗电相关的主题。
关于功能优化
关于我来说,功能优化是我一向比较感兴趣的一个方向之一。跟着移动端的发展,功能优化也逐渐进入了深水区,我个人认为,大厂中字节是做得比较出色的。功能优化方向从最根底的java字节码相关的优化,逐渐转化为了native层虚拟机的优化,一起跟着got/plt hook 与inline hook的稳定与发展,native层的“定制”,“东西集”,体系才能运用化会逐渐变得抢手。
这儿我简略讲一下体系才能运用化,跟着Android的发展,Google的开发者们也意识到,跟着体系逐渐变得杂乱,数据流传递也十分杂乱,比方ART本身,还有各种SystemService。Android中在每次更新的时分,都参加了许多新的优化东西,比方针对FD问题的fdtrack,针对内存拜访问题的GWP-ASAN。这些才能往往都只能给体系进程运用或许运用起来不太便利。
近期抖音根底架构的内容,许多都讲体系的才能进行了必定程度的复刻或许是才能增强,比方fd的double close东西,经过native hook 关键的体系函数,能够让运用自身的fd也能参加到检测中。还有给予GWP-ASAN思维的内存拜访检测东西,这都证明了国内大厂都有向体系才能运用化这一方向去靠近。
还有便是跟着native hook发展,许多黑科技也逐渐被大厂们开发运用,比方GC按捺,内存海绵,还有各种监控,比方btrace,等等,这些黑科技都有必定的门槛(ART虚拟机细节 & native 层)。运用按需更改ART,或许是以字节为首等大厂们未来会持续深化的一个方向。
关于C与C++
C与C++,或许也是后边android工程师需要进修的方向,前面也说过,native层虚拟机的优化在近期的技能同享或许方案发布都占有了必定的地位。在招聘上看,关于大厂从事根底架构Android开发工程师要求,也逐渐从java/kotlin上逐渐附加上Jni相关经历的要求(抓狂.jpg)。
学习C/C++ 这儿都引荐《C prime plus》 与《C++ prime plus》这两部书,我的话一开端想买C++ prime plus成果卖家发货错了变成了C prime plus,所以至今我大部分native代码仍是用c在写。假如咱们有余力的话,我十分引荐学习C/C++。
关于跨渠道
参加GDE后,我也向Google的产品司理/Flutter GDE等大佬咨询了许多关于跨渠道的见解。首先Flutter毫无质疑,会坚持必定的增势,国内/国外逐渐迁移至Flutter的公司也不少,,现在国内大厂大部分运用混合原生与Flutter/RN等方法进行开发。从市场招聘上看,Android开发依旧是Flutter开发的主力。
关于Compose Multiplatform,现在国外切换成Compose的企业十分多,国内也有不少大厂进行了尝试,总的来说,Compose在国内承受度比国外承受度要低,未来Compose Multiplatform也会持续推进完善多渠道方案,现在来说,比较于Flutter 跨渠道社区,Compose Multiplatform仍是处于十分雏形的状况
关于Kotlin Multiplatform(KMP),这算是跨渠道中有潜力的新星,虽然KMP还没发布release版本,但是在国内他的承受度比我幻想中要高,比方阿里,百度,快手等,都有在这方面的落地与实践。KMP 十分合适跨多个渠道同享,而不仅仅是 iOS 和 Android。KMP + Compose,这两者模式结合,说不定是未来技能选种的一匹黑马。
关于移动端
近期的移动端大新闻便是,鸿蒙Next体系决议移除AOSP,这也意味着原本的Android运用不能运行在鸿蒙Next体系中了。现在鸿蒙Next还处于开发版中(未上线),移除AOSP,这也意味着开发者们需要适配,这个适配本钱仍是有的。
现在适配方法大约分为:
- 基于Flutter/RN/uniapp,添加适配鸿蒙Next的分支。
- 基于Ark-UI,重新开发适用于鸿蒙Next的App。
两种方法都有大厂开发在跟进,当然,大部分还处于观望态度。
个人视点来说,鸿蒙Next有利有弊,坏处是社区生态与开发本钱,让许多厂商处于一个选择状况,未来或许会增加多端维护的本钱,但是假如不适配,也意味着有或许丢掉这部分市场。
当然,有利的地方也有,鸿蒙Next适配大约率也会落到Android开发者们头上,究竟,有活的地方就有产出~
Ark-UI,声明式的ui,也让Flutter开发者与Compose开发者有较为低的上手本钱,至少感觉不会太生疏,总归,让咱们等待未来的变化吧!
写在终究
期望我的经历能对你有所协助!不管未来怎么变化,坚持必定的技能敏感,这都是作为开发者们最基本的要求!未来我也会多产出一些资讯内容,协助咱们更好了解Android!结束撒花!