是什么?
对,标题没写错,我是认真的。给高级 Android 工程师的进阶手册。
这件事的准备工作,我做了整整一年。
决定做这件事,源于一年前我和老婆的一次对话。
我:「又拒了个技术分享邀请。」 老婆:「为什么?」 我:「不知道讲什么。」 老婆:「江郎才尽了?」 我:「才尽了。真的不知道讲什么好,选题太难了。关键是选不到对听众有用的题。其实说实话,让我选一个大家关心的技术话题,上台去逼逼几十分钟,让大家听得热血沸腾鼓掌叫好,这一点都不难。但是这种分享大多数时候对听的人并没有什么帮助,虽然他们在听的时候会觉得受益匪浅。」 老婆:「你连粉丝都黑。」 我:「我说的是真的。他们虽然会觉得,哇塞讲得好牛逼啊,我还要学习一个啊,但其实一个分享听下来或者读下来,他们的技术并没有得到任何长进。我觉得技术分享这种事,应该是听者获取知识、讲者获取声望的双赢的事,而假如受益者只有我自己,听者得不到实质性的收获,我宁愿不讲。所以我不是不愿分享,而是不知道分享什么。」 老婆:「伟大。」 我:「我真这么想的。」 老婆:「我没讽刺你。你上次跟我说最近写不出技术文章了也是这个原因吗?」 我:「对。不知道写什么能真正帮人进步。我现在不太想写技术热点了。倒不是说热点没用,而是我觉得现在多数人最需要的不是这些前沿技术的追新,而是一些相对基础的东西。尤其是很多高级工程师,更需要基础。」 老婆:「高级的不会基础?上了大学还不会 1+1=2 ?」 我:「1+1=2 可不是基础,那叫入门知识,和基础是两回事。就比如你说的数学吧,小学学 1+1=2,中学学抛物线,大学学微积分,这都是必备知识,不叫基础。但是基础差的人,就有可能因为不知道括号里面的应该优先计算而导致微积分算错。括号是小学就学的东西,但它会影响到你以后的各个阶段,这个就叫基础。」 老婆:「没听说谁上了大学还不知道括号里的应该先算的。」 我:「我这不是举例嘛,你领会精神。做到了高级的,基础确实不会太差,但很多人的基础知识都是在工作中慢慢补起来的,不够系统。」 老婆:「基础知识不是大学就学过了吗?」 我:「还真不是。这几年中国的软件发展太快了,学校教育跟不上。你看我当时就是我们学校第一届软件工程专业的,老师们都是摸索着教的,能教得多系统?」 老婆:「你连母校都黑。」 我:「其实我们学校算好的了。」 老婆:「那你为什么不讲基础?教教高级工程师怎么用括号。」 我:「这就是关键所在啊,基础超级难讲明白的。基础的东西往往成体系,而且既晦涩又难理解,要想讲得通俗易懂,我光准备就得花很长时间。」 老婆:「多长时间?」 我:「不知道。不过怎么着也得半年到大半年吧,而且还得是全职做它的前提下。但是全职做明显不现实啊,全职做就得辞职,辞职就没工资了。」 老婆:「哦。」 我:「嗯。」 老婆:「你说的这个基础,真的很有用吗?」 我:「真的。基础相当于武侠小说里的内功,看起来你以为没用,但是已经内化到骨头里了,基础好的人做起事来非常稳当,而且再学别的什么也会很快。而你基础如果不好,工作头两年可能还好,慢慢你就会发现,你的技术提升不动了。其实大家做到一定水平之后,都有各自擅长的东西,你别看我在网上有点小名,真论技术他们未必就比我弱。但长期来看,基础是每个人都需要的,如果我能把我花了很多时间学到的这些基础给他们讲出来,让他们轻轻松松就能学会,不用和我一样花费大量的时间在这上面,你说这事棒不棒?」 老婆意味深长地看着我:
然后她说:「我同意你辞职。」 我:「我没,我没说要辞职啊。」 老婆:「咱家又不缺你挣的那点钱。」 我:「……你这么揭穿我考虑过我的感受吗?」 注:出于篇幅考虑,谈话内容已经过精简。
第二天,我提了辞职。
去年 7 月 1 日,离职后的我回到郑州,开始了自己的「高级 Android 括号里优先计算技术分享」的准备工作。
说一下「高级」这个词。同样的一个词,不同的人有不同的理解,不同的位置和环境有不同的定义。A 公司的「高级」,在 B 公司也许叫「中级」,到了 C 公司可能又成了「资深」。想来我最后一次换工作时,薪资涨了不少,职位却是从 「高级 Android 工程师」「降级」成了 「Android Engineer」。所以为了理解的统一,我先明确一下我所指的「高级 Android 工程师」的具体是谁:我这里说的「高级 Android 工程师」,主要指的就是国内大多数小型和微型公司里的 Android 骨干或 Android Leader。这些人在公司的职位通常叫做「高级 Android 工程师」,技术也很不错,但和一些有技术积淀的大公司中的高级工程师相比,他们中的多数人往往(注意是「多数人」「往往」,不是全部,谢绝学我老婆抬杠)底子不够扎实,基础相对薄弱,所以很容易在到达一个还不算很高的技术水平之后,就感到难以继续提升了。他们并不是不想上进,而是不知道应该怎么上进,很多人都已经尝试过很多学习方法,但都好像没有刚入行时那样进步神速,感觉每天都是一个全新的自己了。据我了解,现在中国的程序员中,这样的人非常多。他们是每个公司的骨干,但技术水平却没有达到自己期望的高度(甚至有不少人,也没有达到公司同事以为的高度)。我在这里所说的「高级」,指的就是这些人。
而我做这件事希望可以帮到的,也是这些人。
在做之前,只觉得这会是一件有点麻烦的事;然而做了才渐渐发现,这件事真是太太太麻烦了。原本以为半年就能做成,没想到却做了整整一年。这一年里,我学了很多,做了很多,也走了很多的弯路。
还好,今天我终于能够宣布,我的技术分享项目「HenCoder」面世了!
从今天起,我将会持续地在我的知乎专栏、掘金专栏、微信公众号(HenCoder)、以及网站 HenCoder 同步发布我的每一期的分享。频率大约会是每周一更。
第一阶段首先是 Android 的 UI 基础中的自定义 View,下面这段视频是一个对此简要的介绍:
正式的技术内容将会从下周开始。如果感兴趣,可以关注一波。
在这一年里,朋友和内测读者们跟我提了不少问题,我把其中问得最多的几个拿出来统一回答一下:
最后,感谢这一年以来给了我各种支持和帮助的各位: