志在指尖
用双手敲打未来

聊聊 Android 开发的现状和考虑

最近和一些跳槽的“老Androd”闲(mo)聊(yu)后颇有感触,从事Android开发这么多年,咱们都开端重新考虑未来的开展,或多或少都在为工作生涯的“瓶颈”而烦恼,都有一种“待不住”的心情在心头徘徊。
回想这六年里Android开发的开展历程,现现在的Android现已具有了老练的开发系统,技能结构也是阅历了一代一代的更新:
HttpClient、Volley、OkHttp、Retrofit;
ImageLoader、Picasso、Fresco、Glide;
OrmLite、LitePal、GreenDao、Realm、Room;
除了了解的网络、图片和数据库“三大件”外,还有像xUtils、EventBus、Dagger、RxJava、MultiType等等,它们关于老Android来说,能够说是贯穿了整个“青春期”的回想。
1
从一开端的MVC到MVP再到MVVM乃至官方供给的AAC架构,Android的技能栈一直在“改写”,而跟着Kotlin的扶正还有AndroidJetpack的提出,新一代的完善开发系统也给老开发们带来了一些额定的“烦躁”。
“AS2.3又不是不能用?!”
”项目还要持续兼容4.4版本?!!”
“RxJava都还没用上就开端吹协程?!!!”
由于旧项目的保护或许工作环境的影响,许多时分其实没有新结构落地的条件,乃至于Flutter的呈现都会被贩卖一波焦虑。
那就让咱们聊聊这种焦虑或许不安。定心,后边没有“防不胜防”!
“没用过”的焦虑
关于老Android来说,有一种“焦虑”心情来自于“我还没用过”,由于重生的结构和技能在不断迭代,而“没有用过就跟不上年代”的心情,会在每次技能更新迭代时被反复放大,这大约便是部分Android焦虑的来历。
例如现在的AndroidJetpack、协程、JetpackCompose、Flutter等,每次看到这些字眼时就会莫名地呈现“焦虑”,犹如当年一开端听到Dagger、RxJava、ReactNative一样。
那要怎样样缓(tao)解(bi)这种焦虑呢?这就要先了解下这些“新技能”名词不断呈现地原因,我把这种“我还没用过”的焦虑了解为“扳手升级副作用”。
这儿举一个风趣的比方,如下图所示是不同阶段扳手,能够看到:
从1到2用户拧螺母需求预备的扳手数量减少了;
从2到3扳手变得愈加帅气有力,并且附带的“攻击力”也有所上升;Android
2_meitu_1
那问题来了:
一、已然有2这样快捷的扳手,那1这种扳手还有必要存在吗?
答案是有的,由于1中的扳手性价比更高,在特色的场景下会更简便。
二、那扳手2已然都满意大部分场景了,扳手3有必要存在吗?
答案也是有的,由于3中的扳手愈加帅气,同时从健壮的视点更牢靠。
这儿扯了这两个问题其实是想表达:正在情况下跟着技能的开展,重生结构和技能是为了让开发变成更快捷,同时下降开发门槛便利后来者入坑。
所以作为老Android开发,在阅历了开发项目需求预备“一堆扳手”的手动挡年代,现在在这个只需一个“扳手”就能干活的半自动挡年代,怎样或许会拧不动螺母?
过去的日子咱们拧了无数的螺母,现在只不过要需求换个“扳手”,而这个扳手是或许是3,榜首次拿起来或许会“太重”,扭动的开关也不熟练,可是从前的螺母需求“拧多深”和“卡什么体位”,这些对咱们来说其实和之前没太大差异。
所以只需还是“拧螺母”,咱们不应该由于担心“扳手”的品类太多而焦虑,或许还应该“庆幸”这个范畴仍在健康开展。
3
技能的健康演进只会让它越来越容易被了解和运用,让开发的门槛变得越来越低:
从RxJava1到RxJava2的改变;
从Dagger到现在官方的Koin;
从Java的AsyncTask到Kotlin的协程;
从ButterKnife到KTX;
所以用新的”扳手”必定比用旧的一堆”扳手”便利,实际上开发者需求保护的代码和逻辑会越来越少,这是一个社区越来越老练的体现,然后开发的门槛也就越来越低了。
而关于新技能的无法落地到项目的焦虑,咱们能够换个思路:没有条件落地,可是能够去尝试了解这个新结构或技能的本质是什么,然后缓解对未知的恐惧。
比方Dagger说白了便是基于注解和模板生成代码,所以如果看不懂各种”生涩”的注解,那能够直接看生成的代码,了解Dagger是如何用“臃肿”的代码来为咱们解耦。
另外在接下来的AndroidStudio4.1下,现已开端支撑了Dagger类的直接跳转,咱们能够轻松地在Dagger的关联代码间进行导航。
4
所以换一个“扳手”的学习本钱并不高,只需你扭螺母的功底还在。“现在还没用过”也不必慌,或许等等技能还能更老练更便利学习,何况再等等还能白嫖大佬的文章不是么?
当然这儿还有一个风趣的误解:
扳手2升级后比扳手1牛逼了,所以作为运用扳手2的我比运用扳手1的牛逼?
可是本相是:牛逼的是扳手的制造者,而作为运用者,直接运用OkHttp的或许还不如运用HttpClient的开发对网络恳求的了解”深入”。
结构下降了开发的门槛,提高了代码的可保护性,可是作为运用者的咱们在享受快捷的同时,要变牛逼的底子不在于用,而在于需求了解结构为什么好用!
比方OkHttp好用在于它优秀的拦截器规划,而Retrofit通过注解生成模板代码提高了开发效率,可是Retrofit自身网络恳求部分还是需求OkHttp等去支撑。
把结构优秀的部分吃下去,那么你才会变牛逼,OkHttp的规划就在Flutter中就被Dio结构完美复现,而Dio结构也成为了Flutter下抢手的网络恳求封装之一。
竞争力的焦虑
还有一种便是竞争力的焦虑,咱们时不时会把自己和年轻一代的开发们做比较,明显年轻人更便宜更耐C也更有膂力,这让行将成为后浪的咱们产生了工作生涯的焦虑。
由于开发系统的老练带来了的门槛的下降,开发Android应用的要求确实没曾经高,可是“能用”和“好用”那是两个故事!
对比年轻人咱们存在一些劣势,可是作为老开发在竞争力上还是有着一些其他的优势,比方:对事务的了解和落地才能。
简略举个比方,在Android上产品提出了一个需求:
“添加一个播映功用,效果和爱奇艺差不多就行。”
多么“合理”的需求,这时分“吃过盐”的老Android相信都会“心头一颤“,在心里默默“问候”产品的同时,开端考虑开发前需求评论的“坑位”:
视频是否需求规定好编码格式,比方H264/AAC、MPEG/MP3?
封装协议用MP4还是M3U8?
码率和帧率是否需求适应网络?
用软解码FFMPEG还是MediaCodec?
视频是否需求支撑AES128加密?
本地是否要添加离线缓存?
是否要支撑断线重连?
后续是否要支撑直播和广告的拓宽?
虽然不考虑以上部分写的代码也能用,也有一些开源项目供给“保姆式”支撑,可是当你遇到坑后还能不能持续推动项目,并且如何在项目周期内合理避坑,这些都很考验一个开发的归纳才能。
这个归纳才能自然不只包括代码,而是需求时刻慢慢去养成和踩坑来得到。
是的,在我的视点而言开发不仅仅写代码,咱们的竞争力也不只在于代码,比方事务落地的才能便是长期的经验累积而成,比方:
一个工单的发起到结束流程会阅历什么;
一个购物订单从发起到售后的流通需求考虑什么;
一个订房系统在并发时需求关注的什么;
一个直播系统需求怎样样的技能栈去支撑;
这些事务在具体场景下需求面临哪些坑?为什么这个事务要这么写?乃至是你在知道这样规划是不合理的情况下,要如何组织代码去避免后期频繁修正带来的负担。
究竟好的代码千百万,坏的代码都是在事务高压下多次无情的修正糟蹋出来。
瞎扯了这么多,其实便是想表达:作为普通人的咱们,一般情况下技能并不会成为咱们的壁垒,由于现在的IT行业许多岗位把脑力密集型变成了膂力密集型,996和007需求膂力,更需求圆滑的心态去站稳脚跟,年轻气盛的是少年,而行业经验能让咱们更好地保存膂力去面临职场的“如火如荼”。
当然,如果工作几年来都是深水摸鱼,那也无fuck可说了~
所以我也一直有个主张:在条件允许的情况下,尽量挑选一个行业,不要今年搞教育、下一年干餐饮、后年跳物联网这样跨界。
常年的“跨界”或许到哪都仅仅“大头兵”,一个行业内的人脉是资源,咱们或许不拿手外交,可是咱们一直说xxx圈子很小,或许咱们才能不是特别出众,可是干的久了认识的圈内人也就多了。
到了35岁之后,10年的电商行业经验或许会比10年的移动开发经验更有用一点点。
当然这归于站着说要不腰疼,条件允许是指经济压力不大的情况下,不管什么狗屁理论,活下去便是榜首要素。
最后
回归主题,从2018Android提出的Jetpack看,到了2020年的现在改变其实也不大,也就多了像ViewPager2、CameraX、Motionlayout等的更新(最近还有Hilt、Paging3、AppStartup),并且在Android10和Android11开端侧重隐私和ScopedStorage分区等,这大约也是Android开发在趋向老练和安稳的体现。
5
所以Android现在现已具有十分老练的开发系统,老练也说明晰这个系统的带来的开发盈利消退了,说通俗点便是能够跳槽岗位少了。
而作为非技能大佬的我,就会挑选一些其他的东西来尝试突破,比方前端、RN、Flutter等其他技能范畴做尝试。
当然每个人的理念和挑选或许不同,或许我的方式就并不适合你,这儿仅仅想表达一下:当你觉得自己处于“瓶颈”而焦虑时,或许能够挑选从其他方向去折腾下。

未经允许不得转载:IT技术网站 » 聊聊 Android 开发的现状和考虑
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载