提问的智慧

在写程序的时候,我们不可避免会出现这样或那样的问题,比如:这个报错日志是什么意思?为什么会出现这个问题?这个问题该怎么去解决?

回想起在大一时,第一次学习编程语言的我,遇到了个“非常棘手”的问题,看着其他同学都跑出了正确的结果,我的心里非常着急。印象中那个代码是这样的:

1
2
3
4
5
6
7
int mian() {
int a = 0;
int b = 3;
int c = a + b
printf("%d", d);
return 0;
}

当然,现在看起来,这个问题显得十分幼稚。但是当时看到奇怪的报错,确实是一筹莫展。

其实说起来,我并不是一个善于提问的人,相比之下我更喜欢独自解决问题,这就导致有时候进度会比较慢。

当时采取了一种非常笨的方法:一字一句的去比对,最终发现main方法名字写错了,并且程序中少了个分号。

当时为什么没有直接向老师询问呢?因为我考虑到了,这样简单的一段程序,出现的错误肯定不会复杂到哪里去,一定是属于自己能解决的问题,还有就是,如果我问出了这个问题,一定会显得十分愚蠢。后来发现,确实如此。

大概就是从这次开始,我养成了遇到Bug先自己解决、解决不了就去搜索的习惯,到现在,我依然受益于这样的习惯。

在考研上岸后,我活跃于QQ群,解答准备考研的学弟学妹们的问题。一开始出于热情,倒是没觉得有什么,后来发现自己的热情越来越低。在阅读了这两篇文章后,我找到了症结所在。

在咨询我的问题中,绝大多数都是无效问题,诸如:国科大好考吗?复试难吗?有没有歧视呀?分数线是多少呀?……

一开始我还能够耐着性子回答一下,时间长了,神仙也遭不住。

所以,这两篇文章,对我不论是关于技术性问题的,还是诸如考研咨询,都有很大的启发。

好的提问,一定是经过自己深思熟虑、上下求索后都没有答案的问题,而不是问过且过的无效问题。

最近,研究STM32的SPI串口和ADC通信,调试许久STM32也无法成功接收到ADC的正确数据.无奈之下,只能一遍又一遍的读数据手册,最后发现,原来ADI的ADC芯片一般使用的都是非标准SPI,一次性发送20位数据,这就要对接收到的数据进行调整——原来坑的答案都在数据手册上……这让我深刻意识到数据手册是多么重要。

我是软件出身,大学里一直在闷头写软件,后端了解的比较多。基本上,自己遇到的问题,都是无数前辈已经遇到过的问题。去google上简单一搜索(关键字要正确),就算找不到标准的解决方案,但是也能够找到解决问题的思路,这一点对写软件十分重要。

由此可见,这个时代,给我们许多独立解决问题的渠道。在我看来,独立解决问题十分重要,这是一个工程师或者程序猿保持思维活跃的根本之道。