查看原文
其他

解决问题之经验篇

lencx 浮之静 2023-08-17

问题不可能被穷举,答案经验有时候并不足以让我们应付千奇百怪的问题。在题海中,培养自己分析,定位,解决问题的能力似乎才是我们唯一的出路(以不变应万变)。

一般问题解决步骤:

  1. 遇到问题(不要慌)

  • 这个问题没见过,咋搞呀

  • 我正好有个技术群,丢个报错截图去问问

  • ...

  • 分析问题(抽丝剥茧)

    • 多问自己为什么,从问题报错处,排除干扰,向上 debugger

    • 小黄鸭调试法[1] - 小黄鸭调试法,又称橡皮鸭调试法、黄鸭除虫法(Rubber Duck Debugging)是可在软件工程中使用的一种调试代码的方法。方法就是在程序的调试或测试过程中,操作人耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感与发现矛盾

  • 描述问题(提取关键词)

    • 清楚表达问题 - 很重要,直接影响到后面的关键词提取

    • 关键词转英文 - 推荐两个翻译网站 Google 翻译[2] 和 Deepl[3]

  • 关键词搜索(中,英文)

    • 中文 - 国内太卷,抄袭严重,问题没有出处。除非是特定问题(微信小程序之类的问题),否则不建议使用中文搜索

    • 英文 - 质量要高很多,推荐使用 Google[4] 搜索,替代品 Bing[5] 搜索

  • 解决问题(总结经验)

    • 反思总结 - 沉淀是为了让自己能够举一反三

    • 分享经验 - 表达是为了进一步加深理解

    如果以上步骤无法解决问题,向别人请教之前,以下几点是必须要做的:

    • 看官方文档(重要的事情说三遍)

    • 开源库或框架遇到问题,逛社区(别偷懒) - issues[6],discussions[7],stack overflow[8] 必看

    • 问题仍无法解决,则需剥离业务逻辑,提供最小复现用例(节约彼此时间)- 别人未遇到过的问题,并不能靠空想解答,即使可以,也不建议进行这样的试探

    如果以上步骤都做了,仍然无法解决问题,则可以在项目 issues 或 stack overflow 等问题社区发起提问:

    • 问题描述 - 简洁清楚的表达问题,切记啰嗦

    • 环境信息 - 问题发生的环境(系统信息,软件版本,浏览器版本等)

    • 如何复现 - 提供问题复现步骤 1,2,3,可以配合适当的错误截图及说明

      • 复现用例 - 用例要排除业务干扰,缩小问题范围

      • 我的尝试 - 自己做过哪些尝试,也可以让别人快速排除一些干扰项

    • 预期结果 - 希望得到什么样的结果


    参考资料

    [1]

    小黄鸭调试法: https://zh.wikipedia.org/wiki/%E5%B0%8F%E9%BB%84%E9%B8%AD%E8%B0%83%E8%AF%95%E6%B3%95

    [2]

    Google 翻译: https://translate.google.cn/

    [3]

    Deepl: https://www.deepl.com/

    [4]

    Google: https://www.google.com/

    [5]

    Bing: https://www.bing.com/

    [6]

    issues: https://guides.github.com/features/issues/

    [7]

    discussions: https://docs.github.com/en/discussions

    [8]

    stack overflow: https://stackoverflow.com/


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存