V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fulvaz
V2EX  ›  职场话题

最近前端工作感悟一二

  •  1
     
  •   fulvaz · 2024-01-14 15:45:27 +08:00 · 4386 次点击
    这是一个创建于 370 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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 要高。

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

    24 条回复    2024-01-16 08:54:25 +08:00
    musi
        1
    musi  
       2024-01-14 15:50:06 +08:00   ❤️ 3
    写了一堆没看懂,从找问题的链路能发散到小朋友拿手机然后又回到 cpu 然后又回到浏览器
    如果你在工作中也是这么和人沟通的话我感觉和你合作应该挺累的
    fulvaz
        2
    fulvaz  
    OP
       2024-01-14 15:59:34 +08:00   ❤️ 3
    @musi 写了快 2 小时,脑子蹦出来的东西越来越多,一开始还想着逻辑回去重新组织

    累了。干脆放飞自我,就当自我反思了
    iOCZS
        3
    iOCZS  
       2024-01-14 16:09:23 +08:00
    android 的开发者页面要怎么开?你说的是连续点击安卓版本号那个?
    WhoCanBeRich
        4
    WhoCanBeRich  
       2024-01-14 16:15:17 +08:00   ❤️ 7
    从你描述里确实能看出你是公司里在前线解决各类问题的哥们,但也看出了你的疲惫。祝好!
    yingqiuQAQ
        5
    yingqiuQAQ  
       2024-01-14 16:20:31 +08:00
    没深入研究过,safari 不是 chrome 内核吗
    HiCode
        6
    HiCode  
       2024-01-14 16:21:17 +08:00   ❤️ 4
    很困惑 op 写了这么多,在 v2 能收获什么,我是站 op 的。

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

    我看了 op 写这么多,第一反应居然是,v2 网友可能大部分没耐心看,也看不懂。
    musi
        7
    musi  
       2024-01-14 16:21:48 +08:00   ❤️ 1
    toneal
        8
    toneal  
       2024-01-14 17:10:27 +08:00
    就是一个面对自己不感兴趣的工作难题时的态度问题
    fulvaz
        9
    fulvaz  
    OP
       2024-01-14 17:13:30 +08:00
    @HiCode 写得很烂,去哪都收获不到什么,就当给自己的成长路径做复盘了。

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

    其实看不懂正常,做的东西太小众了
    okakuyang
        10
    okakuyang  
       2024-01-14 18:40:05 +08:00
    看你描述,具体做哪一块的可以说吗?可以交流下,我以前做 webgl 的,可以交流下。
    kneo
        11
    kneo  
       2024-01-14 18:59:00 +08:00 via Android   ❤️ 1
    糟糕无比的叙述……
    语言能力的缺陷直接反应人思维的短板。你可能觉得自己排查问题有经验,已经悟道了,其实才初窥门径。建议你像 debug 一样重新审视一下自己写的东西吧。
    zhouyg
        12
    zhouyg  
       2024-01-14 19:56:27 +08:00
    工作多年了很有既视感
    Cola98
        13
    Cola98  
       2024-01-14 20:14:03 +08:00
    op 的意思大概懂了,比如遇到一个 CPU 升高问题,先定位是那个进程,在判断是内核态还是用户态调用,在定位到具体代码,排除和试错,但是对于老板来说,他是不在乎的,只需要看到结局,就是 CPU 利用率下降了
    jeesk
        14
    jeesk  
       2024-01-14 20:36:19 +08:00
    第一个问题如果是客户端直接嵌入 chromium ,让用户骂你们. 开发也好排查问题.
    xxbing
        15
    xxbing  
       2024-01-14 21:04:04 +08:00
    写得好啊 作为一名前端计算机基本功这么扎实.敬礼!
    guonaihong
        16
    guonaihong  
       2024-01-14 21:32:06 +08:00
    楼主描述的解决问题的方法,我一般称为“控制变量法”,a&b&c 都可能导致一个问题的产出,每次改变一个点,看下结果。这是初中学习电路,get 的一个方法论。
    LandCruiser
        17
    LandCruiser  
       2024-01-14 22:28:05 +08:00
    所以不能干前端,鄙视链最后一环。
    theprimone
        18
    theprimone  
       2024-01-14 22:43:46 +08:00
    Hybrid app 啊,还没玩过 😂
    surfwave
        19
    surfwave  
       2024-01-14 22:44:03 +08:00
    楼主还是先梳理好思路,然后通过文字准确的表达出来,让受众能够理解你的本意。
    wu67
        20
    wu67  
       2024-01-14 23:42:25 +08:00 via Android
    这一大堆,不开 gpt 还真不知道说了啥...
    AceDogs
        21
    AceDogs  
       2024-01-15 00:19:34 +08:00 via iPhone
    写代码有些部分就是把不确定性变成确定性的过程,即使运行时有 bug 那也要想办法解决啊,某种写法导致 CPU 高,想办法用不高的方式绕过啊。没有什么环境是完美的,这都是工作中需要解决的一部分。
    edotac
        22
    edotac  
       2024-01-15 09:20:24 +08:00
    懂所谓的“控制变量法”的人,在看到第二段就共鸣了
    Ethkuil
        23
    Ethkuil  
       2024-01-15 10:03:49 +08:00 via Android   ❤️ 1
    有一本挺薄的讲调试的书,叫《调试九法》,我推荐 op 看看。相信你会喜欢的。
    chicbian
        24
    chicbian  
       2024-01-16 08:54:25 +08:00
    涉及到 webkit ,浏览器内核,gc 的问题,很多都需要原生去做优化的。直接甩锅完事儿了,一个月才几个钱,操心那么多干啥。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2573 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 10:50 · PVG 18:50 · LAX 02:50 · JFK 05:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.