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

最近前端工作感悟一二

  •  1
     
  •   fulvaz · 349 天前 · 4354 次点击
    这是一个创建于 349 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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  
       349 天前   ❤️ 3
    写了一堆没看懂,从找问题的链路能发散到小朋友拿手机然后又回到 cpu 然后又回到浏览器
    如果你在工作中也是这么和人沟通的话我感觉和你合作应该挺累的
    fulvaz
        2
    fulvaz  
    OP
       349 天前   ❤️ 3
    @musi 写了快 2 小时,脑子蹦出来的东西越来越多,一开始还想着逻辑回去重新组织

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

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

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

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

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