文|洪生鹏
因工作需要,被叫去当面试官,其中一位女求职者给我留下深刻印象。当我问她,“你平时开发过程中,要是遇到问题时,你是怎么解决的?”她的回答令我甚是惊讶,“我技术一般,遇到不懂的,都是直接找同事帮忙的,他们都很愿意帮我。”
有人愿意帮忙,说明你人缘不错,只是遇到难题就直接寻求他人帮忙,人家能帮你也只是一时。碰到难题,自己没有事先思考,这是很不明智的。自己先思考,学会自己尝试寻找解决方案,实在解决不了再找他人帮忙。才是上策,而不是到处问答案。
有效地提问问题,是解决问题的前提
关于提问,自古以来就备受人们青睐,有学就有问,有问方显学。学而不思则罔,思而不学则殆,大概就是这个道理,有提问,说明有在学习。带着问题学习,更专注于学习,越学会越来劲,越学越精进。我们印象更深的,可能是孙中山先生的“不懂就要问,哪怕挨骂也值得”。是的,敢于提问是我们学习进步的一大渠道。需要注意的是,不是什么都得问,孙中山先生是在背诵了课文,自己先思考后不懂时再提问的。
职场上,要是事情都要别人讲得很明白才懂得怎么去做,那别人也不太愿意把事情交给你办,也不太相信你能办好。
自从开了公众号,不少同行一起讨论Android问题较多。作为一名移动开发者,Android的兼容问题多姿多彩,不同型号的机子更可谓独自异彩。
有的读者提问问题比较随意:
为什么我的按钮点击事件没有响应?我已经安全按照你提供的代码编写的,求救啊!
为什么我运行了你的demo,界面一面空白,可以帮我看看吗?
按照你说的,编译出错了,你能帮忙看下吗。
使用你的demo,这个异常怎么解决?
……
提问问题,请把问题的场景描述清楚,什么情况下出现,最好有关键代码片段。这样一来,方便定位问题。如果你只是花几分钟随便把问题一抛,我就得花30分钟,甚至更多的时间来分析理解,有时最后还没有答案。
对于开发环境出现的问题,请自行先用搜索引擎搜索解决。开发环境问题,能自己通过引擎搜索解决的问题,请自己先动手。不要抱着这样的心态,“我是新手,我刚入门,麻烦大神帮我解决一下”。这个理由,貌似不错,可是,谁不是从新手进阶来的。
关于基本问题的,能独立解决的,请先自己动手。1939年我们伟大的毛主席在延安生产动员大会上作了生动而深刻的讲话,“自己动手,丰衣足食”。
在你无法通过搜索引擎找到答案时,清晰地提问,自己已做一定的思考的提问情况下,恭喜你,你已经接近解决问题的边缘了,因为你学会了独立思考,有自己的思考。
比如我对某官方的sdk 使用中的疑惑,需要请教官网技术支持的帮忙的。知道官网技术支持一般都很忙的,针对一对多的情况。个人觉得这是一种不错的提问方式,当时我是这样问的:
您好,我想暂停视频, 根据官网提供的api,用basePlayerManager.onPause()这个方法暂停视频,是可以的,但想重新启动视频,用 basePlayerManager.onStart(); 这个没起作用,请问有什么原因?谢谢!
立即收到技术支持的回复
因为官方api没更新,你找到mediaplayerdelegate,用里面的pause 和start方法就好。
ok问题顺利得到解决了。
向人家请教问题,态度诚恳,尊重对方这点很重要。提问问题,我们不是在排话剧,并不需要什么开场白,什么
“你好,在吗?”,
“请问你有空吗?”,
“我可以问你个问题吗?”,
”帮我看个问题好吗?”
这样的,说了几分钟还没进入正题,还没把问题描述清楚,让人家猜。这不是你猜我猜的游戏。你要的是解决你的问题,我们都希望自己的问题解决了,也不用占用对方太多时间。这才是我们想要的。
程序员基本功
以我作为一名移动开发者来说,我希望开发者这样向我提问:
问题标题有针对性
标题指明环境、错误时机、现象。如:
较差的标题(×):发现一个兼容性bug(标题过于广泛,让人有点悬)
较好的标题(√):华为 某某机型上出现调用初始化时导致崩溃的兼容性问题求解
问题描述详细
问题描述详细,可以方便其他用户帮您定位问题。尽量提供详细的环境、错误时机、堆栈、日志、现象、截图等等。
不妨参考下面的格式:
【问题描述】
描述出现问题的环境:Android版本、设备型号、网络状态、SDK版本等等
描述为了解决问题作出的一些尝试,例如通过搜索引擎查到的相关资料
【错误堆栈】
贴出具体的日志Log
解决问题的能力,是程序员立业之本
《礼记》中“博学之,审问之,慎思之,明辨之,笃行之”,就明确提倡我们在学习的过程中,要多提问,多思考,多行动。办法总是要比困难多,只有不断地学习,解决问题,我们的技术水平才能提高得更快,对自己才会越来越有信心。
学习过程中,要懂得善于充分利用网络资源,但请不要做拿来主义者,对于他人的解决方案要学着借鉴和吸取。
他人的解决方案要学会转换成自己的,只有自己掌握了才是真的学会了,千万停留在表面的层次。
能通过搜索引擎解决的问题,自己应该多搜索相关类似的,基础的书籍还是必备的,针对新手,这样的你就可以系统性的学习,免得遗落一些知识点。
经过搜索后还是没有结果后,这是我们就应该像孔子的不耻下问一样的。主要是要把问题描述清楚,建议有异常日志,相关片段代码,截图,毕竟有图有真相。
尽量不要问题只提一点,描述不清楚,让人想回答都无从下手,只能靠猜测,相信这也不是你想要的结果。把问题描述清楚了,也是一种能力。没把问题描述清楚的,有时还得反过来问你,
这样一问一答,虽然沟通看上去挺高效的,但其实并不适合,时间周期就会比较长,少则30分钟,多则1小时了,甚至更多。
记得有位群员,一进群就直接抛出半截问题“ 大神们,帮我看看,这是什么情况?”,就抛个错误日志,日志里很明显提示184行出错,他自己不去定位184行到底是啥错误,又不贴出184行处理了什么逻辑。非得人家问他184行是什么,他才贴出来。更奇怪的,这次人家帮他解决了,下次他还提出类似同样的问题。
别人帮忙解决了,请不要把它扔一边去了,自己没有思考为何会这样,有没有其他的方法可以解决的。善于总结,比较分析,针对一个问题,思考不同解决方案,下次碰到类似问题就能自己解决了。
在提问过程中,要是条件允许,能加上自己思考的整理,说不定你在整理的过程中你自己就发现问题所在,脑子一下子豁然开朗了。
有些问题,能配上图的尽量配上,有图有真相,尽量不要让他人去想象,一个好的问题提问者,你确保提问的问题描述是否清楚,能做到言简意赅是最好不过了。
你提问的过程要是能附上如下信息那就更好了:你已经做了什么?你做了哪些思考?哪里做不出来?调试过哪里不行,不要简简单单抛一句某某类型手机不行,对于你说的某类型手机,我也没用过。
建议把自己掌握的东西再分享出去,互相交流,或许能收到更大的收获,其他同行能帮我们指出其中的不足。假以时日,相信你也能在项目中独当一面。
【END】
联系客服