大家好,我是伟伟。前几天知乎给我发了个问题,我点进去看看,好家伙,我的血压怎么了?让我先重复这个问题。聊天记录比较长,但是看书过程中容易冲动,注意控制情绪:最后提问者还是说:顺便分析一下我的思路?他是什么样的人?不忍直视怎么样,看完有什么感想?反正我看完后说“看不下去”。甚至一度怀疑师傅是不是在徒弟手上有什么绝招?这是一段错位感非常强的对话,而我觉得造成错位感的原因是两个人的认知不同。Master,一个在职场打拼的大厂程序员。学徒,一个准备踏入职场的普通菜鸟。这位师傅一直提的是:interview、job、offer……这位徒弟一直提的是:原理、底层、细节……如果这个徒弟学编程知识纯粹是为了兴趣,学着玩,他不不想靠这个东西谋生,只想学习研究什么是编程。那就好,徒弟还好,是值得鼓励的学院派。但是从这两句话来看,我猜测这位学徒学习编程不是单纯的爱好,而是想找份工作,进入程序员的行列:基于“想去面试”的提前,他的问题:请问各位程序员,我的思路是不是错了?有问题,而且是相当大的问题!不仅思维方式有问题,整个对话方式也有问题,给人一??种情商需要提高的感觉。我不想批评他,我只是想根据他的问题分享我自己的看法。思考方式先讲一个我大学时代的故事。我大学的专业是计算机科学,这个专业是学模拟电路的。但是那一年,我把这门课学的一塌糊涂,老师的课我也听不懂,觉得这东西太难了。不知不觉,已经是年底了,又到了考试的时间。考试前,我下载了一整套模拟电子相关的视频。在图书馆啃了一个月,跌跌撞撞,临近期末终于看完了这组视频。那一个月,我感动得不得了:这么难的东西,我居然啃下来了。在学习的路上,我怕自己误入歧途,感动自己。最后还是去考试了,发现大家都考得很好。因为大部分的考题都是书上的课后习题,所以大家要花一周的时间重点在课后习题上。后来回想起来,觉得自己在图书馆看一个月前的电视录像,简直是在浪费时间,太愚蠢了。我完全把时间花在了错误的地方。记得当时看视频的时候,有一些比较难的部分,我也不是很理解。看了一遍又一遍,又查阅了其他资料,到头来还是一点也看不懂。现在想想都后悔。明明一个星期就可以搞个奇袭,却傻傻地度过了宝贵的一个月,期间学习起来非常难受。如果以我现在的理解回到大学,肯定会发现当时在图书馆啃模拟电路视频的自己。上去就直接打了我两巴掌:这件事大家一起回顾一下吧。首先,我看模拟电子学的初衷只是为了期末考试,不挂科就好了。其次,期末考试的时间是固定的,所以我的时间很有限,属于我的资源。最后整个过程都是我一个人,甚至没人知道我每天早晚都去图书馆,相当一部分时间都在看模拟电影。结果你也知道,这样的投入产出比是很小的。这种情况其实有点像问问题的徒弟:首先他学习这些东西的目的是为了进入程序员这个行业,只要能通过面试就可以了。其次,就算他把时间线延长到一两年,毕竟时间有限。但是他比我厉害的是,有一个高手,一个经历过的人,告诉他:别看这个东西,对你没有多大好处,去征服其他对你更有价值的东西现在。.就像我说的,有人在我看模组的时候过来打了我一巴掌,说:你花一个月的时间看这东西,还不如花点时间敲几行代码。我也算是醒过来了,可是,不行。那时候我还处在一个陌生的圈子里,看到不懂的地方就去拐弯抹角,想试试那些额外难的题。研究“茴香”的几种不同写法。这就是不分先后的表现。能够分清轻重缓急是一件非常非常非常重要的事情!这徒弟好像也和我一样落入了怪圈,只是他自己还不知道。但他比我更严重的是,当有人给他指路时,他并不觉得自己坚持的是对的。让我再举一个我之前读过的书中的例子。如果你是从事Java开发的,那你一定知道有一本书叫《深入理解Java虚拟机》。第一次看这本书的时候是2016年国庆节,那时候我才毕业3个月,JVM相关的知识储备为0。但我知道这是一本很好的书时间,所以我用了那年整个国庆节的时间,一页一页的翻着这本书,光是看着就没有看完。仔细阅读并做笔记的那种。书前几章的例子,我什至在电脑上敲了敲,跑上去一看。但全文看完,有种“云里雾里”的感觉,合上书什么都不记得了。好在当时知道是比较低级的东西,所以目的只是通读一下,并没有勉强自己学太多。如果,那个时候,我要求自己把这本书看透,那就是投入产出比很低的另一回事了。可以利用这段时间去学习一些当时不懂但工作中用到的框架,比如Dubbo、Spring、MyBatis等,这样性价比会高很多。当时我能想到时间的“性价比”,完全是因为我之前举的模拟电子的例子给我带来的思考。踩过坑,受过教育,以后再遇到类似情况,就知道要避免了。虽然当时吸收的不多,但是有了一些编程经验之后,比如两年后,再看《深入理解Java虚拟机》,发现可以吸收很多东西。我以前写过很多关于这本书的文章。假设,如果我第一次看的时候就被下面这篇文章描述的问题深深吸引,然后花很多时间去弄明白是什么,那真的说不通:《深入理解Java虚拟机》第2版挖的坑终于在3版被R大给填上了,也就是说我是被这个地方的代码给吸引了,所以要研究为什么运行结果不一样,没有意义:《这个Bug的排查之路,真的太有趣了》当时就去研究三色标记,内存集,卡表,读写屏障,jit...这些东西没什么意义。因为这不是一个工作经验不到一年的程序员应该掌握的东西。掌握不了也很正常。如果你掌握了,说明你很牛逼,可以做附加题了。这个例子我想表达的是:学习的顺序也是一件非常非常非常重要的事情!读书可以挖角,但别忘了你是“学生”,挖角是“学者”才有的本事。所以别忘了,你问问题的时候说自己是“前端初学者”,研究底层原理是只有“中高级程序员”才能做的事情。我不是说你不值得去研究“原理、底层、细节”这些东西,只是我觉得你的投入产出比太小了,可以说是可以忽略不计。而且你的研究路径从学习顺序上看也不太对。如果真想了解底层的东西,还是认真的看本科四年吧。与专业课程相关的课程应按此顺序学习。只有这样,才有可能让“追根究底的道路”走得更顺畅一些。我个人的学习体会是,如果在掌握全局之前过于追求细节,会影响掌握全局的进度。而如果不能尽快把握大局,追求的细节就如同师父所说:对于一个想入行但还没有入行的程序员来说,时间已经是一个相对资源紧张。本来好好利用这个资源,面试可以拿60多分,但是因为资源分配不合理,一上来就得强加原则。结果并不理想。即使有人提醒您,您仍然没有得到事情的优先级。对于某项任务,谈不上最大限度地利用资源。这里说的任务就是通过面试。资源之一是“时间”。如果你真的是一个程序员,很可能在一个任务即将被测试的时候,这个任务还没有完成,因为你把大部分时间都花在了研究如何把这几行代码写得更优雅。我认为优秀的实用程序员的职业素养之一就是不断在有限的开发时间和优雅的代码实现之间寻找平衡点。总之,提问者可能还是学生思维。学生时代,经常做手头的一件事,没有分清事情轻重缓急的能力。当你自己没有的时候,你可以问问有的人。如果你手头有很多任务,而你并不知道那个任务的优先级高,那么明智的做法是尽快询问分配任务给你的同事,然后告诉他:有多少我现在手头有什么任务?两个任务有冲突,请帮我拍一张优先级,我有点拿不定主意。先做紧急的事情。不要一次只做一件事。情商我在知乎上回答这个问题的时候提到过这个:为什么他这段对话会让人血压升高。截了几个地方,但首先就是听不进去劝说:人家话都说到这个地步了,还说,还说,还说!在学习的路上,你会遇到无数这样的小问题。如果非要跟他们一个一个打,那就加油,别学了,当运动员,国家一级运动员。另外,我知道你在后端问的问题,我可以通过浏览器搜索轻松找到答案。没有一点面向浏览器编程的意识,一个老师怎么能让你胸有成竹地踏上社会。还有我执,那种傲慢自大,从不被打败的我执。请将这句话替换为:我认为这可能会更好。这句话可以换成:我之前可能没有和你谈过,但我其实是一个比较喜欢追求原则的人,所以会比较纠结一点。这句话可以换成……算了,换成什么都觉得不对,没希望了,多看看相关的书,然后多练习。以下都是治疗低血压的良药:如果你把这种性格,这种对话带进职场,相信我,来自社会的毒打来得又快又狠,你根本看不出来是谁干的它和你摔倒了。还有,“快”和“准”是两个字:另外,徒弟在回复别人的时候,提到自己给钱:钱是物有所值的,但是师傅的作用其实和师傅的作用是一样的大学老师目标是带你到门口。至于能不能走进门内,就看你自己的天命了。并不总是用来回答您的技术问题。相比于提高自己的编程能力,我个人认为还应该学会如何待人接物。您可以在上网时多加注意这些信息。进入职场后,代码不复杂,复杂的是人。你可以调试代码,但人与人之间是分开的。最后送上一张图,建议大家拿出来仔细观看:本文已收录在我的个人博客中,欢迎大家来玩:https://www.whywhy.vip/
