最近前端工作感悟一二

116 天前
 fulvaz

说起来毕业以来一直在写前端,随便聊点有的没的,想到哪就写哪了吧。

  1. 最近的工作还是前端也不是前端,基本是背锅。比如:chrome 出 bug 了、iphone15 发热离谱、native 老哥的代码实现影响前端性能了等等。当然还有大部分是性能优化相关,想出一些有意思的 idea ,做下架构改进,偶尔 PUA 自己带的小朋友(苦笑,好像不太擅长)。整体来说还是个臭写代码的,性格自闭,估计以后也不会有啥长进;

  2. 一般来说,浏览器内的 bug ,前端研发要是敢说原因是浏览器或者 native ,别人一般会觉得:区区切图仔写 bug 就认,就知道乱甩锅。那就给证据嘛: a.用户说浏览器卡死,那前端写屎也只能弄挂 js ,后面抓浏览器 tracing ,V8 安安静静,那就是浏览器的锅啊。 b. 有老哥说 CPU 高肯定是前端写屎,我复现发现他那种场景下 webkit 就 GC 个没完,自己简单学了下 ios 开发弄个最小测试 demo ,还是有问题,那就是 webkit 的问题,不能怪我呀。 c. 前端渲染一直不出来,看不到 paint 事件,trace 一看,native 逻辑阻塞主进程,导致 webview 也无法绘制;还有一种情况,在某工业垃圾上无法看 tracing ,一个个原因猜,一个个测,最后跟 native 老哥分析前因后果,定位到问题。 这么来几次,大家也就觉得你是一名研发工程师

  3. 兜兜转转,换回几年前,我也不可能给证据给得那么流畅,最近我发现一个复杂问题丢给一些小朋友时,他们会表现得手足无措,但如果我有个教程让他们一步步做时,他们会学得飞快,而且做得比我还要好。其实很怪,这些小朋友其实都很优秀,比当年的我可聪明多了。可能是大家不怎么会分析一个“困难”的问题。

我的感受是这些需要将困难问题变成复杂问题(额,我们公司称这为思考啥的,有的公司叫方法论)。

就像自己的台式机没法开机了,但电脑上一共就:电源-主板-CPU-内存-硬盘-显卡,这几个硬件按顺序执行各自的工作,其中每个硬件都会干点自己的工作。那假如无法开机,那肯定就是看到哪个环节断了,比如:

开机没反应,那肯定是到电源,主板这一步就挂了,把这两个部件换一下试试;

开机 CPU 风扇转,那大部分情况电源-主板是好的,后面步骤有问题,那就试试换 CPU 、内存看看能不能好;

(这里方便举例省略了大量细节,比如主板 bios 有问题也是风扇会转,希望大家别纠结)

这个按链路排查的思维帮了我很多,特别是最近一个需求需要跟一堆后端老哥吵架,而且吵的是后端的细节,实际上我根本不需要知道他们的数据库用了 mysql 还是啥,网关是 nginx ,还是开发语言是 go 还是 rust ,我只需要理解需求需要几个环节,以及这几个环节中间能不能串起来就 ok 了,如果不能串起来,我就要给出一个方案说服他们。

这里困难的点是:我怎么知道链路是这样的?哈,这个跟智商都没啥关系。比如有些小朋友拿到一个新手机会开心得睡不着,将整个手机的设置页面都研究的清清楚楚,第二天连刷机怎么玩都弄明白了;比如有些小朋友将会花时间将我们项目的主流程摸得滚瓜烂熟,有些劝了半天也不为所动。至于这些行为原因是啥我真不好说,每个人都做出了自己选择而已。

如果说你按着执行链路排查了半天都没法效果,或者说知道原因但无法修复怎么办?有时候就像爱迪生发明灯泡一样撞大运,比如 CPU 转,其实可能 CPU 没事,是主板有事 ---- 为什么能发现可能是那个老哥实在觉得灵异,然后找了块新主板试了一下 CPU ,发现 CPU 好好的,就是主板有事。

那主板为什么挂了呢?为什么刷个 bios 就能好?那就回到了上面说的,主板的启动流程是什么。

