先说个丢人的事
2018年我刚转行写Python,有个pandas的merge问题搞不定,就跑去Stack Overflow提问。标题写的是“救命!merge之后数据少了很多”,结果10分钟被踩了7次,还被管理员标记为“重复”。当时我气得想摔键盘。后来我数了数,我在SO上总共问了15个问题,只有4个没被关闭,其他全被踩或者标记重复。你猜怎么着?我最近翻了翻我的提问历史,发现那些被关闭的问题,其实都犯了同一个错误:我把SO当成了论坛,但它其实是个知识库。
SO和AI,我用3个月数据做了个对比
从2024年1月到3月,我同时用ChatGPT-4和Stack Overflow解决工作中遇到的bug。我记录了60个问题。结果:ChatGPT平均2.3秒给出答案,但其中17个答案的API是编造的,需要我再手动查文档。SO平均等待17分钟才有第一个回答,但高赞答案的准确率(我验证后)是89%,不过有23%的答案已经过时(比如还在用componentWillMount)。更扎心的是,SO上JavaScript标签下,2023年新增了约18万个问题,但被关闭的比例高达27%(我写了个脚本爬了前100页)。而AI不会关闭你的问题,它只会一本正经地胡说八道。
我总结的3个反直觉提问步骤
- 标题别写“求助”,写错误信息。比如“TypeError: Cannot read property 'map' of undefined”比“数组报错怎么办”强100倍。我试过,前者能吸引到真正懂行的人。
- 代码块控制在20行以内。你贴200行代码没人看。我有个朋友贴了500行,被评论“请提供最小可复现示例”。后来他删到15行,问题就解决了。
- 说明你已经试过什么。比如“我试过重启内核、换用apply、查了官方文档第3章”。这能避免别人重复建议。我最近3个问题都按这个套路,全得到了回答,其中一个还被赞了5次。
我的全新观点:SO不是帮你,是帮未来的别人
很多人骂SO不友好,我觉得是他们没搞懂SO的底层逻辑。SO的目标不是解决你一个人的问题,而是生产一个对以后所有人都有用的答案。所以你的问题如果太具体(比如“我的服务器IP是192.168.1.5,为什么连不上”),就会被关闭,因为它对别人没用。这正好和AI相反——AI是服务你个人的,SO是服务社区的。所以我现在策略是:一次性、急迫的问题用AI;经典、通用的问题去SO搜;如果搜不到,再按照“知识库标准”提问。效率高多了。最后,别把踩当回事,那只是投票机制,不是人身攻击。