人物采访 / T SALON

编辑内容

Yuu 谈领英移动端工作:远程协作、工程质量与职业选择

整理 T Chat 第 7 期约两小时的对谈,覆盖 Yuu 在北京和领英的经历、远程与跨时区协作、方案评审和自动化测试、客户端技术、用户增长、职业选择、学习方法与内容创作。

T Chat 第 7 期 Yuu 分享领英移动端工作与个人经历的访谈封面
T Chat 第 7 期 Yuu 分享领英移动端工作与个人经历的访谈封面

本期视频发布于 2022 年。文中的技术状态、个人经历与观点均为当时情况。

第 7 期 T Chat 没有分成技术演讲和正式采访,而是一场持续约 130 分钟的交流。Yuu 从自己在北京的生活和进入领英的经历说起,与主持人及观众讨论远程协作、工程质量、客户端技术、求职与学习,最后聊到游戏和内容创作。技术工作与个人生活在这场对话里始终交织在一起。

从来到北京,到重新安排自己的时间

城市体验与职业经历连在一起

Yuu 在南方长大,来北京后先在百度工作,后来于 2019 年加入领英。他回忆,最初生活和工作主要集中在公司附近,换工作、搬到城里之后,对城市的体验才变得更具体。气候、通勤、日常服务和饮食,都是他评价生活环境的一部分。

这一段带着很多轻松的个人感受,并不是城市优劣比较。它为后面的话题提供了背景:职业选择会改变一个人在哪生活、怎样使用时间,以及工作以外还有多少空间。原片 00:54–06:09

选择外企,最初是想留出学习和生活的空间

加入领英之前,他曾考虑到日本工作,也为语言考试做过准备。当时感受到的主要问题,是下班后剩余时间太少,难以持续学习。寻找外企机会,是希望调整这种状态;最后,他在领英产品中找到了领英的工作机会。

主持人补充,选择外企也可能与城市、家庭、国际化经历或未来迁移有关。不同人的目标不一样,不能只靠“外企”这个标签判断一份工作是否适合自己。原片 06:09–09:34

远程办公带来的改变,不止少坐一段地铁

Yuu 介绍,自疫情以来,团队经历过远程办公和混合办公,安排随当时情况调整。对他影响最明显的是通勤时间减少:原本固定消耗在路上的时间,可以用于工作,也可以用于其他事情。

在家办公也需要桌椅、显示器等条件,他谈到公司当时提供的家庭办公支持、福利和额外休假。比具体福利金额更值得理解的是其背后的工作方式:团队是否愿意为员工持续工作提供条件,是否给出恢复精力和专注工作的空间。录播中的数额与假期不能作为当前入职待遇承诺。原片 10:03–14:19

企业文化会影响人怎样投入工作

他认为管理者需要看到员工的情绪和感受。一个项目投入许多时间,最后没有上线或很快停止,带来的失落不会因为它属于工作就自动消失。讨论需求和组织项目时,也应考虑这种投入对人的影响。

这部分包含他对不同工作环境的个人评价。更普遍的问题是:团队怎样解释决策、怎样对待无效投入,以及是否把休息和恢复视为正常需要。它与他最初希望找回个人时间的选择相呼应。原片 14:19–17:30

跨时区协作,既是时间问题,也是沟通问题

日历可以换算时区,不能消除可用时间的差异

跨国工作首先面临的是共同工作时间有限。与美国同事开会,往往需要一方早起、另一方在下班前参与;夏令时还会影响安排。主持人也分享过误读会议时区、错过预约的经历。

他们建议利用日历明确会议所在时区,避免只靠肉眼换算。但工具只能减少出错,无法创造双方都方便的时间。技术分享、固定沟通和紧急排障需要不同安排,跨时区协作的成本也应计入项目计划。原片 17:30–20:51

听懂进度同步,与一起调试问题,是不同要求

Yuu 区分了两类交流:说明自己完成什么的同步会议,以及必须持续互动、共同定位问题的讨论。后者对语言理解和即时表达的要求更高,口音、电话音质和专业背景都可能增加难度。

遇到确实无法沟通的情况,他会请熟悉双方表达方式的同事或负责人协助,也有过把电话交流改为邮件的经历。主持人补充了自己在国际化业务中协调沟通的经验。这里体现的是如何让信息传递继续进行,而不是要求每个人一开始就能流畅应对所有场景。原片 20:51–28:12、52:08–53:08

客户端同样可能需要处理跨国线上问题