但是日常工作中,等学习清楚主板的启动流程,老板早不耐烦了,对此我只能说念念不忘必有回响。比如查 native 导致的前端不渲染问题,我发现浏览器没触发 paint 时,我第一反应是触发 paint 需要一个 vsync 。然而前端开发基本不会接触 vsync ,甚至是 paint 。我能接触到仅仅是有段时间刷 b 站学了一点点计算机图形学。这应该就是所谓的积累,从量变产生质变,真没有啥捷径。

好了,就写这么多,写得也好乱。忽然感觉这就是写给我自己看的,给各位献丑了。

以后要是有机会招人,我可能会问一嘴:android 的开发者页面要怎么开?

冷知识:现在的 chrome 的内存管理做得远远比 safari 强,chrome 少 50%,甚至移动端 safari 内存占用也比 PC chrome 要高。

(本来是想吐槽苹果创造的(消音),没想到变成总结文章了,就年级大了不想引战。。。。。)

4027 次点击
所在节点    职场话题
24 条回复
musi
116 天前
写了一堆没看懂,从找问题的链路能发散到小朋友拿手机然后又回到 cpu 然后又回到浏览器
如果你在工作中也是这么和人沟通的话我感觉和你合作应该挺累的
fulvaz
116 天前
@musi 写了快 2 小时,脑子蹦出来的东西越来越多,一开始还想着逻辑回去重新组织

累了。干脆放飞自我,就当自我反思了
iOCZS
116 天前
android 的开发者页面要怎么开?你说的是连续点击安卓版本号那个?
WhoCanBeRich
116 天前
从你描述里确实能看出你是公司里在前线解决各类问题的哥们,但也看出了你的疲惫。祝好!
yingqiuQAQ
116 天前
没深入研究过,safari 不是 chrome 内核吗
HiCode
116 天前
很困惑 op 写了这么多,在 v2 能收获什么,我是站 op 的。

我前段时间跟老婆说,只要你学会最最基本的理性思维,遇到问题能够“以知识列出所有可能性,然后逐个检查测试排查”,就已经秒杀现实中大部分的人了。

我看了 op 写这么多,第一反应居然是,v2 网友可能大部分没耐心看,也看不懂。
musi
116 天前
toneal
116 天前
就是一个面对自己不感兴趣的工作难题时的态度问题
fulvaz
116 天前
@HiCode 写得很烂,去哪都收获不到什么,就当给自己的成长路径做复盘了。

“最最基本的理性思维”我深表认同,但“就已经秒杀现实中大部分的人”让我震惊....感觉我要对自己做的事情要再 review 下,特别是那些我认为很简单的事情,可能是有复杂度的。

其实看不懂正常,做的东西太小众了
okakuyang
115 天前
看你描述,具体做哪一块的可以说吗?可以交流下,我以前做 webgl 的,可以交流下。
kneo
115 天前
糟糕无比的叙述……
语言能力的缺陷直接反应人思维的短板。你可能觉得自己排查问题有经验,已经悟道了,其实才初窥门径。建议你像 debug 一样重新审视一下自己写的东西吧。
zhouyg
115 天前
工作多年了很有既视感
Cola98
115 天前
op 的意思大概懂了,比如遇到一个 CPU 升高问题,先定位是那个进程,在判断是内核态还是用户态调用,在定位到具体代码,排除和试错,但是对于老板来说,他是不在乎的,只需要看到结局,就是 CPU 利用率下降了
jeesk
115 天前
第一个问题如果是客户端直接嵌入 chromium ,让用户骂你们. 开发也好排查问题.
xxbing
115 天前
写得好啊 作为一名前端计算机基本功这么扎实.敬礼!
guonaihong
115 天前
楼主描述的解决问题的方法,我一般称为“控制变量法”,a&b&c 都可能导致一个问题的产出,每次改变一个点,看下结果。这是初中学习电路,get 的一个方法论。
LandCruiser
115 天前
所以不能干前端,鄙视链最后一环。
theprimone
115 天前
Hybrid app 啊,还没玩过 😂
surfwave
115 天前
楼主还是先梳理好思路,然后通过文字准确的表达出来,让受众能够理解你的本意。
wu67
115 天前
这一大堆,不开 gpt 还真不知道说了啥...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1008520

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX