致Android高级工程师的一封信——生产力提效 300% 的秘诀全公开 GitHub标星5.7k

前言

成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~。

本文思维导图

一、管理我们的精力而不是时间

❝ 弄明白是什么使得我们感觉累?❞

通常都会存在以下几种或几种原因:

  • 1)「体力透支」
  • 2)「大脑精力不足,以致无法集中精力」
  • 3)「情绪比较低落、暴躁、兴奋」
  • 4)「觉得自己做的事情没有意义,无法产生兴趣」

❝ 如何管理精力?❞

「找到对自己来说最重要和困难的那些任务,不仅要为其预留时间,而且要预留自己精力最充沛的时间。通常来说,早上是精力最好的时候,因此我常常会在早上安排最重要的工作」

二、一切始于专注

❝ 如何让更多的工作尽快完成呢?❞

这一切都源于专注。专注是提高生产力的灵丹妙药。我们所承担的很多工作都有 「“环境切换”的成本」。当我们从一个任务切换到另一个任务时,我们必须要唤醒某些记忆之后才可以重新开始工作。因此,「专注非常重要,专注会让我们保持高速」

❝ 如何更专注?❞

要进入专注模式,必须克服将自己的思绪集中于单一任务时的那种痛感,但是 「这种痛感和不适只是暂时的,不会持续很久」

「要想更专注,我们必须激发自己的斗志,对抗各种让我们分心的事情,只有打败他们,我们才能升档到“高速”,将自己送入巡航状态。当我们进入专注状态时,需要在心里记住是什么感觉,这将会有利于我们下一次更快的进入专注状态」

下面,我列举一些让自己 「免受干扰的措施」

  • 1)「电脑 qq、微信 开启免打扰模式」
  • 2)「将手机调成静音状态」
  • 3)「关掉分散注意力的浏览器窗口」
  • 4)「禁用屏幕上的弹出窗口」

三、番茄工作法

❝ 番茄工作法的基本流程是什么?❞

「规划出打算一天之内完成的工作,然后设置一个时长 25 分钟的定时器,去完成计划中的第一项任务;在这 25 分钟之内,我们只专注于这一项任务,心无旁骛」

「在 25 分钟结束之后,设置一个 5 分钟的定时器,休息一下。这就是所谓的一个”番茄钟“。每 4 个番茄钟后,我们都需要休息一会儿,通常为 15 分钟」

❝ 如何更高效的利用番茄工作法?❞

我们需要高效的 「跟踪自己一天内完成了多少个番茄钟,并为每天要完成的番茄钟的数量设定目标。因为番茄工作法只有被当做估算和评估工作的工具使用时,才能发挥出它的真正威力」

番茄工作法不但可以让我们全天保持专注,而且可以计划每天和每周的工作,找出每天自己的时间都用到哪儿去了,激励自己尽量工作得更富有成效。

我们可以把每周看作是由有限个番茄钟组成的。想在每周完成一定数量的任务?我们要 「搞清楚自己一周能工作多少个番茄钟,并相应地设置任务的优先级」

正确使用番茄工作法教会我 「”设置优先级“的真正价值」。当每周我只有这么多番茄钟可分配的时候,我必须小心翼翼地使用这些宝贵的番茄钟。「在使用番茄工作法之前,我一直幻想着自己可以在一周内完成超出自己实际能力许多的工作,过高地估计了自己的时间而低估了完成任务所需的时间。但是,开始使用番茄工作法后,我能准确知道自己一周工作了多长时间,也知道了自己完成了多少个番茄钟的任务」

❝ 怎样充分利用好 5 分钟的休息时间?❞

在 5 分钟的休息时间里,我们应该 「抵制诱惑,不要在休息时间阅读电子邮件、阅读新闻、打电话,不要做对下一个番茄钟会造成额外压力的任何事情」。以下是一些比较好的休息方式:

  • 1)「喝水」
  • 2)「上厕所」
  • 3)「活动放松」
  • 4)「看窗外」
  • 5)「眼保健操」
  • 5)「睡觉(家中)」
  • 6)「溜达(家中)」

每当我在进入专注阶段之前,我会开始一个番茄钟,让它稍后唤醒我,这样我就可以暂时换上战略眼光,观察全局,休息后再次回到专注状态之中 — 这就是节奏。

四、生产力提升计划

在平常的工作和学习中我会使用番茄工作法来保持专注,并且用番茄工作法估算和衡量每一项任务要花多长时间。