他所在的用户增长场景涉及注册、登录、验证码和反作弊。虽然入口在客户端,背后却连接不同地区的系统与团队。因此,客户端工程师也可能需要值班或参与跨时区排障,不能仅因岗位名称就假设工作只发生在本地界面里。

语言和协作能力由此成为工程能力的一部分。Yuu 承认自己最初也会紧张,但如果始终回避实际交流,就很难积累应对这些场景的经验。原片 26:44–28:12、52:08–53:42

团队工程实践:先讨论方案,再持续验证

RFC 把技术选择变成可以共同讨论的材料

Yuu 回顾,加入团队后的几年间,许多原本尚不完善的流程逐渐建立。开始一个项目时,先写 RFC,说明想做什么、有哪些技术方案、各自的优缺点,再让同事提出意见。把重要问题讨论清楚之后,才进入实现和资源安排。

这套流程的作用是让经验和疑问提前出现。它也说明团队制度并非一开始就固定不变:发现不合理之处,可以提出问题,推动负责人和协作者逐步改善。原片 28:45–30:42

代码评审看实质贡献,测试进入提交过程

按他的介绍,团队不仅要求代码经过评审,也关注评审的质量。大量不加讨论就通过的记录,并不能充分说明一个人帮助了团队。提交者需要回应意见,自动化测试与检查也纳入 CI 流程。

测试并非只有一种形式。他谈到单元、布局和场景等不同层次的验证,并区分整体覆盖目标与某个可测试模块的覆盖程度。对话里的数字属于当时团队口径,不能跨项目直接当作统一质量标准。原片 30:42–33:06

多套架构同时迁移,会增加维护难度

新架构进入成熟应用,通常需要先在局部尝试,通过实验开关逐步扩大范围。Yuu 提到,团队同时进行过多项较大的技术迁移,不同模块可能使用不同架构或基础库。

这让工程师接触到更多方案,也增加了理解、调试和维护的成本。技术演进的价值与迁移期间的复杂度,需要放在一起看;有很多新技术在推进,并不自动意味着业务开发会更轻松。原片 33:06–35:34

工作难点往往是找到值得做的问题

谈到最困难的工作,他没有先讲某个复杂算法,而是谈识别价值。一个任务明确之后,能否实现、需要多久,通常可以逐步分析;更难的是发现哪个问题值得投入,尤其当岗位要求自己主动定义项目时。

人与人之间的协作也是难点。跨团队依赖长、对方响应不及时,需要在推进问题和维护合作关系之间找到方法,不能把所有困难都简化为请更高层施压。原片 36:43–39:16

做移动端,界面代码只是交付的一部分

从可测试性反过来改进代码

在当时的日常工作中,Yuu 主要使用 Swift、UIKit 和内部框架。新功能写完界面之后,还要补充测试、文档、沟通和项目推进,关注缺陷、线上数据与后续维护。

他特别提到,开始写自动化测试时,开发者常会发现原来的实现难以测试,进而调整代码结构。测试因此不仅是写完之后的检查,也能促使职责和依赖变得更清楚。对于成长瓶颈,他建议观察自己真正欠缺的是技术知识,还是解释问题、组织项目和协调协作的能力。原片 53:42–56:37

自动化测试的讨论,最终回到发布目标与风险

主持人与 Yuu 围绕业务变化快、测试成本和人工 QA 展开了较长讨论。主持人指出,快速变化的业务会增加维护测试的难度;Yuu 则更强调团队是否愿意投入、是否有人推动,以及是否建立了相应工具和能力。

Yuu 描述的目标,是让主分支尽可能保持随时可发布的状态,减少发布过程对固定人工环节的依赖。他也说明,团队会区分核心功能与影响有限的细节问题,对风险作取舍。

这段讨论不能简化成所有产品都应取消人工测试。两人也谈到不同业务的风险和要求不同。对读者更有用的是明确自己的发布目标、需要保证的关键行为,以及自动化能够可靠覆盖哪些环节,再决定流程怎样安排。原片 59:02–65:13

技术迁移要结合已有工程来看

他介绍了当时接触的 GraphQL、Swift 迁移、内部组件与新应用开发,也谈到 SwiftUI 在局部场景中的使用。他对 GraphQL 保留了具体使用中的疑问,没有把新技术当成天然更好的答案。

成熟应用接入新的重要框架,需要处理已有系统和团队工作方式。这与前面多套架构并行的讨论一致:评价一个技术方案,既要看理想接口,也要看真实迁移和维护的工作量。原片 65:13–69:27

原生与跨端各有条件,原生知识仍然有用

