聊聊对-Android-开发的现状和思考,焦虑无非源于这两点,其实根本不用放心上

“没用过”的焦虑

对于老 Android 来说,有一种“焦虑”情绪来自于“我还没用过”,因为新生的框架和技术在不断迭代,而“没有用过就跟不上时代”的情绪,会在每次技术更新迭代时被反复放大,这大概就是部分 Android 焦虑的来源。

例如现在的 Android Jetpack、协程、 Jetpack ComposeFlutter 等,每次看到这些字眼时就会莫名地出现“焦虑”,犹如当年一开始听到 DaggerRxJavaReact Native 一样。

那要怎么样缓(tao)解(bi)这种焦虑呢?这就要先理解下这些“新技术”名词不断出现地原因,我把这种“我还没用过”的焦虑理解为“扳手升级副作用”。

这里举一个有趣的例子,如下图所示是不同阶段扳手,可以看到:

  • 从 1 到 2 用户拧螺母需要准备的扳手数量减少了;
  • 从 2 到 3 扳手变得更加帅气有力,并且附带的“攻击力”也有所上升;

那问题来了:

一、既然有 2 这样便捷的扳手,那 1 这种扳手还有必要存在吗?

  • 答案是有的,因为 1 中的扳手性价比更高,在特点的场景下会更轻便。

二、那扳手 2 既然都满足大部分场景了,扳手 3 有必要存在吗?

  • 答案也是有的,因为 3 中的扳手更加帅气,同时从健壮的角度更可靠。

这里扯了这两个问题其实是想表达:正在情况下随着技术的发展,新生框架和技术是为了让开发变成更便捷,同时降低开发门槛方便后来者入坑。

所以作为老 Android 开发,在经历了开发项目需要准备“一堆扳手”的手动挡时代,如今在这个只要一个“扳手”就能干活的半自动挡时代,怎么可能会拧不动螺母?

过去的日子我们拧了无数的螺母,现在只不过要需要换个“扳手”,而这个扳手是可能是 3 ,第一次拿起来也许会“太重”,扭动的开关也不熟练,但是曾经的螺母需要“拧多深”和“卡什么体位”,这些对我们来说其实和之前没太大区别。

所以只要还是“拧螺母”,我们不应该因为担心“扳手”的品类太多而焦虑,或者还应该“庆幸”这个领域仍在健康发展。

技术的健康演进只会让它越来越容易被理解和使用,让开发的门槛变得越来越低:

  • RxJava1RxJava2 的变化;
  • Dagger 到现在官方的 Koin
  • 从 Java 的 AsyncTask 到 Kotlin 的协程;
  • ButterKnifeKTX

所以用新的"扳手"肯定比用旧的一堆"扳手"方便,实际上开发者需要维护的代码和逻辑会越来越少,这是一个社区越来越成熟的表现,进而开发的门槛也就越来越低了。

而对于新技术的无法落地到项目的焦虑,我们可以换个思路:没有条件落地,但是可以去尝试理解这个新框架或技术的本质是什么,从而缓解对未知的恐惧。

比如 Dagger 说白了就是基于注解和模板生成代码,所以如果看不懂各种"生涩"的注解,那可以直接看生成的代码,理解 Dagger 是如何用“臃肿”的代码来为我们解耦。

另外在接下来的 Android Studio 4.1 下,已经开始支持了 Dagger 类的直接跳转,我们可以轻松地在 Dagger 的关联代码间进行导航。

所以换一个“扳手”的学习成本并不高,只要你扭螺母的功底还在。“现在还没用过”也不用慌,也许等等技术还能更成熟更方便学习,何况再等等还能白嫖大佬的文章不是么?

当然这里还有一个有趣的误解:

扳手 2 升级后比扳手 1 牛逼了,所以作为使用扳手 2 的我比使用扳手 1 的牛逼?

然而真相是:牛逼的是扳手的制造者,而作为使用者,直接使用 OkHttp 的可能还不如使用 HttpClient 的开发对网络请求的理解"深刻"。

框架降低了开发的门槛,提高了代码的可维护性,但是作为使用者的我们在享受便捷的同时,要变牛逼的根本不在于用,而在于需要理解框架为什么好用!

比如 OkHttp 好用在于它优秀的拦截器设计,而 Retrofit 通过注解生成模板代码提高了开发效率,但是 Retrofit 本身网络请求部分还是需要 OkHttp等去支持。

把框架优秀的部分吃下去,那么你才会变牛逼,OkHttp 的设计就在 Flutter 中就被 Dio 框架完美复现,而 Dio 框架也成为了 Flutter 下热门的网络请求封装之一。

竞争力的焦虑

还有一种就是竞争力的焦虑,我们时不时会把自己和年轻一代的开发们做比较,明显年轻人更便宜更耐C也更有体力,这让即将成为后浪的我们产生了职业生涯的焦虑。

因为开发体系的成熟带来了的门槛的降低,开发 Android 应用的要求确实没以前高,但是“能用”和“好用”那是两个故事!

对比年轻人我们存在一些劣势,但是作为老开发在竞争力上还是有着一些其他的优势,比如:对业务的理解和落地能力

简单举个例子,在 Android 上产品提出了一个需求:

“增加一个播放功能,效果和爱奇艺差不多就行。”

多么“合理”的需求,这时候“吃过盐”的老 Android 相信都会“心头一颤“,在心里默默“问候”产品的同时,开始思考开发前需要讨论的“坑位”:

  • 视频是否需要规定好编码格式,比如 H264/AACMPEG/MP3
  • 封装协议用 MP4 还是 M3U8
  • 码率和帧率是否需要适应网络?
  • 用软解码 FFMPEG 还是 MediaCodec
  • 视频是否需要支持 AES128 加密?
  • 本地是否要增加离线缓存?
  • 是否要支持断线重连?
  • 后续是否要支持直播和广告的拓展?

虽说不考虑以上部分写的代码也能用,也有一些开源项目提供“保姆式”支持,但是当你遇到坑后还能不能继续推进项目,并且如何在项目周期内合理避坑,这些都很考验一个开发的综合能力。

这个综合能力自然不只包括代码,而是需要时间慢慢去养成和踩坑来得到。

是的,在我的角度而言开发不只是写代码,我们的竞争力也不只在于代码,比如业务落地的能力就是长期的经验累积而成,比如:

  • 一个工单的发起到结束流程会经历什么;
  • 一个购物订单从发起到售后的流转需要考虑什么;
  • 一个订房系统在并发时需要关注的什么;
  • 一个直播系统需要怎么样的技术栈去支撑;
小福利:

在当下这个碎片化信息环境的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了

很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘

如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。

2021大厂最新Android面试真题解析

Android大厂面试真题解析

各个模块学习视频:如数据结构与算法

算法与数据结构资料图

只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
一线互联网架构师

这份体系学习笔记,适应人群:**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!点赞+评论即可获得!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

bs.csdn.net/topics/618156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值