怎样才能修炼成安卓达人

介绍

我的名字是 Chiu-Ki Chan ,我将告诉你们如何成为一名 Android 专家。

想想你认为的专家是什么样的,你是怎么知道她的? “她精通 Android。” 你可能读过一本她写的 Android 的书,听过她在某个 Android 会议上的演讲,看过她的 Android 教学视频,访问过她的博客或者她的 Stack Overflow 的答案。

字典上说,专家 “是一个在特定领域里拥有全面和权威知识的人”。按照这个定义,专家就是一个底座上的雕塑,被人膜拜和崇敬。但是如果回到远古时代,一个更加人性的定义是:专家就是一个碰巧分享他们所知道的事的人。

当你分享的时候,你会学到更多的专业知识;有了更多的专业知识,你就会分享更多。这是一个积极的正向循环。当你想要分享的时候,你需要把你的头脑中的知识组织起来输出。当你这样做时,你必须把事情串起来,因为输出是线性的。我们还不能把大脑概念做成 3D 映射,然后转移给其他人。当你把事情串起来的时候,你还需要解释不同概念之间的关系。这样你就会去深入学习,来填补这个空白。这样,你就获得了更多的专业知识。当你解释事情的时候,你需要先弄清楚它的意思,然后才能以合乎逻辑的方式说明它。

亚里斯多德说,“彻底掌握知识的方法就是教会别人”。如果你不相信一个老希腊人会知道 Android 开发的事情,我有另一种方式来告诉你为什么分享可以加深你的专业知识。

例如,当你尝试解释列表视图时,你会说:“我需要使用适配器,然后我需要所有这些视图的持有者,我没有完全了解为什么滚动时,我会收到有关回收视图的一些信息,这就是为什么我需要适配器,并且我有数据支持它”……这个解释过程将帮助你找出,你认为你明白但实际不明白的地方。一旦你想通了,你会发现 RecyclerView - 更多的东西要学习,更多的事情要解释。

示例项目

但是谁有时间分享呢?好消息,分享可以节省你的时间。我碰巧发现这个真理。

这是我应用程序的架构:四个矩形表示一起工作的四个模块。然后我听说有个名为冰淇淋的全新库,我想把它整合到我的应用程序中。但是我不能直接把它作为插件,我需要实现这个特定的库与我的应用程序的其余部分的接口。 “我会写一些类,编写一些代码,来桥接冰淇淋库的接口和我应用程序的接口,使其适合我的整个,大而复杂的应用程序。在这个过程中,我会说,“这是薄荷味的,我想定制成巧克力味的。”我泼了一些巧克力,我把它放在了错误的地方,一切都不工作了。 ”这是桥接代码的问题吗?还是应用的问题,还是库本身的问题呢呢?我很沮丧,因为这个时候所有的一切都是混乱的,我不知道发生了什么。

Receive news and updates from Realm straight to your inbox

自从我分享以来,我开始尝试不同的方式。首先,我使用一个示例;通常当你有一个库项目时,它有一个可以编译的 Hello-world 级示例项目。我可以在现有的项目之外编译。我确认这部分是好的,然后再从这点开始,“让我们来定制它,让我们放入巧克力,这样,如果它不起作用,那要么是库项目本身出了问题,这个库项目我已经在第一步时验证过了,它能独立工作,要么是定制层是有问题的。”我在我的主要项目之外一步步地进行,直到它可以被作为插件接入为止,这样节省我了许多时间,因为我隔离了这种新的未知技术,以便我能弄清楚如何在我的项目中单独使用它,然后再将其放入,它就能工作了。这节省了许多时间,我一直都在这么做,无论我是否分享它们。

但是如果你已经这样做了,那么你应该分享它,因为这只是你自己做一个示例项目,它与公司使用的任何秘密资源完全不同,你可以把它放在 GitHub 上,恭喜你,你是一个开源的贡献者。人们花大力气来帮助开源世界。我以前很害羞。但这不是额外的工作;在这一点上,项目已经可以被开源了。

博客套路

最重要的是博客文章。我有一个故事要说,“我正在尝试使用这个库,这里是我使用的步骤。贴上 Hello-world 的例子。很多时候你看到的项目都是这样的 Hello-world 项目。“当然这个简单的项目里,你的库是工作的,我怎么知道在复杂的情况下也可以使用它呢?”如果你分享你的经验,“我尝试这样做,但我也需要它与这个其他的库一起工作”,那么其他人就可以从你的经验中学习。这样,你有一个博客套路了:逐步建立你的项目,把它放在 GitHub 上并写下这个过程。

截图和代码