谈到 React Native 与 Flutter,他认为需要具体分析使用场景。团队曾在少量业务中使用跨端方案,个人项目中他也尝试过 Flutter Web;这些经历没有让他得出所有应用都应全面转向同一路线的结论。

对于客户端开发者,他仍建议理解原生运行机制。即使上层使用跨端框架,遇到崩溃、线程或平台交互问题时,也可能需要回到底层分析。他在录播中对个别产品体验的评价,属于个人观察,不能替代框架性能测评。原片 56:37–59:02、69:27–72:16

用户增长会把界面、营销与反作弊连接起来

Yuu 把用户增长概括为拉新与留存,再举出具体工程问题:一次面向校园的推广,可能带来同一网络出口下的大量注册,被反作弊系统识别为异常。推广已经发生,注册却受阻,需要多个团队一起处理。

因此,增长工程并不只是增加一个活动入口。验证码、注册链路、系统规则、跨国沟通与产品价值都会影响结果。这也是他关注当年 WWDC 中 Private Access Tokens 的原因:他希望减少正常用户被验证码阻挡的情况。录播表达的是对这种机制的兴趣,不意味着团队当时已经完成接入。原片 72:16–75:37

调试、模拟依赖与开发工具

现场关于编译慢、调试和网络 Mock 的提问,让话题再次回到工程基础。他建议先理清业务流程和修改范围,结合测试验证行为;对于难以完整在本地运行的系统,隔离外部依赖、构造可控输入尤其重要。

他也说明内部网络模拟方案的具体细节并不完全掌握,因此这部分不能作为完整实现教程。随后,他表达了对开发工具稳定性,以及在 Mac 上开展机器学习训练体验的期待。这些属于当时个人使用中的痛点,不能直接写成今天工具能力的限制。原片 75:37–80:15

个人项目的收益来自完整做完和持续维护

被问到一个人写项目怎样提升时,他建议实际完成、部署和维护一个项目,记录其中遇到的问题。长期使用会暴露演示阶段看不到的痛点,也会积累自己的基础代码和判断。

他谈到使用 Swift 服务端的经历:熟悉的语言让自己较容易开始,但已有积累也会形成路径依赖。框架的标准支持、侵入程度和维护状态都要考察。他在某次历史迁移中遇到的 HTTP Range 问题,是个人经历,不能未经核查就当成某个框架当前仍有的缺陷。原片 80:15–85:25

求职、成长与职业选择

面试准备不等于工程能力的全部

录播里有许多招聘提问,Yuu 先说明当时国内客户端岗位的名额情况,再谈自己的面试经验。他认为算法训练是需要认真准备的一部分,不能因为日常工作不常使用某类题,就假设面试也不会考查。

对于练习方式,他建议把重点放在学习已有解法和建立熟悉度上:遇到不会的问题,阅读、理解并实现标准思路,再尝试独立完成。这里讨论的是学习阶段,而不是在实际面试中照抄答案。具体题型与面试官偏好也不能作为当前招聘标准。原片 40:17–48:37、49:39–50:37

长期价值不由一个岗位标签决定

面对能否长期做 iOS、全栈与专精怎样选择等问题,他举了同事持续从事客户端基础能力建设的例子,也提到有人能够独立完成多个端的需求。关键仍是能否解决有价值的问题,形成可以持续使用的能力。

当观众将客户端与后端、算法岗位比较时,他强调公司业务和文化会影响机会,同时个人兴趣与特长也需要纳入选择。只因为一个方向看起来收入更高,就勉强自己进入长期不喜欢的工作,未必是适合个人的决定。原片 45:28–47:32、85:25–88:31

行业风险不能全部归结为个人努力

关于年龄、裁员与市场变化,他没有给出某个年龄一定会发生什么的结论。一方面,可以通过项目与责任积累丰富经历,提高下一次选择的余地;另一方面,也需要承认宏观环境会影响个人,努力无法保证避开所有风险。

两人在对谈中多次回到实际处境:选择工作时要结合生活压力和可承担的等待时间,而不是套用统一答案。外企、大厂或任何一种组织形式,都不能被当作绝对稳定的保证。原片 44:28–45:28、88:31–91:20、109:09–110:17、118:31–119:42

新技术浪潮,需要区分技术判断、职业机会与投资

现场还讨论了 NFT、Web3 与区块链。Yuu 对大型应用落地和去中心化叙事持怀疑态度;主持人则认为很难用当前视角确定长期结果,并把技术岗位机会与资产投资分开讨论。两人也提及自己的投资损失。