任务越大,越难被明确定义,大型任务给人带来沉重的心里负担。面对大问题时,我们倾向于花更多的时间思考问题本身,而不是采取行动去解决问题。人类倾向于选择阻力最小的路径。当面对一项大任务的时候,检查电子邮件或者泡上一杯咖啡看起来是更容易的路径,于是拖延随之而来。

「当我们把任务分解成小块的时候,这些任务就变得更容易完成,我们对完成任务所需的时间的估算也更精确,也更有可能正确地完成它们。即使有些小任务没有正确完成,我们也有很多机会改正,而不至于过多地影响大项目」

因此,通常我都会按照 「年度计划 => 季度计划 => 月度计划 => 周计划 => 日计划」 五个层级来对学习目标进行划分。最终,我会 「把一天的时间分配给一个一个用时不超过4个番茄钟的小任务」

1、年度计划

首先,我们应该列出本年度需要掌握的一些技术点及对应的掌握程度。这里就以我制定的 「部分年度目标」 为例进行说明,如下所示(按重要程度由上至下):

  • 1)「具备构建体系化的 APP 性能优化方案与监控的能力,并具有较为丰富的性能优化实战经验」
  • 2)「深度掌握 Gradle 自动化构建技术,并能高效地结合编译插件技术对 APP 的构建流程操控」
  • 3)「具备比较扎实的计算机基础,熟悉 TCP/IP、HTTP/HTTPS、Linux 操作系统」
  • 4)「熟悉 C/C ++,具备一定的 C/C++ 项目实战经验」
  • 5)「具备扎实的 NDK / JNI 基础、对 热修复 技术的实现原理及其关键细节了然于心」
  • 6)「熟悉 Flutter 项目开发,并对 Flutter 架构的核心实现原理 有较为深入的研究」

然后,我们再根据需要掌握的技能点分别制定完善的学习计划。最后,我这里将 「2020 年的学习计划大纲」 正式公开,思维导图如下所示:

2、季度计划

然后,我们将本季度想要完成的工作列入其中,这会让我们 「清楚地了解自己的主要目标是什么」,也知道该 「如何实现它」。同时,它还会使我们 「保持专注」。如下是我的 「春季计划表与秋季计划表」

3、月计划

我们需要根据当月天数和之前的完成情况,粗略估算出当月我能够完成多少工作。我会简单地从季度计划中挑选任务,看看有哪些任务可以写入月计划中。例如我 「本月的计划就是深入探索 Android 网络优化」,如下图所示:

4、周计划

每周的晚上,我都会制定我的 本周学习计划完成情况总结 && 下周学习计划表。对于每一项任务,我们需要估算一下要花多少个番茄钟(专注工作 25 分钟)。需要注意的是,我们要把下周必须做的任务和最重要的任务加入计划中。这样做的好处在于我们能清楚地知道每周自己的时间都去哪儿了,我们甚至能事先控制自己将时间用在哪儿,而不是回过头看自己的时间都去哪儿了。下面,给出我前面已完成的 「本周学习计划完成情况总结 && 下周学习计划表」,如下图所示:

5、日计划及执行

日计划的执行中我们需要注意如下几点:

  • 1)「在坐下来工作之前,确保做一些健身活动,以提高工作时的专注状态」
  • 2)「保证自己优先完成最重要的事情」
  • 3)「如果日计划上对某项任务的描述不够细致,需要添加相应的细节,以避免因为任务定义不清晰而导致的拖延和时间浪费」

在执行了无数个日计划之后,我演练出了一个通用的日计划执行表,如下图所示:

注意,「除非一些事情确实紧急,否则我通常只会在 上午、下午开始工作之前、晚上工作之后 这三个时间节点去统一回复电子邮件」

6、心理游戏

在使用常规的任务清单时,似乎它是一个好主意,但当我们完成某些任务耗费的时间比预计的要长的时候,我们将会备受打击。

而番茄工作法的真谛在于—它能让我们 「明白每天能够专注完成的工作量才是最重要的,而不是全凭主观臆断制订的那份任务列表」

正确理解番茄工作法不仅能帮助我们做更多的事情,而且能让我们可以尽情享受业余时间。

需要注意的是,我们需要花一段时间才能适应它。因为在一天的大多数时间里都保持专注是非常苦难的,可能远远超过我们之前遇到过的苦难。建议一开始使用番茄工作法时,尽可能从更少的番茄钟个数开始,比如 10 个左右是比较理想的。确保我们对自身的能力有一个清晰的认识,开始不要设置过多的番茄钟,比如一天 20 个,这将会对我们的心理与身体健康造成极大地负担。

五、定额工作法

我们还需要一种能够处理需要几周甚至几个月才能完成的大任务的方法。它就是定额工作法。

要想确保自己在追求目标的道路上获得持续的进展,唯一的方法就是 「确立一个明确的目标,规定自己要在预先确定的时间段内需要取得多大的进展」。长期坚持这么做,我们就能够随着时间的推移度量并标记自己的进度。我们就可以确切知道自己在给定的一段时间内能够完成的工作量。

1、我的定额示例

  • 1)「每天早起健身 30 分钟」
  • 2)「每周早上练习算法 2 个番茄钟」
  • 3)「每天上下班走路共计 80 分钟」
  • 4)「每天晚上阅读 4 个番茄钟」

注意,承诺是”定额工作法“的核心,失败不是一个可以被接受的选项。因此,为了确保承诺,「开始的时候承诺可以小一点,在能够达成之后再逐步做大胆的承诺」

2、定额工作法的规则

  • 1)「挑选一项重复性任务」
  • 2)「明确有效时限,在此期间该任务被重复执行」
  • 3)「明确在给定的有效时限内该任务应该完成的次数的定额」
  • 4)「给自己(大家)承诺:一定要达成定额」
  • 5)「调整:调高或者调低定额,但是不能在有效时间段之内调整」

❝ 定额工作法为什么会富有成效?❞

以缓慢但稳定的节奏工作,要优于快速但缺乏持久和坚持的工作方式。 只关注大任务很容易让人泄气,如果每天只是完成小任务就会容易很多。 它可以帮我们克服意志力薄弱的问题,因为这些任务都是必须要做的。它以 「定额的形式将决策转变为命令,我们 无需再做决策,也就避免了意志力耗尽的问题」

六、其它的工作方式

1、批量处理生产效率更高

一次性完成一系列互相关联的任务,而不是将它们拆分完成。一些比较适合批量处理的领域有:

  • 1)「电子邮件」
  • 2)「修复 bug」
  • 3)「开短会」
  • 4)「打电话」

批处理的优势

  • 1)「我们不会打破自己对正在处理的大任务的专注」
  • 2)「我们会更专注于自己平常没有足够的时间进入专注状态去处理的任务」

2、多任务并行

真正的多任务并行无疑会极大地提升我们的生产力,诀窍在于 「搞清楚哪些任务可以被真正组合起来而不会降低单独执行每项工作的生成效率」。通常,我会使用如下几种多任务并行的方式:

  • 1)「写作 + 听音乐」
  • 2)「阅读 + 平板撑」
  • 3)「阅读/编码 + 蹲马步」
  • 4)「洗碗+思考重要事情」
  • 5)「拖地+思考重要事情」

可以看到,多任务执行的诀窍就在于,「只要进行任何需要耗费脑力的活动,就将其与体育运动结合起来」

七、自我责任心

1、对自己负责

「培养出在没有人监督自己的时候也能高效工作的自我责任感非常重要」。自我控制是一门自我激励的艺术,而自我激励的核心则是自我责任感。如果我们不想再依赖别人的影响,获得稳定、可预测的结果,我们就要学会对自己负责。

此外,「公开自己的日常活动也是一个好主意。将自己的工作暴露在公众的监督之下是会有帮助的,因为那种尴尬或者不想让信赖自己的人失望的感觉会激励你采取行动」

2、时间杀手

弄清楚自己在哪儿浪费的时间最多,并消除他们,这就会让我们处于非常好的状态。常见的时间杀手有如下几种:

  • 1)「停止看电视:电视看得越多,我们越会放弃对自己的思想和行为的控制」
  • 2)「社交媒体:QQ、微信」。(使用批量处理)
  • 3)「新闻网站」
  • 4)「不必要的会议」
  • 5)「网络游戏」

3、创建好习惯的最佳实践

我们每一个人都形成了一个习惯,就是工作日都要去工作,所以 「最成功的方法就是围绕 5 个工作日来形成习惯。建议把每天最开始的一两个小时投入到最重要的目标上。我们可能需要早起一两个小时,但是通过有效利用每天最开始的一两个小时,我们不仅更容易坚持想要做的事情,还会精力更加充沛」

我们还应该 「为自己安排一个食谱,如果这些事情不能提前计划,最终我们就会吃的很差,并且也会因此浪费很多时间,以致自己身心疲惫」

4、改掉坏习惯

我们需要设法找到生活中令我们感到内疚的事情或习惯。努力找出是否有别的惯例可以替代当前这个为了某个习惯正在执行的惯例。强迫自己坚持足够长的时间,以使新习惯取代旧习惯。

5、努力工作

❝ 赛跑比的是谁耐力更长久,而不是看谁冲刺更有力。❞

艰苦的工作最有可能是让我们获益良多的工作。无论什么时候,努力工作的人总是超越自认为聪明工作的人。如果我们愿意在一件事情上比别人坚持更长的时间,那么最终我们就会超越其他人。「因为只有那些愿意投入漫长的努力,并愿意为了完成工作执着于枯燥工作的人才会遥遥领先其他人」

如果我们想要成为成功人士,就需要在自己的职业生涯的数年里每周工作 60 ~ 70 小时。为了获得领先地位,我们需要好几年都不得不放弃看电视或者与朋友们外出游玩。但这并不意味着我们永远都不能有片刻轻松。成功会带来更多的成功。「越成功就越容易获得成功。但是,攀登第一座山峰的过程是漫长又艰难的,我们必须愿意付出努力,必须愿意将自己所学的东西付诸实践,让他们发挥作用」

每当我们试图提升自己至一个更高水平的时候,阻力一定会伸出它那丑陋的脑袋,试图让我们原地不动。因此,我们必须要学会脚踏实地、埋头苦干。我们必须要认识到,工作最终必须要被完成,所以还不如现在就做,而不是拖到以后。我们必须认识到,要想实现目标,要想发挥出自己的全部潜力,唯一的途径就是自愿咬紧牙关、硬着头皮、开始工作。

6、即刻行动

❝ 开始并完成一件事情,比做好它更重要。因为只要开始了,你就有机会把它做得更好。❞

我们明知道应该采取行动的时候却选择拒绝采取行动,恐惧、懒惰可能是最大的原因。尽管我们即将采取的行动可能不是最好的,但是几乎总是比默认选择不采取行动要好。「因为看上去繁难的事,只要开始做了,就会变得越来越容易」

❝ 如果开始我采取一些行动,在我发现正确的行动之前,还能进行调整吗?❞

当然可以,早在 2019 年下半年初始的时候,我就接到了专项性能优化的工作,期间一直在研究与实践启动速度、内存、绘制优化的相关课题。但是,直到 2020 年 2 月初在研究包体积优化的时候,才发现 Gradle + 编译插桩 技术在性能优化体系化建设中的重要性。不过,这并不会对我性能优化的学习道路造成多大影响,在初步完成了包体积优化的课题之后,我便立马投入了 Gradle + 编译插桩 系列技术的学习当中。

八、图层工作法

「我们可以对不同认知类型的工作分层处理」。例如:写文章的时候,我们可以先一路往下写,对于需要插图的地方,只是记下位置标记,等到文章写完之后,我才会返过去加上插图。这些就减少了任务切换的复杂性也节约了切换成本。

此外,它也提升和方便我们为作品附上更多图层,以增加作品的层级和厚度。「如果我们用图层工作法去完成任何一件作品,我们会更加精雕细琢,会在原先简陋的坯子上一层层地添加新的元素,使其更加精美和丰富」

九、总结

可以看出,笔者的工作学习模式便是由以下 「六个要点」 组成:

❝ 多层次的工作/学习计划 + 番茄工作法 + 定额工作法 + 批处理 + 多任务并行 + 图层工作法❞

希望大家能将这些要点融入自己的工作学习当中,我相信一定会工作与学习地更富有成效。

下面是我学习用到的一些书籍学习导图,以及系统的学习资料。每一个知识点,都有对应的导图,学习的资料,视频,面试题目。

如:我需要学习 Flutter 的知识。(大家可以参考我的学习方法)

点击 了解更多 即可领取!

其他需要,也可以在我的 Github 上查看

  • Flutter 的思维导图(无论学习什么,有学习路线都会事半功倍)

  • Flutter进阶学习全套手册

  • Flutter进阶学习全套视频

大概就上面这几个步骤,这样学习不仅高效,而且能系统的学习新的知识。

猜你喜欢

转载自blog.csdn.net/Android725/article/details/106473918
300
今日推荐