程序员在工作中会遇到形形色色的问题,提问题是一种能力,如何问问题是一门学问,神经码在这里分享一些感受和方法。
问题类型和提问技巧
一、有“标准”答案或明确定义
这类问题就不要问了,自己找答案。
例如:
① 考研都考什么?计算机软件资格水平考试都考什么?
这种就是属于有“标准”答案,自己去找考试大纲就可以。
② sprintf 参数都是什么意思?
这种就是属于 有明确定义的,可以通过手册、书本、搜索获取答案。
二、无标准( “思考”型、“实践”型、“排查”型、“经验”型)
1. “思考”型
一些算法题或者需要提供解决方案的。
例如:
如何实现一个随机播放音乐,要求能够方便查看上一首播放的是什么,方便交换即将播放的歌曲顺序?
这种问题一般要注意:
先搜索,一般常见的算法或问题,别人可能遇到过,已经分享出来了。
问的时候注意先提供自己的思路,如果是需要提供解决方案的,那么要把环境问题同时说明清楚。
最好是到开放型的地方,比如论坛、QQ群等咨询讨论,多个人讨论,方便开拓思维。
2. “实践”型
例如:
学校那些编程实践作业或试题,就是那一类提问题的人甚至都不理解问题是什么,就只要答案的,而且还需要解决问题的人写代码。
针对这类问题的建议,就是怎么样把题目细化,转换成思考型问题,然后按照思考型问题提问。如果没有的话,除了亲朋好友基本上没人能帮忙解决,谁有空编写一大堆代码然后把文件给你,为了达到目的或许付费请人帮忙是可行的。
3. “排查”型
这类问题很多,例如代码或服务器出现问题。
举个例子:
程序部署到Linux上后,页面出现中文乱码,是不是中间件的配置出现问题了?
服务器负载、内存、CPU没问题,远程SSH链接也正常,但是网页打开很慢,可能是什么出问题了?
这种问题一般要注意:
找找Web服务器日志、系统日志的错误信息,或者程序报错信息。先通过错误信息搜索,别人可能遇到过,已经分享出来了。
问题描述清楚,把环境同时说明清楚。
这类问题,经常需要断点调试、各种测试才能最终定位问题。先尝试在论坛或QQ群问,大家会提供的都是一些经验想法,去尝试下,如果还是解决不了,那么只能就是针对性找朋友帮忙解决,甚至需要授权登录服务器或者远程连接到你的电脑,所以这种可信任的朋友就看你能不能找得到。“朋友”是一种资源,平时注意积累。
4. “经验”型
这类问题,我遇到最多。典型的就是问职业规划,专业选择。能不能学会,如何学习,该不该考研?还有就是问经验,比如各类考试经验。
这类问题,可以选择跟导师、师兄师姐、职场前辈或者网络上相关领域牛人咨询。
问的时候,把自己的情况和背景信息介绍清楚。
这类问题不要经常问,大概搞清楚后,做完选择就开始认真去学习。问多了整天就浪费时间做选择、学习方法、总结经验的,其实对真正学习知识帮助有限。
比如有些人整体就在问到底学习Java用哪一本书好,有的说这本不好。其实如果有人推荐了一本书,你就先看,等看一部分自己就有感觉了,实在看不下去再换,如果看得下去就先不要换了,认真去学习才是最重要的。
问问题其它注意事项
1、不要问调查式问题, 特别是向陌生网络朋友提问问题,应该先自报一下自己的情况和背景,切忌调查式的提问。别一上来就开始调查:你是学什么的?你做哪方面开发?你在北京吗?…
2、不要先问: “在吗 ?” 或者很粗糙的问题,应该直接把问题具体化。
因为你不确定对方什么时候会回复,如果你发这种消息过去,对方看到可能直接忽略不回复或者根据粗糙的问题给一点建议,或者回复一个:在啊。然后对方回复的时候,你又不在线或者没办法马上跟对方聊上,那么对方还在等你的下一步消息,你半天以后才回复,来回几次,对方就会觉得你很烦。
我最烦的问题是:问了一个在吗,然后回复过去之后,对方就不见人影,等了半天才突然上来,然后又来了一个很粗糙的问题 或者 调查式问题:你做哪方面开发?真想骂过去,你妹的,你谁啊?我又不认识你,你能不能先自我介绍一下,然后直接描述清楚问题。
3、周全准备问题。 根据上述问题分类,描述清楚问题的背景、环境等信息以及你的理解和思考。
提问题是一种智慧,每个人都应该学会问问题。
公众号内回复“1”带你进粉丝群!