当我正在构建我的项目时,我一直在尝试获取屏幕截图。例如,为了展示如何一步步地使用 RecycledView。我使用了大小不同的项目,并添加了一个标题。之后我也有一些代码段。我增加这些代码片段的目的是:A 表明事情如何运作,B 占用空间。只是为了格式化,Mono 空间的东西。这样做的原因是 A,很容易被发现。每个人都能去复制和粘贴 Mono 空间里的东西。为什么你不把它做的容易些呢,放在前面或者放在中间?而且,B,它占用空间。 “一张图片胜过千言万语。”如果你想写一个 10000 字的博客文章,那是五个截图和五个代码片段占据的空间大小。这是我的秘密。注意我不是长篇累牍地解释,我只是截取屏幕截图和代码段,并在其间添加一点点文本,以便流畅。这些不同的图片使你的文章更具吸引力。

我也会谈到直播。另一个博客套路是,我有一个分享的博客文章,我常用的六个步骤。当我直播的时候它会自动出现在 Twitter 上,我正在直播我自己的演讲。如果你在 Twitter 上关注我的话,该链接应该已经在那里了。

会议报告

你们都在这里,在会议上学习。但是你们中有多少人会回去分享你学到的东西呢?

首先简单介绍一下会议,而不是写下会议发生的一切,而是一个非常酷的技巧,可以把 140 个字符变成一个漂亮的东西:Twitter。它不占用太多的空间,但如果你把它转换成一个 tweet,并将其嵌入到你的博客中,它会非常漂亮。

嵌入推文

我们来看一些例子。你可以在会议期间发布你注意到的内容。也许你知道一些有趣的事情,你可以 tweet。或者你可以引用演讲者,这会使得那些不在会议的人感觉更好。你可以感谢演讲者。或者一些基本的东西:“波士顿 Droidcon 会议的第一天真棒!”所有这些都是你在会议进行中正在做的事情。

它们都有 #DroidConBos。如果你是在 tweeting,最重要的是你也可以搜索这个标签,然后包含其他人的推文。你可以建立一个非常丰富的博客文章,无需你写任何内容。

嵌入图片

接下来我们可以做的是嵌入一张照片。如果你要参加会议,你可以拿起你的相机,拍拍不同的东西,并说:“这很有趣。”你可以将其嵌入到你的博客文章,它看起来很漂亮,并且很占空间。例如,舞台上的演讲者。拍照,添加一个快速的笔记。或者,你可以拍摄食物和人物。有很多出席本次会议的人都非常享受,为什么不记录下他们?

嵌入手稿

这是一种花哨的方式,不是一个接一个地记录笔记,而是像 2D 画布一样处理纸张。你正在做笔记,大大小小地写些单词,并排放在一起,绘制些箭头来显示它们的概念和关系,也许还能添加些图片。

有人说:“我不会画,这不适合我。”但是,如果你看看我在这张幻灯片上做了什么,我画了些东西,但它是一颗心。每个人都可以画一颗心。写一些话,然后在它旁边放一个气泡,这就是个例子。拍摄笔记这种视觉方式能引起了人们的关注。当你回到家并分享说:“这是我参加的一个演讲,这个演讲看起来是这样的。”

在这个会上人们都是这样做的。它不需要很花哨。如果你想学习绘制副本,那就是你学习的方式。草图的要点是能够消化正在发生的事情,并将其画在纸上,而不是逐行排列。

我两年前才开始做这件事,我一直很享受它。做完所有这一切,你的一个博客文章就准备好了,最后写点结论,并说:“我很想明年再回来。”你可以把它发送给你的团队,你的老板,并说:“我不仅去参加了会议,而且学到了很多,明年我可以再去吗?”

演讲

演讲会让你进入一个新的阶段,因为说话是互动的。

当你博客的时候,你写,你发布,人们可能会,也可能不会阅读它。但是人们会听到你的演讲。而且更厉害的是,它会使人们更容易联系起来,因为你演讲了,然后人们会在走廊里看到你,会和你讨论你演讲的内容。你只需要简单地介绍你是谁,你做什么,你的兴趣是什么,你们就可以谈论非常有趣的事情。而且,由于是别人找到的你,所以他会负责讨论的话题。当我开始演讲的时候,我发现去会议和讨论的现场会更充实些。

反对意见#1:“我没有什么可说的。”

有人说,“但是我没有什么可说的。”我有篇关于如何演讲的演讲,叫做“我没有什么可说的”。

我只是想快速地向你展示一个找话题的技巧。当我编写代码时,并不总是尽如人意的。每当我需要比预期更长的时间的时候,我知道我需要把它们写下来了。我把它写成博客文章,或将其转化为一个演讲。有时我甚至没有完成代码,我搞砸了,一切都不工作。有时候,“我正在使用这个库,有一天我听说它有了一个新版本,我决定升级它,从版本 24 到 25,可是当你这样做的时候,程序会不兼容。”

