Android 开发,别只钻技术一亩三分地,也该学点“广度”了

16 阅读7分钟

前阵子在抖音上看到一个关于AI的分享,里面1个案例让我这个做了好几年Android开发的程序员挺有感触的。它让我开始认真想:在现在技术变化这么快的环境下,我到底该怎么平衡广度和深度。

开篇是这样说的:把一件事情做到极致,你就赢了。这句话看着挺正能量的,实际并不是的。

为什么这句话不完全对?

  • 时代变了,单一极致越来越难“赢”

    以前信息和机会相对稀缺,专注一件事做到顶尖可能就够了。但现在AI工具在接管大量重复性、执行性工作,

  • 资源是有限的,极致专注容易导致“资源错配”

    所有时间、精力、认知都砸到一件事情上,看似高效,但忽略了外部变化和机会成本。世界在快速迭代,技术、行业、用户需求都在变。如果你死磕一个方向做到“极致”,但这个方向本身在萎缩、被颠覆,或者竞争已经红海化,那极致努力也可能变成无效内耗。

  • 极致往往建立在“广度脚手架”之上,没有广度,深度也上不去

    真正的高手很少是“只做一件事做到极致”。他们先有足够的广度(跨领域知识、不同视角、相邻技能),才能在主方向上挖得深、挖得稳。

金融领域的实验:垂直特训为什么会失败?(AI总结的)

有个研究团队想做一个专攻金融的AI模型。他们用了很多金融数据——股票分析、财报解读、风险评估之类的——对一个通用大模型做继续预训练和微调,本来是希望它在金融任务上能更专业。

结果测试下来却不太理想。在标准的金融基准测试里(包括问答、情感分析、预测这些),这个专门训过的模型不但没比通用模型强,反而整体成绩掉了下来,还出现了明显的灾难性遗忘

灾难性遗忘说白了,就是模型学新东西的时候,把以前通过大量通用数据积累起来的基础能力慢慢弱化了。比如原来逻辑推理、数学计算、处理各种场景的能力还不错,专注金融数据后,这些通用部分反而变差了,最后综合表现就不行了。

原因主要是模型的参数容量就那么多。当它把很多“权重”都调去适应金融数据时,原来通用知识占的位置就被挤掉了。就像我们人如果只拼命背某一门课的题,很容易把其他科目的基础忘掉。

类似的情况在几篇论文里也被验证过。比如Luo et al.(2023)那篇关于大语言模型持续微调中灾难性遗忘的实证研究,发现模型在金融这类知识密集领域微调后,领域知识、推理能力和阅读理解都会明显退化。即使用了LoRA这种参数高效的方法,单纯垂直训练还是容易让模型的通用能力下降。其他医疗、科学领域的微调实验也差不多:特定任务可能有点提升,但整体稳健性往往受损。(AI总结的)

这个实验让我觉得,单纯一头扎进“窄而深”的垂直训练,不见得总是最好的路子。有宽广知识底子的通用模型,在具体领域反而更靠得住。

认知脚手架效应:广度如何支撑深度 (AI总结的)

分享里还提到一个挺有意思的现象,他们管它叫认知脚手架效应(简单说就是认知支架)。

研究发现,如果训练模型的时候不光喂金融数据,还额外加进去一些代码和数学相关的内容,模型在其他完全不相关的领域表现居然明显变好了。这些代码和数学跟金融任务没直接关系,却像搭了个“脚手架”,帮模型建起了更强的底层能力。

拿学骑自行车打比方:刚开始不会直接让你上大马路,而是先用辅助轮或者扶着墙练平衡和协调。这些辅助就是临时脚手架。基础稳了以后再撤掉,你就能骑得又稳又顺。

在AI训练里,代码数据帮模型加强逻辑思考、一步步拆解问题和结构化表达;数学数据则提升抽象思考、量化计算和因果分析。这些通用东西成了结实的支架,让模型处理金融或其他复杂任务时更有条理,也不容易出错。同时还能减轻前面说的灾难性遗忘,学新东西的同时把老本事留住。

这让我意识到:广度学习不是瞎学一堆没用的东西,而是给深度打地基的。如果缺了这些支架,单纯往一个方向猛挖,很容易卡住或者能力退步。

Android开发者的日常:只钻Android容易触顶

我自己做Android开发,平时主要就是在Jetpack、Compose、Kotlin协程、性能优化、设备兼容这些客户端技术上打转。这些东西肯定得下功夫,但如果长期只盯着Android客户端这一块,视野和解决问题的能力慢慢就会受限。

实际项目里,Android App从来不是孤立的。它要和服务端接口配合,要处理数据怎么流转,要考虑用户行为,还要保证跨平台体验。只埋头做客户端的话,我经常碰到这些情况:需求一变,就很难快速判断接口设计合不合理;性能出问题时,很难一下找到根源(可能是网络、数据结构或者后端那边引起的);评估方案时,也缺足够的信息去全面比较不同做法的长期影响。这样一来,方案就容易只顾眼前,很难应对复杂的业务或者大规模应用。

现在移动开发环境变化更快。Flutter、Kotlin Multiplatform这些跨平台框架越来越普及,很多项目都要求在Android和iOS上保持一致体验。AI辅助编码工具也到处都在用,单纯写客户端页面的重复工作越来越容易被替代。如果只懂Android客户端,在做系统级设计或者跨团队合作时,就容易跟不上节奏。

尤其是UI/UE这块,现在用户对页面美观度和交互要求很高。流畅的动画、自然的过渡、个性化适配(Material You风格)已经成了基本期待。只会基础Compose组件,很难做出真正打动用户的体验。行业里,纯客户端开发者的岗位竞争也越来越激烈,很多机会开始偏向能跨端、懂整体流程的人。

总结

我自己最近也越来越倾向于去学习产品设计、交互设计和UI设计。平常还会看一些历史、文学、人物传记。这些东西对写代码本身提升不大,但对我编程思想的帮助却特别大。它让我思考问题时更有格局,不再只盯着技术实现,而是会去想“这个功能对用户到底意味着什么”“这个交互是否自然舒服”。 最重要的是,这些广度学习让我少了一些对AI的焦虑,多了一些内心的平静。技术工具再厉害,也代替不了人的思考、审美和对人性的理解。当我能把技术跟设计思维、人文视角结合起来时,做出来的东西反而更有温度,也更有底气。