不会搜索、不会调试、不会提问,你真的会编程吗?
作者: 姜磺
公众号【林间有风】
今天我想聊聊提问以及自我思考的问题。
苏格拉底那个老头说,“人类最高级的智慧就是向自己或向别人提问”。但对于绝大多数人,却只有一半智慧。我们太容易认为提问就是向”别人“提问,而不曾想过向自己提问。这个惯性太过于强大,让我们总是不假思索的求助于他人,但可曾想过,是不是可以先向自己提提问?
我补充下苏格拉底的这句话,向他人提问是求助,但向自己提问,我觉得可以称作思考。只从字面意思来看,求助怎么也不如思考那么酷,对吧。
我想说的是,对于提问,要慎重,因为它太容易让人“上瘾”,让人产生依赖的心里。而不经过思考的提问很容易曝露出自己的缺点,甚至是让人丧失了思考的能力,而这,是最可怕的事情。
提问这事儿,我觉得讲师是很有发言权的,我工作日平均每天要回答超过40个问题;周末少点,大抵平均下来也有20个。2年多下来,问题总数也差不多回答有小一万了。
这其中,描述不清楚或是不知道在说什么的问题约占30%;通过搜索引擎能够解决的问题大概在30%;通过调试能够解决的问题有90%。
如果以一个技术人的眼光看待这些问题,我认为符合”问题“标准的”问题“可能还不到10%。
看看下面这些问题:
看不懂。
看不懂。
不是我不想回答,是我真的不知道怎么回答。
还有看下面的代码找错误:
史诗难度的”大家来找茬“游戏。
用眼睛看上面的代码找出问题的概率我觉得挺小的,一段封闭的代码也许能“看“出问题来。但一个项目型的代码,基本不可能通过”看代码“找出问题来。
写上面这句话时,我心里挺忐忑的。作为一个讲师,我深刻认识到这个行业是一个服务性行业,那么”顾客就是爸爸”这个道理,在我心里还是和明镜一样的。
所以,无论是什么样的问题,也不管能不能解决,我都有责任回复你。但回复不代表就能解决问题,因为问题在你描述时就已经注定他是无法解答的。我需要引导你继续详细描述问题。最长的来往沟通记录是三十多条,耗时一周时间。
浪费时间是小事儿,不经过思考分析,非常随意的提出问题,这将导致思考能力的丧失和严重的心里依赖。
老师,老师,既然你们称我一声”七月老师“,那我觉得,我有必要把这个问题明示一下,也算对得起这个称谓。
我做我该做的,说我该说的,尽我该尽的,如果下面这些文字让你觉得我是在推卸责任不想回答问题或者刺痛到了你,要不你反思一下,要不我向你道歉,因为毕竟你们是老板。但如果我碍于担心你不再买我的课,而不敢指出这些问题,那倒是我这个老师没做好了。
古人云:严师才能出高徒。古代私塾里,背不好书,先生还要对着你的手打几下板子。 我说了两句大家不爱听的,也别玻璃心吧。我从来不信奉佛系管理,错了就是错,对就是对;做的好就是好,做的不好就该说。对事不对人,是我一向的准则。教育也是一样,社会竞争那么残酷,谁在意弱小和眼泪?
先说声,”对不起“。
然后是狠话: 不愿思考,不肯调试,不会搜索,你必定在技术路上走不远,甚至在未来人生路上你都会走的很艰难,还不如早点换个行业吧。
一段代码,明明新建一个文件,复制进去,运行一下就能知道答案,你确要花费几个小时等待老师帮你把代码复制进去运行一下,然后把答案告诉你; 一个问题,明明打开搜索引擎,搜索就能知道很详细的答案,你还是要等几个小时,让老师帮你搜索,然后贴给你链接; 一段代码,报了undefined,明明断点调试就能分析出来问题,你却要贴上百行代码,让老师用肉眼帮你找问题,关键是我看了半小时,还不一定能找出问题来。
长久如此,你学到的其实只是皮毛,根本不算会编程。今天我教你画了个鸡蛋,下次换个梨子你就不会画了,那到底学习有什么用呢?
如何叫做会编程?我认为,什么时候你学会了自我思考问题,就算会编程了。或者,更简单点,你能够自己解决问题或者能够提出有水平的问题,才算会编程。
更残酷点来讲,不具备自我解决问题的能力,编程这口饭,你吃不了。
有经验的开发者应该都有这样的体会,看书也好,看教程也好,都不是编程主要的学习场景,真正能够让你提高的是遇到问题后自我解决问题的过程以及对问题的关联思考。在这个过程中,你不仅锻炼了你的思考能力,还能让你触类旁通的学习到很多知识的相关或者是附属知识点。这些零碎的附属知识能够帮你去织出一个知识网,解决的问题越多,这个网络就越密集,你的编程水平就越高。
我一再强调,编程不是考试,只看书是不行的,因为编程的知识密度实在是太大了,根本不是一本书或者十本书,一个教程十个教程能够覆盖全部知识点的。很多细小的知识和技巧,都是通过实践来学习的。
实践就是做项目?不是,实践是在做项目、写代码的过程中解决问题。如果你做一个项目,到处求人解决问题,而不是自我思考,那你这个项目白做了,或者说,收益太小。 如果不是为了工作,那这项目还不如不做。
不少同学总是认为,很多问题太难,自己是新手无法解决。但谁不是从新手过来的,我们必须要承认,很多时候,不是因为问题太难,也不是因为我们基础不好,而是因为我们的惰性、顺从心里、不够自信的心里还有急于求成的心里让我们潜意识里想逃避问题,而求助于他人。
有些问题由于过于抽象,所以搜索引擎不一定能够直接找到答案,这会造成我们思考成本的上升。这样的问题,确实有必要求助于有经验的开发者来节约自己的时间。
但代码报错的问题,其实根本就不是问题。 所有因为代码报错而求助于人的行为都充分曝露了人的惰性。特别是在搜索已成为基本工具的互联网时代。
提问区里80%的问题,都是单词拼写错误,大小写不对,少写了代码或者多写了代码。 这样的问题不可能自己解决不了,提问无非是没有养成思考的习惯。这样的问题寻求帮助,毫无疑问是自己在逃避问题。
高达80%的比例,让我挺为同学们担忧的。如果这样的问题都不能自我分析解决,咱们以后拿什么去竞争?编程技术是学不完的,你必须养成自我思考和分析问题的能力,才能在这残酷的竞争中谋得一席之地。这是生存的最基本要求,不是最高要求。
一方面是人的惰性和不自信,让人丧失了思考的能力;另一方面,没有任何成本的提问也加重了这种情况。
慕课的问答服务是一种附属服务,不是增值服务。服务期限无限期,提问条数无限制,不收取任何增值费用。经常有同学,一边看视频一边随手提问题,1个小时内能提多达10条的问题。这谁顶得住啊。但假如,一个问题,需要1000块钱才有人回答,你会这么轻易的提问吗?
一般人都不会,你肯定会试着先自己思考解决一下。求助成本越低,越容易有依赖心里,越容易不做任何思考的去提问,越发失去了思辨的能力。
免费无限制的问答是一种很好的福利,而且慕课对老师的要求也是凡是问题,都必须回答,哪怕这个问题无法回答,你也必须回复。但不要因为它是没有成本的,就完全放弃了自我思考,严重依赖问答。
我真心希望,我和你能一起构建一些经典的、有价值的问题。试试自己解决问题,你会发现新的洞天桃源。
另外,没有经过思考的问题,太容易曝露出人的缺点,没有水平的问题会直接让你被打上某种标签,或者被划归到某一类人群里。
课程提问区里,你怎么提都无所谓,毕竟我不是你老板,也不是你同事、更不是对你很重要的人,我对你是什么看法都对你没有影响。但是,在你日常生活和工作中,可就不一样了。
当你向你的同事、老板提出了一个毫无逻辑,甚至是搜一下就能知道答案的问题,同事可能会很嫌弃的回答了你的问题,给你打上一个”弱者“的标签;老板可能从此就认为你这个人不行,给你打上了一个“没脑子”的标签,将你划分到“没发展前景”的一类人群里。人总是这样,喜欢给别人打标签,你不能怪别人,因为你也会给别人打标签。
这个社会竞争是残酷的,有限的资源总是更加容易向那些独立的、自信的、有个人魅力的人倾斜。然而,不思考就发问这恰恰曝露出了不独立、不自信的缺点,非常有损自身的个人魅力。
不是不能提问,但必须要自己先思考,问出有质量和有深度的问题来。提问不丢人,但根本不思考就随口提出问题肯定是对你毫无好处的。
思考的深度决定了你在这个社会的地位。
最后,我想将思考的魅力再放大一些,不仅仅局限于世俗,我们将思考放大到精神层面。
尼采说过:从根上说,只有独立思考才是一个人真正的灵魂。而王小波也总是把思考当做人生最大的乐趣,他在杂文《思维的乐趣》中引用罗素的名言:须知参差多态,乃是幸福的本源 。而形成这种参差多态的正是因为人的思维。如果剥夺了王小波这种思考的权力,他会觉得比死还难受。
王小波是个很纯粹的人,在他看来,甚至是思维都应该是纯粹而不加功利的。他的意思是,思考本身就能给人带来无穷的乐趣,不需要附加额外的利益和好处。他是高尚的,不在意思考给他带来的俗世利益。但他从来,也不应该否认思考给人带来的好处:如果王小波不思考,他能写出天马行空又极具逻辑、黑色幽默的文字吗?他写不出这样的文字,你知道谁是王小波吗?
幽默的人从来都不是简单的人,有趣的人更是一个善于思考的人。
我们没有他那么高尚,既然思考能够带来巨额的收益,你为什么要拒绝思考?
他思考,而我们拒绝思考;所以他是王小波,而我们只能挣扎着度日。
话都说到这个份儿上了,你编程时遇到问题还不先自己认真思考一下,那我真的不知道说点什么好了。
你说呢?
另外,我课程的问答区,不限制问题的类型,也不管是不是和课程相关的问题,只要是有价值的问题,只要是经过你深度思考的问题,都可以。
你想聊游戏、电影、文学也完全没问题,谁让你是老板呢?
我是一个非典型的程序员,总想把技术和艺术搞在一起,结果就是技术很菜,艺术也不入流。虽然菜,但也总有几分独到的见解。我不跟风,不从众,所言所语虽非真谛,但皆是真情。公众号非典型技术号,除技术分享外,电影、读书、人文、科技皆可能涉及。万千世界,为何只独居一隅?代码是生存,但不是生活。
如果我的文字可以帮助到或是可以让你明悟,甚至仅仅只是博君一笑,都希望你能关注我、为文章点赞,谢谢你~