大家都清楚,我们提升自己的学习方式,一般分为

  1. 自学,自我提高的一个过程;

  2. 跟着公司项目成长,就是我们所说的做业务迭代的过程。

算了算,我也快工作三年了,这三年在不同时期有着不同的认知,也浪费了不少的学习机会,不过也总结了一些良好的学习习惯,今天跟大家分享下如何正确的利用工作环境学习。

1. 线上疑难杂症

首先工作环境下,和自学是不同的,这里是实战,也就是将你所学的知识应用到线上,经过无数用户对你的代码进行验证,在不同配置的机型,不同的使用习惯,不同的网络环境下,会遇到很多问题:

  1. crash ,一般为应用添加监控主动上报

  2. 兼容性问题,一般由用户主动反馈

以上两类,一般业务上引发的问题,都能解决。

最后在平台上,都会剩下一些非常难解决,影响也不大的,我们称之为线上疑难杂症。

这类问题,想必大家都会遇到,很多时候,我们的态度是:

"没什么影响,大家都有"

"又不是我搞得,不管"

这样的态度是极其不正确的,这些问题才是学习的非常好的材料。

很久以前,曾经我参加过一次面试,问题就是有没有遇到过一些难搞的异常,是如何解决的?

当时我参与业务开发并不多,一时语塞,自己好像并没有特别关注过这些。

现在想想,是极其不应该的。

很多时候,我们抱怨做业务没有成长,恰恰相反:

我们在业务过程中,面临百万甚至千万级用户,总会遇到各种各样难解的问题,这些问题恰好是帮主我们成长的非常好的学习资料,而往往被我们自己懒惰 or 逃避的心态放弃了这样的学习机会。

所以,如果你看到这篇文章,不妨多关注这些问题。

有一个好消息是这些方案,一些业界大厂都会比较追求极致,往往也会分享一些技术性文章解释如何解决,我简单举几个例子:

  1. finalize time out Exception

滴滴曾经分享:

  • 滴滴出行安卓端 finalize time out 的解决方案
  1. bad token Exception

bugly 也分享一篇 window 的文章,其中对 token 也有一定的解释:

  • 浅析 Android 的窗口

也有一些非常优秀的个人开发者,针对 toast bad token exception 开源自己的方案:

https://github.com/PureWriter/ToastCompat

  1. SharedPreference 导致的anr

头条技术团队,对于 SharedPreference apply 引发的 ANR 问题的分析与解决。

剖析 SharedPreference apply 引起的 ANR 问题

  1. webview的一些崩溃与兼容性问题

  2. RxJava 使用不当引发的一些奇怪的问题

...

这些疑难杂症就摆在你的面前,而且有非常多的解决方案,可以让你去尝试解决,线上的环境又可以支撑你去验证。

不妨追求极致,尝试去修复这些问题。

这些可是自学环境下学不到的,即使你自学学到了这些问题的解决方案,也没有足够的条件让你线上验证。

另外,在工作中有什么追求极致的想法,例如一些极致的优化方案等,千万不要藏着掖着,尝试干一波,上线验证一波。

不经过线上验证的都是纸老虎,你永远没有办法了解方案的稳定性。

关于大厂相关文章查找,我也给大家做了个系列:

Android 这些内容你应该知道 | 3 期

Android 你可能错过的信息 | 2 期

Android 优质技术分享 1期

2. 线下疑难杂症

另外,我们在正常的业务迭代过程中,自己或者同事,偶尔也会遇到一些比较难搞,或者极度不符合预期的问题,一般有:

  1. 正常开发过程中遇到的难搞的需求;

  2. 实现过程中与预期极其不匹配的情况;

  3. qa报的比较偶现的bug;

这些问题,可以适当的关注一波,当然并不是把这个问题揽过来,可以去了解下这个问题,尝试自己解决下,或者思考为什么会这样,有结论了可以和同事讨论一下,共同解决。

没有结论,作为未知知识,后续同事解决了,问一波,再看下代码,也算学到了。

不是所有的需求都能遇到疑难杂症,遇到了不要退缩,反而应该庆幸,感觉要学到了,今天又赚到了。

记得有一次,我们遇到一个非常奇怪的线上问题,和同事一起搞了好多天,连续发了多个版本验证,针对遇到的问题,各种猜想、验证。顶着压力解决后,后面回顾这段时间,都会说道:

这波不亏,学到了。

在一个团队中,这样做事不设边界,除了能学到更多,也能和同事相处更加融洽。

**

  1. 总结**

很多时候,有同学问我

「鸿洋,有哪些知识学了之后就能成为高级工程师呢?」

没有。

职级都是公司赋予你的,并没有什么知识学完就是高级工程师了,更多的还是要结合实际的项目经历,所以选择一个自己认可的公司,不断学习与积累,跟随项目成长,最终得到认可,赋予你 "高级"的 title。

而想要快速成长,文中给出了两点可以借鉴的方案。

其次,咱们这一行,绝大多数问题都不需要拼智商,90%的你遇到的问题,别人都遇到过,都能靠着搜索引擎解决。

但是每次解决后,如果你有心,去探索背后的原理:

1. 为什么会有这个问题?

2. 这个解决方案,最终解决问题的本质是?

3. 了解了本质后,是否还有更佳的解决方案。

长此以往,差距慢慢就显现出来了。

”有些同学遇到问题,依旧依靠搜索引擎“

”有些同学遇到各种问题,基本上看一眼报错,结合上下文,马上能想到问题的本质。“

想要快速技术成长,先摆正自己的态度,做好长期积累的准备。

为什么周六,我不好好休息推文了呢?

因为最近广告推送占据了一些推送机会,所以我会额外花时间,补一些文章给大家,这些文章一般在次条 or 周末。

推荐阅读:

最近 Flutter 争气了! Flutter 也可以做这么炫酷的动画

开源一个 Android 图片压缩框架

我在一个群分享Android 好像被我分享得没人说话了... 2期