转自作者:恋猫de小郭
前几天和朋友聊天,其中一个话题很有意思,那就是「没用过」和「不知道」是他日常焦虑症的来源,因为他在一家传统企业做开发,技术栈一直很保守,很多框架代码可能一两年都不会升级改动,许多新东西都没用过,所以每次看到别人聊新技术的时候,都会觉得很焦虑,想“了解”却又“用不上”,想“上进”却又“学不进”,最后干脆选择“眼不见为净” 。
其实我过去也有类似的经历,每次接触到“新东西”时,内心潜移默化就会开始着急,仿佛再不跟进就要“挨打”,而“新东西”又层出不穷,结果就是东拼一脚西凑一下,最终像个无头苍蝇一样四处碰壁,不得而终。
为什么你懂这么多?相信这种情况对于「老 Androider 」多多少少应该都经历过,毕竟十年前的 Android 开发,「技术选型」可以说是日新月异,「你用过xxxx吗」和「你还在用xxxx」可以说是圈内话题的主旋律,举亿个例子:
你还在用 Eclipse ,现在都用 Android Studio 了
你还在本地 jar 包,现在都用 Gradle 远程依赖了
xUtils 和 Afinal 听说过没?开发神器啊
你怎么还在用 ImageLoader ,知道 Picasso 吗? 用过 Fresco 没有?现在都推荐 Glide 了
你知道 GreenDao 吗?现在谷歌都推荐 Room 了,你用过 Realm 吗?
你还在用 ButterKnife?现在都用 DataBinding、ViewBinding 了
你怎么还用 Apache HttpClient,试试 Volley 呗?
现在都是 OKhttp 了,那你知道 Retrofit 吗?
你用过 gPRC 和 GraphQL 吗?
你还在用 MVC ,你知道 MVP 吗?我都用 MVVM、MVI 了
你用过 dynamic-load-apk、VirtualAPK、DroidPlugin、RePlugin、tinker 吗?
你知道 Dagger 吗?现在都 Dagger2 了
你还在用 Dagger ? 现在已经是 Hilt 了
你用过 EventBus 吗?
你知道 LeakCanary 吗?听过 BlockCanary 吗?
你还在用 Java 的 Dagger 啊,Kotlin 都用 Koin 了
你知道 Rxjava 吗?已经 Rxjava2 了
你用过 Couroutines 和 Flow 吗?
你知道 LiveData 吗?
用过 jadx 和 apktool 吗?
怎么还在用 Java ?Kotlin 都烂大街了
你知道 Jetpack 吗?用过 Lifecycle、Navigation、CameraX、Paging、Glance、Slice、Startup、Viewpager2、DateStore、WorkManager 吗?
你做过小程序吗?uni-app 听过吗?React Native 知道吗?Flutter 、KMP、Compose 了解不?
鸿蒙 Next 你适配了没?ArkTS 和 ArkUI 学了没?
····
有没有很熟悉的既视感?这还只是 Android 圈子的一角,如果你还做前端:那还有:
就光说 React 更新带来的 JSX、Portals、Hook、Fiber、Concurrent、Suspense、Server Components、Transitions 就够一直玩下去····
但是在焦虑追新的同时,其实这里面一直有一个问题:会用这些框架,真的就是技术吗 ?你追的究竟是什么 ?
回答这个问题,刚好可以用到最近看到的一张图,因为我们大概率不是一个软件工程师:
高情商:蓝领科技者
低情商:工厂螺丝工
我们的工作就是使用别人「制作好的工具」,所以我们热衷追逐「新工具」,但是,大多数时候,我们又不了解工具是如何工作的,我们只是一直在“反复”的学会如何使用它们,并且焦虑于,我们还没全都学会。
我认为「拧螺丝」确实是一个很不错的比喻,各类框架就像是适配不同型号的螺丝刀,而市面上的螺丝头形态各异,我们就是不停的在学会「如何把某款型号的螺丝刀插入到对应螺丝头」,然后开始心满意足的拧一颗「新型号螺丝」。
拧熟了,大概还能解锁了多种姿势,拧起来更快更省力,不同型号的螺丝刀,对准的难度和发力的安全范围可能也会有些不同,不过没关系,多拧几次就熟悉了。
所以,拧螺丝是门槛吗?大概率不是的,因为学会拿螺丝刀就行。那问题又来了,既然都是拧螺丝,换个姿势,换个型号,你就不会拧了吗?不应该啊对吧 ?
回归到各式各样的框架上,有文档和有社区的情况下,换种语言,换种框架,难道就拧不动了?这又扯出另外一个问题:你的能力依赖于框架,是否又能超脱出框架?
所以我们在「追新」的时候追的是什么?是 1 - 2 - 3 这样的变化:
从 1 到 2 用户拧螺母需要准备的扳手数量减少了
从 2 到 3 扳手变得更加帅气有力,并且附带的“力道”也有所上升
那么开发的鄙视链就来了:
因为我用的是自动挡扳手 2 ,所以我看不起手动挡的扳手 1
因为我用的是全新工艺的扳手 3 ,所以比老工艺的扳手 2 牛X
我想着这大概率是「追新」带来的「错觉」,牛X的是扳手的制造者,而作为使用者,我们都是踩着别人的肩膀混口饭吃的工人。
回过头来看,在这种情况下,随着技术的发展,新生框架和技术会让开发变成更便捷,同时降低开发的门槛,从而方便后来者入坑,所以本质上就像开车,开「自动档」并没有比「手动挡」牛X多少 。
就算是自动挡,也分很多换挡方式,那么你会用「怀挡」,真的就比用「直排挡」在技术上 NB 吗?难道比的不应该是,谁对「变速箱」的理解更深刻?尽管大部人其实都不会懂得如何造车,但在用车上,大家真正的差距在于:
车坏了你会不会修?
如何调节提升车的动力和操控
那么回过头来,所以作为老 Android 开发,在经历了开发项目需要准备“一堆扳手”的手动挡时代,如今在这个只要一个“扳手”就能干活的自动挡时代,怎么可能会拧不动螺母?
不是为了读源码而读源码,而是通过源码我知道了 CVT 和双离合的区别,知道了它们的实现原理和优劣,那么挡把是怀挡还是旋钮重要吗?
在不理解运作的原理,没有基础知识铺垫,当任务变成修理一个发动机时,当任务变成提高框架的性能瓶颈时,就会无从下手,就会回归到前面所说的:You are not a software engineer 。
我们不可能全知全能,也不可能认识所有螺丝头,也没机会熟练操控所有档位型号,但是我们的目的也不是为了认识所有汽车档把,我们的目的只是为了开车,然后进一步能力就是修车和调教,这对于大多数人来说,就很难能可贵了。
而回到我们在焦虑「没用过」和「不知道」的时候,更多还是对于自身能力的不自信,就像是我们的尊严只能苟存于框架之下,多年的工作经验,只能寄希望于 XXX 不要凉。
就像一些多年耕耘的老开发会告诉你,许多上层开发者「跟进」的基本都是:“ keeping up with all the bullshit that Google / Android dev community throws at you” ,远离所谓的 “architecture influencers” ,你需要的是自己的思维方式和选择能力,而不是臣服在框架之下,被社区推来推去:
当前,其实这也和当前很多工作岗位的设定有关系,公司当前只是需要一个螺丝钉,公司不需要你理解螺丝刀为什么十字和一字的区别,你拧就是了,标签化和细分化确实更好管理,而有人也愿意带着标签,这无可厚非。
<顺便提一句,技术大厂,前后端测试缺人,base多地,年前要求低一些,待遇等给的还可以,感兴趣可以试试https://jinshuju.net/f/o38ijj>
而大佬们就不同,在和社区大佬的沟通中,我发现基本上他们的涉猎范围都很广泛,而且都很有深度,或者说:语言和框架都只是为了解决问题的工具。
好了,其实道理大家都懂,只是如何知行合一,那就见仁见智了,许多没写这种没营养的内容,毕竟纸上得来总觉浅,真要总结,大概就是:人和人体质不同不能一概而论。 |