这一段呈现的是 2022 年两位参与者的不同看法。录播中的市场薪资、资产价格和技术推断都不宜直接作为今天的决策依据;本文也不把其中简化的网络机制类比当成已验证的技术结论。它与整场职业讨论的联系,是怎样在不确定性里识别自己究竟想参与什么。原片 91:20–99:30

IC 或管理,不必过早变成固定答案

Yuu 将通常的职业路径概括为个人贡献者与管理者,但他更在意当下能否找到愿意持续做的事情。他当时更偏向技术路线,也承认自己在沟通和项目管理上仍有需要提高的地方。

回顾从中科院到百度、再到领英的选择,他认为工作改变了生活城市与后续机会,同时不愿把后来较好的结果全归功于当时的判断。疫情、市场和股价变化并不能提前预测,回头看待选择也需要承认运气和环境的作用。

他也提到一段没有成功的求职经历:曾参加苏州微软的面试,最后没有拿到 offer。这个具体例子使职业讨论不只停留在后来做成了什么,也包含没有获得的机会;回看自己的路线,他并没有把它解释成每一步都选对的结果。原片 103:36–104:07

末尾观众再次问到 Staff 的晋升,他回到前面那个问题:更大的责任往往要求自己发现并推进有价值的项目。这与多掌握一个框架并不是同一层面的要求。原片 99:30–104:47、127:16–129:27

学习、工作之外的时间与内容创作

先识别前置知识,再通过项目检验学习

谈到快速接触新技术,他以自己学习深度学习为例:先检查数学等前置知识,再了解领域问题,选择可信资料,最后做一个实际项目。能够调用现成工具,与理解到足以承担相关工作,是不同阶段。

他回顾了通过斯坦福 CS193p 学习 iOS 的经历,也提到李沐的《动手学深度学习》课程。课程帮助建立系统认识,但找工作还要了解岗位需要什么、补足相应知识。资料越来越多之后,筛选可靠来源和真正动手,比单纯收集课程更重要。原片 104:47–108:35、110:17–112:23

协作文档和清楚的讨论记录,也能提高效率

在工具交流中,他首先推荐协作文档:共同维护一个持续更新的文档,可以减少反复发送“最终版”的混乱。他也谈到 Git 图形工具、项目管理工具,以及支持讨论串的团队聊天方式。

这些工具的共同作用,是减少信息在多人之间传递时的损失。日常操作层面,他建议熟悉编辑器和开发环境的常用快捷键。录播中的具体产品、价格和许可说法属于当时经验,选择时仍需查看当前规则。原片 112:23–115:22

结果导向的安排,给个人生活留下空间

介绍自己的作息时,Yuu 说团队更看重工作结果,具体开始和结束时间有一定弹性。远程办公减少通勤,他会把空闲时间用于游戏或学习,投入程度也会随兴趣变化。

关于出国,他说明最初有计划,公司当时也有内部转岗机制,但后来的外部环境与个人考虑改变了安排。职业规划可以调整,不需要为了保持过去设定的路线而忽略现实条件。原片 115:22–118:31

游戏也可以是一种需要投入的体验

他并不把游戏简单视为工作之后的放空。完整的世界观、人物和叙事,会影响玩家对问题的理解;体验一部游戏,也可以像看电影、读书一样认真投入。

与此同时,他提醒自己减少机械重复的“打工式”任务,把时间留给更想体验的内容。这段交流延续了整场对话的一个关切:个人时间不仅用来恢复工作能力,也可以服务自己的兴趣与感受。原片 119:42–122:16

创作需要工具、观察和持续迭代,也需要判断投入是否值得

最后,Yuu 回顾自己做视频和直播的经历。工具方面,可以先选一种剪辑软件,从关键帧、配乐和简单剪辑开始;传播方面,则需要观察同类内容,比较标题、封面、节奏和时长怎样影响反馈,再持续调整。

他也坦率谈到,内容创作的投入与回报并不总成比例。长期做了很多内容,也未必得到期待的增长。如果本身并不享受创作,需要重新判断继续投入是否值得。反过来,若愿意持续做,就根据实际反馈迭代,而不是把某一次播放量当成对个人能力的最终评价。原片 122:16–126:48

录播最后还有薪酬和晋升问答。Yuu 指出薪酬会随地区、入职时间和股票价值变化,很难用某个同事的经历给出统一数字;晋升则再次落到对项目和组织产生实际贡献。这些回答也为整场交流收束了边界:个人经历可以提供参考,却不能替别人保证未来。原片 127:16–130:20

查看本期原视频与分段信息:我在领英做移动端 →