解决问题的流程
在学习的过程中,我们总会有不了解的东西,恰好身边又有大神了解。这时有些人就不假思索开始提问了。我曾经回答过相当多的技术问题。
当自己学习出了问题时,要尽可能独立思考去解决;再考虑通过查阅书籍和网上的资料来解决;实在还是解决不了,再考虑请教别人,而提问也需要智慧。
自主学习的动力来源
人的本性都是充满好奇心,渴望了解一个未知事物的。好奇心的驱使下,人是会主动学习的。就整个人类社会而言,自古就不断的探索宇宙,这就是好奇心的表现,如果把全人类看做一个整体,人类的终极目标,或许就是要找到宇宙的真理,找到无尽的知识,满足人类无止境的好奇心。
为什么要自主学习
作为一个大学生,如果你希望能有所成就,但又想像中学一样等着老师来灌输知识,那肯定是不行的。最有价值的东西,往往都是原创性的,如果老师都能教给你,那你只能做一些体力活,创造不了什么价值。
问题尽量独立解决,反复思考实在不明白才去请教别人,这样才能锻炼学习能力。有种说法,内向的人更容易成功,从学习能力的角度来看,内向的人更倾向于自己解决问题,所以学习能力得到的锻炼更多,促使其更容易获得成功吧。
为什么要通过网络和书籍学习
牛人为什么写博客呢?他们不喜欢即时回答问题,没法随时保持很好的心情和灵感。有些问题太常见了,也没有那么多的时间精力耐心,一遍又一遍的去回答别人。更喜欢在有灵感的时候写博客把所想所学全部写下来,然后让有疑问者自己去看。典型的FAQ,就是收集了常见的问题和回答进行整理的结果,大大提高了问题解决的效率。大神写代码、设计电路的时候都深刻的领悟了“模块复用”的思维,这是人类的智慧结晶,于是很多大神也一直努力把这种理论应用到实际:多写博客少回答问题,成功的做到了“知识复用”。有些人写书也一样。最优秀的人,可能没有精力也不愿意当老师,但是他们愿意写博客、写书分享知识。
除了精力有限以外,文字能更持久的保存知识。即使很多年过去,甚至作者都不记得当年的学习心得了,或者作者已经不在了,只要当时把知识写成文字,我们还是能通过这些作品学习到需要的东西。书籍是人类进步的阶梯,正是这个道理。
善用搜索引擎
如果你在学习一门很多人都会学的知识,例如现在的安卓开发,你所遇到的各种问题,往往有很多别人都遇到过。所以只需要利用强大的搜索引擎去寻找问题就好。
科技学术方面的内容,一定优先考虑谷歌;生活方面的内容,可能百度更懂中文(切身体会,血的教训。一个技术问题百度翻了好几页都没解决,用谷歌的第一条搜索结果就搞定了)。谷歌如果上不了,可以使用其镜像站点 www.googleforchina.com
谷歌搜索技巧,可参考网上文档《Google搜索从入门到精通》。
网络博客和书籍的区别
博客和书籍,虽然都是被写成文字,用来分享知识,但两者是有一定的区别的。书籍更加正式,不仅内容比较系统全面,并且经过了比较规范的校对审核,才会被出版。如果你想系统性的学习一门知识,可以考虑看一本不错的书籍。
而博客等网络资源也有好处。有些知识比较零散,没办法也没必要写成一本书,例如编程时遇到的一个奇怪的小问题,这时候更容易在网络上找到解决方法,而不是书上。网络资源及时性好,一旦写好马上就可以发布,而书的出版需要长时间的构思编写,和后期的校对,还要经过出版的流程,才有可能被买到或者借到。通常不需要支付额外的费用,也是网络资源的一个优点。
现状
由于种种原因,尤其是从小就接受的灌输式教育,很多人早已丧失了对知识的渴望。到了大学我们没有了中学那么多的束缚,虽然大学的环境也远没有想象的那么美好,但是至少我们能抽出很多课外时间。学习自己感兴趣的东西,需要自主学习能力。
学习能力和思维方式
一个人最重要的东西有两点,学习能力和思维方式,这是我的看法,并意外发现和一位知乎网友的想法惊人的一致。
提问的智慧
牛人往往会欣赏和自己一样爱好学习的聪明人,但是可能很忙。该怎么让别人愿意回答你的问题,这就靠情商了。不会说话也不会办事,那就只能靠自己了。
问题描述不清
提问最大的忌讳,就是问题描述不清。如果你问医生,不舒服怎么办,医生会问你哪不舒服,吃了什么等等问题,然后给你量体温等等,逐步判断问题。但是请不要忘了,解决病人的问题是医生的工作职责,并且最后你通常是要付费的。而你在网上或者其他途径问身边的人问题时,你应该明白,别人给你提供帮助是无偿的。尤其是大神会很忙,别人的时间比你的时间可能更珍贵,你去问别人问题,三言两语问题描述不清,别人为什么要像医生一样耐心的询问,然后帮你呢?
语言表达能力很重要,尤其是技术人员,以后往往是要团队协作的,不会表述和交流就很麻烦了。
有弱智倾向的问题
常常看到一些人问一些很简单的问题,什么色环电阻怎么识别、三极管三个脚怎么看,对于大一刚入学的同学,我完全可以理解。但是,如果很久之后,你还是这样去问,恐怕就不太好了。大家都应该知道百度百科,搜索一下色环电阻,马上就能出来详细的配图解释,比别人简单用文字来回答好懂很多也权威很多。
牛人欣赏爱学习的聪明人,不喜欢不爱动脑的人。
态度真诚
还有的人,明明是请教别人,却表现的像是别人义务帮他一样。不会说谢谢可能是性格太内敛,相对还好一点,但是应该学会这一点。有的人问别人问题,甚至还不耐烦地催促、语气强硬、嫌别人回答的不好、在QQ上问着问着人就不见了等等表现,这样谁愿意帮忙呢?
讨论/问答
讨论技术问题有两种,一种是纯粹的提问和解答,另一种是共同探讨。后者对双方的进步都会有促进作用,值得鼓励。而前者,提问者就应该掌握好提问的方法,并且应该及时的表示感谢。
不要把牛人过分神化
大神只是在某些领域比你做事认真努力、经验相对丰富的人,而并非具有特异功能的神。在外行人看来,学通信的大学生似乎很神奇,是不是个个都会修手机呢?
一开始小明只是会写单片机程序,对其他技术问题都不了解。但是有不了解情况的人,觉得小明肯定修电脑经验丰富,会写各种程序,会做网页,精通网络,数模顶尖高手,计算机、电路、各种软硬件相关知识不在话下,问他各种问题……小明说他不懂,那些人就会诧异的说,你不是大神么?别谦虚了,行行好就帮我个忙吧……小明很无奈,小明很无语。
有兴趣可以看看《一个关于大神的悲惨故事》 http://www.paincker.com/a-sad-story
提问的时机不合适
大神心情不好、身体不舒服、没上QQ或者用的是手机QQ不方便、没有灵感、或者正在考虑别的问题,这些情况下,你提的问题尤其是需要灵感的问题,都有可能得不到好的回答。另外,大神的作息往往比较特别,例如不少程序员喜欢熬夜,到晚上思维可能会比较活跃,当然这个因人而异。
可能是大神整体情商偏低,而问题又很复杂,有时候没灵感,不好用语言表达。或者满脑子技术问题,那些自然语言处理的数据被暂时转存到后台了,一下子调不出来。想想你写了很久的数学作业,突然问你文言文是什么感觉;或是让你一句普通话一句方言来回切换,也比较困难。此时你的问题可能得不到回答,尤其是非技术但又需要大神回答的问题(例如人生理想什么的)。
看似简单的问题不简单
有的人很认真的花了很长时间做了一个东西,比如很复杂的电路,或者很长的程序,然后发现不工作。检查了一下没找到问题,就直接复制出全部代码给别人一发,然后表现的极其可怜的样子,跪求大神帮忙。
提问者往往认为,对于大神来说,这点代码岂不是一眼就能看出问题来么?但是事实上,这种检查故障的问题,往往比写程序、做电路难,做一个同样功能的东西往往都更简单,因为找错的过程很容易被错误的想法误导。尤其是电路,往往根本不是网上聊一聊,就能愉快解决问题的。
举两个例子。
1、大一的时候学C语言,小明学的不错,大作业很快都做出来了。一个舍友让帮忙找错,小明看了很久也没找到问题,最后终于才发现,原来舍友把分号写成了中文分号,但是屏幕上显示的,根本看不出来。解决这个问题花了半个小时,而小明自己做这道题时只用了几分钟。
2、有个初学者做的电路出问题了,LED闪灯常亮但是不闪烁。然后有个同样是初学者说了句,是不是三极管接反了,因为他(她)有同样的经历。竟然真的是这样,问题这么轻松的解决了。
但是在此之前,这个人可能也问过所谓的大神。大神一想,最常见的原因肯定是电路错了或者没焊好,又或者从电路原理,根据现象来彻底的分析了一遍,但是发现模拟电路基础不够牢,最后没有得出结论(LED闪灯电路很简单,制作起来相当容易,连一些大一的同学都看不上。但是原理很难懂,自己设计电路更难)。大神考虑问题更加全面复杂。
这个时候,提问者可能会想,原来所谓的大神也不过如此。真相就是这样的,大神也有很多不懂的问题,没有亲自做过这个电路;如果做基本上不会出问题,因为该注意的问题他在潜意识里就知道;但是检查别人的问题却如此困难。因为你永远不知道自己到底学了哪些东西,并把它们都倒出来,就像你不能逐个列举你所知道的每个单词一样。
最后的结论就是,维修电路、程序的这种问题,即使大神也不一定会回答。除非你的程序确实很短而对方恰好很了解,比如printf的参数不对,一眼看出来了,那就不是难题了。又或者是由于关系很好、心情很好、你表现的很真诚、大神恰好有灵感等。
你可能听过一个故事,一个硬件工程师,在一个电路上画了一条线,拿到了几百万。看到这里或许你就明白,画出那条线的工程师是有多了不起了,绝非想象的那么简单。
原故事可点此链接:http://www.paincker.com/steinmetz
不简单的问题如何解决
遇到这种问题没人帮忙应该怎么办呢?我认为还是应该独立解决问题。至于如何解决问题,这就是一个很复杂的课题了,也是很考验智商的,锻炼的好机会。很多时候解决一个问题并不一定能马上想到,可能睡觉的时候突然有了灵感然后想明白,可能绝望的看网上的资料突然就想明白了。甚至还有做梦的时候想明白问题的例子,例如化学史上苯环的发现。
解决程序和电路故障的一种有效方法是,分模块实现、分模块检查。一个大的系统,分成了一个个的小模块,每个模块相对简单很多,分别实现并检查每个模块,每个模块都没有问题了,整个系统基本上也就没有问题了。
现实有时很残酷
有的人,程序调试了两个小时找不出来问题就崩溃了,觉得自己已经很努力了。但是有时候一个问题可能需要很久才能解决,甚至很多问题你都不知道它有没有答案,但是不得不硬着头皮去摸索。能坚持到什么地步,也是体现人与人之间差距的重要一点。有兴趣可以看一下这篇文章,看一下我如何解决了一个头疼的难题。
《安卓使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)》 http://www.paincker.com/android-key-simulation
现实有时就是这样的,尤其是科研问题,探索未知,有些科学家可能一辈子都没能研究出什么成果。还是前面说的,最有价值的知识,往往都是原创性的,没有人能指导你。