Android开发者进退两难的出路:转行或进阶?
著名国学大师王国维先生,曾经在他的名作《人间词话》中说,人生的三个境界是:“昨夜西风凋碧树,独上高楼,望断天涯路,此第一境也,衣带渐宽终不悔,为伊消得人憔悴,此第二境也,众里寻他千百度,蓦然回首,那人却在灯火阑珊处,此第三境也。”
这三个境界用到我们程序员上,再适合不过了~
1.昨夜西风凋碧树,独上高楼,望尽天涯路
当前移动互联网的开发环境,Android经过10年的发展,大幅度降温了,不是懂一点Android基础就能找到工作的年代。
很多发展不理想的Android程序员就很自然的会想到转行
那么转什么最好?
每个人的自身情况不同,转的方向也会有所区别,转人工智能相关开发肯定是最好的,毕竟风口上的猪也能飞,跟着风口无可厚非。只可惜人工智能相关对学历和算法要求很高,最起码得是个硕士吧,而且这只是低配。那么大多数Android开发可以转的方向主要有前端、后端和python等等。我大概说一下:
1.转前端,这个是我认为最好转的一个方向,前端的理念很多都和Android类似,也可以作为Android的延伸,向大前端发展,如果对界面感兴趣的可以转前端试试。
2.转后端,后端这个就是完全的转行了,看似Java大家都会,但是后端的技术栈可不是只有Java,各种框架绝对叫你头大,很多人强调后端技术深,各种处理高并发看似十分有技术含量,不过这只是为数不多的公司在做。如果想要稳定的可以转后端试试。
3.转python,python最近真是很火,因为他跟人工智能发生了关联,其实大部分学python的没有搞什么人工智能相关,基本都是在搞爬虫。追求浪潮的可以转python试试。
不要轻易转行,要转就尽早转
其实现在大部分转行纯属是为了跟风,为了那点钱,而忽略了长期的发展。现在市场的对Android开发的需求已经非常理智,但是Android开发者缺鲜有看的清形势的。在资本寒冬的年代,任何行业都比较难找到好工作,都比较难拿到高薪。作为Android开发者,我们需要明确如下几点:
-
1、移动互联网无可替代,除非人类不需要手机,而Android又在移动互联网中具有不可替代的地位;
-
2、技术需求市场依旧旺盛,只是能力要求更高,人力市场两级分化,能力弱的找不到工作,用人单位招不到高级人员。
资本寒冬,留给Android程序员的是机遇和挑战,给予职场人的是突破自我的压力和动力。所以,目前这个阶段只有提升自我技术修养,苦练内功才能在众多求职者中脱颖而出。
2.衣带渐宽终不悔,为伊消得人憔悴
从自身规划的角度讲,技术上的进阶分如下几个阶段:
-
1、做好业务需求的功能。这个是初级程序员就应该有的能力,俗称面向百度编程
-
2、解决极端情况下的技术问题,比如性能优化,OOM等。稍有点规模的公司,肯定都会遇到这种问题,比如上文中说的App在部分机型上崩溃、页面加载不出来等。只是大部分程序员会觉得难以复现,或者是因为小概率事件而忽略了。在忽略这些问题的过程中,也放弃了进一步提升的可能性。还有一部分程序员是看到了这些问题,但一直不知道怎么解决,因为这些问题的产生基本都是要往底层框架去找原因,而平时只关注上层的业务逻辑代码,因而没有深入研究底层的原理,导致心有余而力不足。
-
3、在开发框架和效率上做文章。举个例子,很多程序员说自己的精力都在和产品的撕逼中浪费了,但有没有想过,能够通过技术手段将自己从繁杂的无技术含量的工作中解救出来?比如是否能够做到只编写一次代码,或者改个配置参数就能够做到在不同平台上运行。更高的要求是,能否将这些方案做成通用框架或产品。
温水煮青蛙,我们停留在初级阶段的程序员尤其是大龄程序员就是这个里面的青蛙。以上几个阶段看着容易,但需要我们很大的勇气和坚定的信念才能逐步实现。因为,太多的程序员太依靠开源了,停留在来复制和粘贴阶段了,相反,深入学习,深入源码,开拓技术视野的本能在逐步丧失。
举个支付宝招聘的例子:
image在红色框里面的内容就非常简短,但是缺蕴含深意:高性能编程和性能调优共同决定了Android平台的代码执行的高性能。这也给我们指明了努力的方向:我们即具备写高性能代码的能力,同时又要具备修改别人代码并使之具备高性能的能力,这些都是copy代码学不来的。以下是性能优化的思维导图:高性能代码编码实战,是带领大家将代码写起来;用户体验及资源消耗优化,是带领大家从用户体验的角度去修改现有的代码。
image
当然,要让自己成为高级工程师,不仅仅需要自己具备性能调优的能力,其实学习的内容还有很多。还需要对Java(Kotlin)语言熟练掌握/Android SDK原理源码深入理解/高级UI绘制能力/Android热门技术/C与C++语言能力/NDK开发能力/hybrid开发(Flutter)/小程序编写能力。因为不同行业不同项目需要学习进阶的技能都不一样,要是要在细分领域找准方向!
这里给大家分享一份全面详细的阿里P7级别的进阶技术大纲,给大家如何进阶提供方向;
百度脑图
这里想跟大家提一个问题。在浏览招聘网站时,你是否有过这样的想法;凭什么那些高级工程师月薪可以拿三四十万以上,而我去小厂面试个工作还要被挑挑拣拣?自己能不能成为,怎么样才能成为高级工程师拿高薪呢?
如果你承认在Android方面真的不如别人,无法发挥你的天赋。请往上拉看文章前面转行的建议和方向。
3.众里寻他千百度 蓦然回首 那人却在灯火阑珊处
如果现在的你仍想在Android开发方面有所突破和提升,甚至刚刚好处于找工作跳槽面试阶段,我希望能够为你提供一些帮助
技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 几大块;
我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
image
Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言
高级UI与自定义view;
自定义view,Android开发的基本功。
性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。
NDK开发;
未来的方向,高薪必会。
前沿技术;
组件化,热升级,热修复,框架设计
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,石墨文档可见;《Android架构视频+学习笔记》
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
不出半年,你就能看出变化!