「2019,路漫漫其修远兮」| 掘金年度征文

1,582 阅读12分钟

上天总是“神不知鬼不觉”地偷走你的时间,每当我们回顾的时候才倍感珍惜。

2019年初规划的“豪情壮志”,如今看来,已然被时间长河掩埋和腐化:

  • Android 深入学习
  • 深入 Kotlin 语言学习和实践
  • 了解跨平台开发及前端开发
  • 了解Flutter并作实例训练
  • 稳定维护一个开源项目
  • 学习 Python 和数据爬虫、分析等
  • 技术文章每月至少发表一篇
  • 了解项目管理相关专业知识
  • 技术、产品、职业发展、个人成长等相关书籍 × 10
  • 五款框架源码阅读、解析和实战应用

划线部分就是今年未完成的计划,有一半都被搁浅了,想来着实惭愧。不过,虽然期间也有很多突发事件打断了原本计划,比如公司业务变迁、项目职责变更、个人兴趣转变、生活琐事等等,但也还是 Get 到了一些计划外的收获,也算给焦躁的内心带来一丝安慰。

回顾 2019

2019,这短短的一年经历了大大小小的事情,虽然错过了很多,却也收获了很多。首先从技术领域说起。

Android 领域

自毕业开始到现在,我已经在 Android 方面摸爬滚打了两个多年头了。2019,已经不像前一年那样进步飞快了,取而代之的是“步履维艰”,让思考和经验来沉淀自己,这应该也算是每个技术人员必经的时期吧。以往开发过程中更多的是“站在巨人的肩膀上”去快速开发和完成任务,缺少个人的思考和对于技术纵向深度的领悟,以至于出现某些特定问题没有给出良好方案去解决的情况。

于是乎,今年便开始了“痛苦而充实”的进阶之路,书籍、博客、课程、文档等等知识涓涓细流灌输于心,让我自身在考虑和解决问题角度及态度方面发生很大转变。比如,在工作流程上,以往完成一项需求开发任务会直接手绘出大概业务逻辑和复杂点,然后便直接着手开发;而今,会在开发前先去通过“需求看板”来细分需求,而后借助于流程图去理清业务关系和用户交互细节,接着通过 TDD(测试驱动开发)模式来编写单元测试并编写和跑通对应的功能代码。当然,在编写代码前也需要考虑很多事情,如选择不同的实现思路,对应的前期投入、开发成本、维护成本等可能会大相径庭。此外,在经历一段时间小团队开发形式后,开发规范的重要性也日益凸显,这就要求我们需要形成一个统一、规范化和系统化的开发模式,同时要养成代码重构的习惯(代码规范可参考阿里Android开发规范)。

另外,比较“幸福的一件事”是采用了 Kotlin 语言慢慢代替先前的 Java 语言,并着手新项目开发以及老项目的迭代和维护工作。就 Android 开发而言,采用哪种语言并没有绝对的好与坏、优与劣之分,关键在于“持剑的人”:一把绝世好刀在大侠手中可能就是劫富济贫的利器,而在屠夫手中可能只是一把充满血腥味的普通的刀而已。

最后,在系统源码阅读方面有了一些进展,通过查看和分析源码,进一步熟悉 App 从安装到启动再到正常运行的过程、UI绘制的流程、组件通信的过程等等,可以很好的学习各种设计模式在Android源码中的灵活应用并显著提升解决问题的能力和代码规范性。当然,过程痛苦,但想要蜕化成蝶,就必须要经历这个思想磨砺的过程。

此处附今年已读部分Android书单:

  • 《Android 开发艺术探索》
  • 《Android 进阶之光》
  • 《Android 源码设计模式解析与实战》
  • 《Gradle in Action》
  • 《Android 移动性能实战》
  • 《Kotlin in Action》

Flutter 方面

今年,偶然机会接触了Flutter,虽然问世不久,但从 GitHub 的火热程度以及性能来看,未来发展形势肯定也是一片大好。大概在 11 月初,我参与了公司新项目技术方面的选型和研究,由于新项目需求并不复杂,就考虑到项目可以通过 Flutter 技术来实现的可能性。经过几天的分析和讨论,最后终于确定下来新项目采用 Flutter 来构建。如今,我们小组已经借助于 Flutter 来开发项目有一个多月了,虽然有些磕磕绊绊,但也并没有发现比较棘手的问题,近期项目也一直处于稳步的开发过程中,预计将于年前上线。

开源项目

幸运的是,2019 年初,一个偶然的机会,我和几个朋友讨论一些 Android 面试方面的问题,于是便涌起了一个特殊的想法:何不将面试题通过“每天一问”的形式在 GitHub 上面创建一个开放仓库呢?基于这个世界最大的技术社区,大家可以通过 Issue 来讨论每天的面试题,畅所欲言。接着,这个计划 —— Android daily Interview 就于几天后被成功实施,并一直坚持维护到了现在:在不知不觉中已经 300 天了,累计有 200 期了。在此期间,也感谢洋哥的多次推荐,让更多小伙伴参与进来,不论是建议还是参与答题又或是提供面试题,不辞辛苦,都为了这个项目奉献了自己的力量,在这里我要对他们表示最真挚的感谢🙏。

如果你近期或后续有换工作需要,又或是有心想参与进来,欢迎答题 or 一起坚持、维护下去!✊

另外,最近着手开发一个个人应用 —— Sight,基于 Kotlin 和 JetPack,预计将于年后上架并开源。

文章创作

回顾这一年,技术文章产量降低了,虽然更加忙碌了,但始终无法以此为理由来搪塞自己。不过,文章创作上更加有条理性和系统了,不再像以前那样挥笔疾来了,而是先构思一下并思考编撰方式,当然,随之而来的是时间成本的增加,不过,显然这些付出是值得的。也是在今年才陆续在掘金上发表文章,虽然数量仅有几篇,所幸文章的曝光度和反响都还不错,收获了大概 2000 关注度,这也将继续激励我进行后续的文章创作。

技术活动

2019 下半年,有幸参加了几场技术分享盛会,收获良多。9 月份的 Google IO 大会上,我再一次感受了科技进步的魅力,几乎每年都能感受到技术变化带来的惊喜,这种喜悦并不只是针对我们技术人员,对于广大民众和整个互联网市场来说也是机遇无限。从 Android 10 问世到 Kotlin 与 JetPack 的进一步发展,Android 应用开发成本大幅度降低,技术栈也更加完善却也呈现“百家争鸣”之态;从 Flutter 1.0 问世到 1.9 版本的发布,跨平台开发将呈现更大的发展态势;从 ARCore 增强现实技术到 TensorFlow 机器学习的不断改进,科幻电影中的“黑科技”将离我们不再遥远。 随着 Material design 设计思想的推广和传播,新的设计的风格也正在一点点被大众所接受......

业余阅读

除了技术书籍以外,我也在一些“边边角角”的时间看了一些其他方面的书籍。从《穷查理宝典》中,能细品查理•芒格的人生智慧,受用无穷;从《增长黑客》中学习了如何零成本推广和发展产品;读《乌合之众》一书,进一步解读大众心态和心理,同时要在普遍从众的现象中保持自我,而不是沦为单纯的“一群只会攻击的野兽”。

新一年规划

接下来的 2020,又将是一个新的开始。从若多案例来看,我深知咱们搞技术的如果学不动或者停滞了向前,那么我们离被淘汰也就不远了。生活中肯定不能一直抱着“船到桥头自然直”的心态,提前规划学习目标和制定成长路线显然才是上策。

  • Android

    Android 方面才是主技能,吃饭的家伙可不能丢掉,新的一年将继续研读源码、深入研究 View 绘制、Binder 机制、插件化深度探索、JVM虚拟机、Kotlin Coroutines 等内容。后续将尽量减小横向技术的发散,进一步加强纵向技术深度。Android 涉及业务领域众多,我相信,如果在任何一个领域站稳脚跟,那么未来的路都不会太差,重要的是努力找准自己的方向并坚持“钻子精神”。

  • Flutter

    Flutter 仅仅接触了不到两个月,虽然时间较短,但作为一项个人辅助技能也是未来可期。所以,未来要加深这部分技术的学习以及部分源码的解读,研究和实践混合开发的那些事,并运用到个人的实际项目中,有必要的话还是需要稍微了解一下 iOS 的打包、仓库配置和插件开发相关知识,毕竟既然接触了跨平台的开发技能,如果仅实践于 Android 端,那也实在说不过去了。

  • 其他

    除了加深移动端系统方面的学习,也要留意数据结构算法的步伐不能落下,后续也需要进一步制定各部分的详细计划监督和督促自己,防止不了了之的情况出现。Leetcode 题库的继续收割和训练、操作系统和计算机组成方面知识的回顾和巩固等,这些东西虽然看似平实压根用不上,但是很多地方究其根源还是会牵扯到这部分的扩展,何况也属于面试必考察的知识点,不可忽视!

    提到这,突然想到自己的简历也好久没更新了,年后考虑跳槽,近期需要重新准备一下中/英版简历,此任务优先级较高。

  • 博客

    在文章创作方面,预计坚持 1-2 个月产出一篇较高质量的文章,同样,基本都会配上 demo 地址。文章大部分主要发布在掘金这种垂直性的技术社区,文章内容以移动端技术实践和新技术尝鲜为主。并会根据“修炼成果”尝试在下半年创办个人的公众号,主要以技术文章为主。

  • 开源项目

    预计在 2020 年主要维护两款开源的项目,即我上面提到的 Android daily Interview 和 Sight。

    每日面试题的项目基础题库已经快接近尾声,后续将在 Android 系统源码、难题解决方案、数据结构算法、Kotlin 实践和源码分析、架构等方面来出题,题目几乎来源于国内外各大公司的内部题库,也请大家拭目以待啦!当然,如果你有好的题目,欢迎提交 PR,与我们一起“并肩作战”!

    至于 Sight 这款应用(暂命名),主要用来熟悉和实战 Kotlin 以及 JetPack 全家桶,严格遵循 Material Design,努力达到一款“产品级”应用要求,并将会上架于 Google 和国内应用市场,到时候欢迎大家前来体验和提出 Bug 😄。此外,该项目后续也将通过 Flutter 来混合开发部分页面,并 Clone 项目和 Flutter 重构,尝试将其应用到多端。最终代码将会在应用上架后开源。

  • 个人身心

    这是最重要的一点!近期网上各种同行 ICU 或者被逼迫辞职的案例屡见不鲜。一方面,我们也要学会武装自己,利用一些业务时间接触一些法律、心理、创业等其他方面感兴趣的知识,不至于“破釜沉舟”的时候才发现自己只是别人的“垫脚石”。另一方面,对于我们潜心“修炼技术”的人来说,“技术是第一生产力”,但更要明白:身体才是革命的本钱。没了健康,你所拥有的一切也许只是虚妄。所以,大家在做技术的同时一定要坚持锻炼,保持良好的生活态度,心不老,气长存。

My life

往事不回头,岁月不饶人。留给我们的时间不多了,2020,路漫漫其修远兮,吾将上下而求索,一起加油吧!

最后,送上我喜欢的一句话:“我的剑,留给能够挥舞它的人”。希望大家 2020 年能够挥舞自己心中的那把良剑,斩获 offer,一夫当关万夫莫敌!

掘金年度征文 | 2019 与我的技术之路 征文活动正在进行中......