这就是捕捉分享内容的时机。不仅对于其他人而且对于自己也是有用的。我可以告诉你,我很多次都会回过头来看看我自己的博客文章。因为我忘了我六个月前做的东西。这是自我的笔记。即使没有人读我的博客,我也是个好读者。

另一种方式是这样的,我的朋友艾伦,我喜欢她思考问题的方式。她说话风格是,“我是第一个跳进兔子洞里的笨蛋,我来这里告诉你,哪条路线通向兔子窝,哪条路线是令人愤怒的死路,因为你已经尝试过了,你已经花了三个小时来弄清楚,需要一个额外的标志使它工作。”你为什么不和别人分享一下,告诉他们死路是哪里?

Rant Book

当我开始的时候,我有一本 Rant Book(我这么叫它)。每当一些事情不工作的时候,我都会写下来。最初的想法是,之后我会再读一次,找到一些共性的地方,然后把它写成博文或者演讲。

一旦我开始这样做,我的大脑开始注意到所有这些有趣的事情,我虽然没有明确写下来,“这应该是一个博客文章”。但是有一天早晨我在洗澡,我想到说,“这是一个很好的博客文章。” 因为某些原因,好的想法总是在淋浴的时候到来。

反对意见#2:“没有人想听我说

通常的二号反对意见是,“没有人会听我说话,我可以整天滔滔不绝,但是谁想听我说话,没人”。

你们有多少人去过 Meetups?相当数量的人会去。你认为这些 Meetups 的演讲者来自哪里?来自你们!你的当地社区每个月都需要一个人演讲,这些演讲者不是专业的演说家。相信我,如果你去问一个会议组织者:“我想演讲”,他们会说,“感谢你救了我,因为我们下个月没有演讲者了!”真的,如果没有社区中的你们,他们不可能把演讲排满。

在 Meetup 发表讲话的好处是,你不用做一个 40 分钟的演讲,你可以边讲边演示,开始你的谈话,然后正常工作。人们都很友好,大多数时候他们都没有付钱,他们不会说,“我要求退款,因为这不值我付的钱。” “你没有付钱!”去那里,开始分享,通常人们都认识,所以这是一个更加友善的人群。如果你认为没有人想听你的演讲,你错了。你的 Meetups 想听你的演讲。一旦你这样做了,下一步就是在会议上发言。

演讲者

在 Meetup 中发言和在会议上演讲的区别就是其他演讲者。

例如会场上有许多演讲者。当你也是演讲者的时候,你会和他们一起聚会,通常这些演讲者都会有些活动,特殊的晚会,在这些场合里,你可以认识其他的演讲者。

这群人就是这么做的,我去分享我的知识。然后和这些演讲者的会面,你会认识他们,这样会议结束候你们仍然可以保持联系。你们在 Twitter 上互相关注,然后你们可以继续交流。这非常棒,这不是舞台上的摇滚明星。这是人与人的联系,你和你的听众还有演讲伙伴们联系起来。有这么大的一个社区在背后支持你,你能做的事情会大大不同。

召集演讲主题

如果你想在会议中发言,你必须完成演讲主题召集(CFP)。它很短,也许只有三段,解释为什么这个话题很有趣,为什么你想谈论它。

为什么选这个话题?

我将展示一个例子,来解析一个提案。通常,这些提案你可以在他们的网站上看到,所以你也可以自己进行这项练习。让我们来看看这个叫 Kotlin 的提案:Uncovered。

一开始,她定义了要谈论的内容(“Kotlin”)。然后通过一个例子,关键字(“我们将谈论数据类,lamdas 和 delegates”)。最后,推销这个提案(“如果你来这个谈话,你离开的时候将会更深入地了解 Kotlin 和一些工具。”)这是一个很好的三段式提案。

然后,我想和你分享一个技巧是一个有魔力的单词:。有时当我们写些东西的时候,我们会写“我要教你怎么做,我要告诉你这个。”不要这样!你想谈谈你的观众。 你会学习这个。 **你将要把这些东西带回家。这就像拼写检查一样,你只需要把我变成你,然后它就会看起来好多了。

为什么是你?

希望在这个时候,你已经写了一些博客文章,所以人们对你的观点有所了解,当然你也可以做些解释。也许你已经举行了一些 Meetup 会谈。通常 Meetups 没有预算来做(像会议一样的专业录音),但你可以运行 QuickTime 或 OBS(Open OpenCaster Software)进行屏幕截图。你记录你的声音,和演示的幻灯片,这是一个在 Meetup 中记录演讲的好方法。

当你申请在会议中发言时,会议组织者就能看到一些样本。提醒下,有一篇博客文章教你如何使用 QuickTime。

我也有篇关于写提案的演讲。看看它并且读读那些成功的会议提案,然后就能理解为什么会议会对这些提案感兴趣。如果你有兴趣,请观看那篇演讲。

演讲被接受了!怎么办?

你的提案提交到一个会议,被接受了。现在你必须撰写你的演讲了,因为提案是很短的。我有一个技术演讲的订阅专栏,每个星期我们都会分享关于如何演讲和如何写提案的技巧,以及在舞台上的小贴士。

到此,我已经说完了所有关于分享,博客和演讲的内容。一言以蔽之:我相信如果我分享,我就是专家,那么如果他们发现我并不是那么专业,那怎么办?如果我并不专业,我不知道我在做什么。如果他们对我的博客写了些令人讨厌的评论怎么办?如果他们在会议中对我大喊大叫,告诉我我错了,我什么都不是,我怎么办?

对于博客,我有个好消息和一个坏消息。坏消息是你没有读者,你只是把东西扔到互联网上,也许没有人会读到它。但好消息是,这意味着你可以自由地进行实验。你可以写任何你想写的,没有人会排着队说 “这不对,我不喜欢这样”。去尝试一下。如果你还紧张,我还有一招,我会审核我博客上的评论。我不想随随便便有人在我的博客上发表评论。最初我以为会有讨厌的人试图批评我。但是最后发生的事情只是有很多人说:“博客文章很棒,但这不是我的课堂作业,你能在你的示例项目做这些事情吗?不,去做自己的功课!我分享一件事情,你却想让我做另外 10 件事情?不,所以我审核了这些评论,而且我也不需要 Android 练习。我会审核所有的评论,你也可以这样做,这是你的博客。

演讲就会有点棘手,因为它是互动的。通常,我不知道到问答环节的时候,你会不会遇到这样的事情,有人会说“我有一个问题,但这不是一个问题,我只是想谈谈关于我知道的事情,因为我厉害。”这很烦人,因为这甚至没有告诉你你错了。这就是开发性的问答环节,人们滥用它。你不必回答那个问题。没有人说如果你发表演讲,你必须回答问题。很多时候我会说:“谢谢你来参加我的演讲,我不会有问答环节,如果你有问题,请上前来,我们可以讨论一下”,这样效果也非常好。

如果你想开放问答环节,也有一个诀窍,就是说实话。如果有人问你一个问题,你不知道答案,那就说我不知道。没关系。没有人会要求舞台上你必须知道听众提出的所有问题的答案。你有一个具体的经验,你想分享,你分享,你的责任已经结束了。如果有人向你问了一个你不知道的问题,“我不知道,以前我没有遇到过。”如果你是一个好人,那么也许你可以回答说,“我们可以线下继续这个对话。”不是因为你分享了一小部分知识,你就需要站在那里回到所有的问题。

拒绝

当你申请参加会议时,他们也许会说:“不,你的演讲这次不合适。” 这很令人难过。但这个事情每个人都会遇到。你看到很多有经验的演讲者在舞台上表现的特别出色,但他们不会告诉你他们被拒绝的经历。

对我来说,当我听说我将在 Droidcon 波士顿做主题演讲时,我爬上山,在山顶上大喊大叫,我也会发 Twitter,“我会在波士顿的 Droidcon 进行主题演讲,我很兴奋!我没有告诉你的是,我被芝加哥 Roboto 拒绝了,这是 4 月份发生的另一个 Android 会议。我向会议提交了关于测试的提案,他们不想要。我不知道为什么。大多数时候,即使是组织者也不知道为什么,因为我就是360 AnDev 的组织者,这是丹佛的一个 Android 会议。在选择演讲主题,第一轮投票时,我们隐藏个人信息,仅仅依靠提案的文字内容。然后我们把它发给社区的人们投票,然后组织者根据投票结果选题。

有很多因素,谁也不知道为什么你的建议不被采纳。它发生在每个人身上。去年,我不得不拒绝在社区中突出的人。但不要让这阻碍你,坚持下去。一旦你写了几个建议,四处提交它们。我的意思是你可以在多个会议上做同样的谈话。坚持,直到命中,然后你将在舞台上分享你的知识。这很难,但是请坚持,我们都想听到你的演讲。

分享你的专长!

希望此时,你们都对博客和演讲,对出去分享你的知识和获得专业知识都能感到非常兴奋,并能成为更大社区的一部分,以便我们可以相互学习。

参考

你可以在这里找到相关演讲 here.

博客套路

博客帖子和发言

新闻订阅

技术演讲

Chiu-Ki Chan

Chiu-Ki is an Android developer with a passion for speaking and teaching. She has spoken at numerous conferences all over the world, and has been recognized as a Google Developer Expert for her extensive knowledge of Android. She runs her own mobile development company, producing delightful apps such as Monkey Write, Heart Collage, and Fit Cat.

Transcribed by Sandra Sanchez-Roige