Android开发初期之后怎么提升?怎么才能叫精通?方向在哪?

先mark一下,好多人我发现始终停留在两三年的水平上没有突破。

另外还有一个误区就是越底层越牛逼

第三个就是,我认识的大部分所谓的做过rom开发的对framework的熟悉程度远不如我一个一直做应用的,大概是见木不见林,始终在那一个小角落里修修补补,不会横向,也没有纵向延伸。另外这里很重要的一点是基础,比如你是否有*nix基础,可以帮你快速理解很多东西

晚上有时间的话把这三块展开说一下

---------------------分割线,这么多评论,压力好大-----------------------

首先第一个问题:为什么很多人会一直停留在两三年的水平上,而后一直在重复以往的经验?
我认为最主要的一点就是主观能动性,或者说兴趣,如果你对Android开发没有太大的兴趣,那么还是尽早换方向吧。有了兴趣,然后就是要有一个比较正确的钻研路线,不要这也搞那也抓,最后什么都没精通又好像什么知道。一个很好的例子就是我用过很多库啊

@MagiLu

艺哥也提到过,很多面试者以用过很多库为荣,你真的去了解过这些库么?
我觉得一个比较好的路线是,把日常开发常用的各种系统库,开源库,代码好好研究一遍,比如我用了butternife就要了解背后的apt,以及apt衍生出来的一系列库比如Hugo。当然这大部分情况是初级进阶的第一步。这个阶段应该是尽量很好的用技术完成业务需求。

第二个阶段,我觉得可以尝试去了解Android Framework比较细节的一些东西,比如activity启动流程,顺便分析清除Activity stack的管理,比如了解Android的资源加载机制,顺便了解aapt是如何打包Android资源的;又比如Java的类加载机制,这里配合资源的加载机制,很自然的就可以去了解Android的hotpatch机制,插件化的实现,开一些这方便的开源库或者自己撸一个也就自然而然。这里我比较推荐

@Gityuan

同学的一系列博客,分析Android各种源码很不错。这个阶段你可以用技术反哺业务,比如插件化和hotpatch就可以让业务更加灵活。

第三个阶段,横向扩展,到这个阶段并不是说比第二个阶段更加高级了,而是对第二个阶段的一些补充,比如你是不是可以了解一下web开发,这样做hybrid开发的时候就会更顺手。是不是要了解一下这么火爆的ReactNative&Weex技术,甚至可以把他们的一些思想拿过来自己用,比如我司内部就有很多项目是用了JSCore和CssLayout来实现一些更轻量的动态化技术的。正如科学领域很多重大贡献都是在交叉学科领域出现的。技术上到了这个阶段甚至可以做到技术影响业务,技术驱动业务。

第二个问题:技术越底层越牛逼么?
其实大部分技术都是为了满足业务需求,我认为这种场景下,是能越好的反哺驱动技术才越牛逼,和底层不底层没关系。比如你app做的非常牛逼,交互和性能非常好,直接带动业务飞速发展,我觉得你并比能做底层人差,术业有专攻,以你的态度和能力,即使去做底层开发,也是没有问题的。

第三个就是为什么很多做rom的反而对Framework不是很熟悉
我觉得这个和第一个问题有些重复,兴趣是很大的原因。另外一个问题就是,如果没有*nix的编程基础,底层的一些东西比如binder机制,比如runloop可能会有一些吃力。这里服务端的同学可能会有一些优势,他们对rpc和一些系统调用相对熟悉一些,这也是为什么很多后端转到Android的同学可以快速精通。

------啰啰嗦嗦写这么多,请大家来拍砖-------

猜你喜欢

转载自blog.csdn.net/weixin_42600182/article/details/81186484