学用结合——回复一位在工作中补基础的工程师

【前言】
  一直有联系的一位职场新人发来他近日的工作、学习感想。很真实,真实也让我学到不少。在回信中,是在回应他的问题,也在说我的事情。
  和以往不同,先晒回信,再登原信。

【迂者回复】
  抱歉,现在不常看邮件,今天才看到。
  你说得老毛病,看得我也后背发凉,何尝不也是我的呢?生而为人,本性中有的,我们要接受。也只有接受,再加上时有觉察,才是真实逐渐改变要走过的路。所以,当有这个觉察之时,向着未来真心欢喜,而不是回到过去自责。
  学习可以是快乐的,前提是,需要我们选择快乐的方向。向着想要的那个样子前行,发觉偏了,就感激这一刻的觉察,让自己再回轨道。有时候,原先设置的轨道有些歪,校正一下轨道也是可能的。
  你这段时间”系统地“学算法是需要的,但在工作的同时学习,只要做到在工作中有意识地用,联系总会来,不要着急。再者,越是底层的东西,常了用了而不知。比如,一位老司机,一边神吹,一边熟练的开车,他会想什么时候踩了离合,什么时候打了转向吗?这点上完全不用自责。
  在学习过程中,遗忘很正常。在学习的初期,”为学而学“是可以接受的,因为你真的没有太多的背景可以联系上。这也就不要寄希望于对一个知识点,一下子就搞通了。不仅不现实,深层讲,这不合乎认知规律。一遍过去了,认真地学,以当前的理解功力,达到什么程度算什么程度,再有机会回头看,功力已经长进,视野已经开扩了,方法已经精进了,回头看就又牵出更大的空间。
  就回复这些,每天充实度过,这就是好的。若是更多是清楚地充实度过,那只是更好。
  
【来信】
  贺老师好,近日又解决了自己一个非常大的问题,持续前进中。
  1.老毛病又犯了,脑子又开始胡思乱想了,排了那么多要学的东西,脑子里就每一个清晰的排期和计划吗,也没有阶段性的目标吗,为啥不能持续地平稳地徐行。计划、排期、目标也是模模糊糊的,有时候是想到什么学什么,很容易被打乱计划或者是偏离初始的问题。如何改变现状呢。
目标、方向、计划,需要详细的,就像程序般详细精密。一份付出,一分收获,不要假装爱学习,这样骗的了别人,骗不了自己。不要时不时地回到以前的状态,吃亏的是自己,扎扎实实地徐行,给自己制定清晰可执行的目标和计划。
  2.贺老师的话:“着手去写,写出一个,就会有第二个,写不出,由简到难,坚持写下去。积累够一百行,就是到一千行的基础和希望所在,到了一千行,在想一万行,这时候已经是海阔天空了。制定目标和计划也是一样,尝试着按这种方式去做。思维方式可以在更高的层面上知道我们学知识、用知识,这是我们再进一步应万变的基础。不过,也要看出,所谓思维方式也是在学知识过程中逐渐形成的,所以不要忽略在思维方式形成过程中知识的积累,要更加注重在学习过程中多问一些为什么,多找一些资料,发现这些知识是怎么来的,这样会让你学得更好,学到更真的知识,得到能用得上的技能。”
  以前以为只要有思维就能够战胜一切,就是非常牛逼的,完全忽视了知识的积累。思维是在知识积累的过程中形成的,而不是以前自己的那套凭空想出来的很空很虚的东西。
  3.数据结构是一种数学模型,解决非数值计算问题,数值计算问题用数学方程式解决。数据结构可以用ADT(抽象数据类型)描述,ADT是指一个数学模型(数据结构)已经定义在该模型上的一组操作。
  所以ADT算是数据结构+算法。程序=数据结构+算法。
  4.但在抽象数据类型定义的13种操作中,串赋值StrAssign、串复制StrCopy、串比较StrCompare、求串长StrLength、串联接Concat以及求子串SubString等6种操作构成串类型的最小操作子集。在看jdk源码的时候也会发现,很多函数都是调用最小操作子集的函数实现的。这是一种思想,以后自己写代码的时候也要注意,去构建最小操作子集,函数累加。
去构建自己熟知的最小操作集,这样遇到问题就从这个集合里去寻找并组合。
  5.知识迁移、举一反三的能力不行,上面学完的连贯性的东西下面不知道去用,比如今天学数据结构中的串,上面学完了Index(S,T,pos)算法(应该是串的匹配),下面接着是replace(String& S, String T, String V)算法,下面的这个算法用到了上面刚学完的算法,很方便,这就是不停的构建累加最小操作集,然后使用的例子。但是自己却完全没有想过去用,没有觉察到一丝一毫的联系,而是去用了最笨的方法,一个一个的去往后递推,非常low。这是自己实践中一直存在的又一个很大的问题,学过的东西不知道动脑子主动用上,过一段就忘了,很多东西都是学过跟没学过一样,一遍又一遍的。以前总是耍小聪明,贪多求快,脑子里只是有个模模糊糊的印象,就认为自己很懂了,要彻底地改变这种模式,多实践,实践才能发现更多的问题。原因:上一个例子没有彻底想明白,只是把例子看懂了,能把例子写出来了,但是却没有想例子的使用场景,核心是什么,都能解决什么问题,变形一下又能解决什么问题。只是为了学而学,而不是学以致用,举一反三。
  6.工作中也是不求进取,不想着去优化代码,只是在用api实现业务流程,而且是很low的api。重视基础和细节。
  7.同时,对觉察自己也不能模模糊糊,也要步骤清晰,展现细节。把这些状况定义好,出现这种问题应该怎么办,装在脑子里,出现的时候要能够马上去解决。
  8.学习的目的是什么?想过吗?不能学完就完了,到底学的咋样自己知道吗?既然搭时间进去了,想过如何做的更好吗?
  9.算法为啥精妙?因为每一步都很重要,方方面面都要考虑到,一个值变化了要考虑联动效应。
  10.看经分项目前后端交互的时候,感觉前端很复杂,很冗长,看不下去,看的时候也晕晕的,在这种情况下还想一下子看懂,短时间内看懂,而且自己没这方面的基础,所以不可行,不科学,这样只会让自己一遍又一遍匆忙的看,看一遍看一遍却没有效果,只会让自己更加慌张,无所适从。这是自己学很多陌生东西的模式。慌乱、乱撞、没有成效。一步一步来,一口吃不了胖子,把压力分摊,给自己定短时间的小目标,把大任务切割成小任务,今天就只看一个页面,不要看其他的,只要把柱形图看懂就行,其他的都不要想,不要管。慢一点,把之前的积累涌上来,步步为营。不要不看、不想、不思考,就像搞懂,谁也没那么神。
  study then and how to use。—尝试了一天,效果不错
  11.上班的时间工作,看项目。周末和晚上才能看算法。学东西抓本质的话,其实就没多少东西了,抓住核心了才能去发散,凡事皆如此。—慢慢有感觉了。
  12.多实践,多发现问题,多解决问题。把学和用紧密联系起来。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读