说起来毕业以来一直在写前端,随便聊点有的没的,想到哪就写哪了吧。
最近的工作还是前端也不是前端,基本是背锅。比如:chrome 出 bug 了、iphone15 发热离谱、native 老哥的代码实现影响前端性能了等等。当然还有大部分是性能优化相关,想出一些有意思的 idea ,做下架构改进,偶尔 PUA 自己带的小朋友(苦笑,好像不太擅长)。整体来说还是个臭写代码的,性格自闭,估计以后也不会有啥长进;
一般来说,浏览器内的 bug ,前端研发要是敢说原因是浏览器或者 native ,别人一般会觉得:区区切图仔写 bug 就认,就知道乱甩锅。那就给证据嘛: a.用户说浏览器卡死,那前端写屎也只能弄挂 js ,后面抓浏览器 tracing ,V8 安安静静,那就是浏览器的锅啊。 b. 有老哥说 CPU 高肯定是前端写屎,我复现发现他那种场景下 webkit 就 GC 个没完,自己简单学了下 ios 开发弄个最小测试 demo ,还是有问题,那就是 webkit 的问题,不能怪我呀。 c. 前端渲染一直不出来,看不到 paint 事件,trace 一看,native 逻辑阻塞主进程,导致 webview 也无法绘制;还有一种情况,在某工业垃圾上无法看 tracing ,一个个原因猜,一个个测,最后跟 native 老哥分析前因后果,定位到问题。 这么来几次,大家也就觉得你是一名研发工程师
兜兜转转,换回几年前,我也不可能给证据给得那么流畅,最近我发现一个复杂问题丢给一些小朋友时,他们会表现得手足无措,但如果我有个教程让他们一步步做时,他们会学得飞快,而且做得比我还要好。其实很怪,这些小朋友其实都很优秀,比当年的我可聪明多了。可能是大家不怎么会分析一个“困难”的问题。
我的感受是这些需要将困难问题变成复杂问题(额,我们公司称这为思考啥的,有的公司叫方法论)。
就像自己的台式机没法开机了,但电脑上一共就:电源-主板-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 要高。
(本来是想吐槽苹果创造的(消音),没想到变成总结文章了,就年级大了不想引战。。。。。)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.