最近关于编程的一些反思
关于技术大牛
很火的一般不是大牛。因为如果要很火,就需要时间去营销。而营销能力与技术能力是正交的,如果一个人把很多时间放在营销上,就很难有时间放在技术提高上。不要因为他讲一个你不懂的领域而认为他是大牛,一个住在沙漠里的人听到任何一个看过海的人的描述都可以令他兴奋万分,但如果别人告诉他骆驼有六只脚,他肯定会嗤之以鼻。大牛对他熟悉的领域会说得很详细,对他不熟悉的领域也会问正确的问题。
关于学习新知识
学习一件新技能最好需要深度的理解。但是在现在各种框架各种类库都需要接触的时代。想要真正的理解所有的库是很难做到的。假设你在学习 python,如果说真正理解 print 语句,就要知道 python 的语法解析器,C语言的调用,然后是 IO 系统。这对大多数人来说是不可能的,大多数人都是靠记忆的。另一方面,如果学习 python 时候需要做 socket 请求,而你对 java 的 socket 实现很熟悉,也会很快得学会 python 的 socket 使用。总结下来,有两种快捷学习新知识的模式,一是有很强的记忆力,二是对于基本知识的了解很深入。
关于注意力。
如果做的是机械的事情,只要依靠人的惯性就行了。如果做的是创造性的劳动,就需要很强的注意力。而注意力是一种易耗品,在一个问题上纠结时间太长注意力就会低下,导致效率低且更容易犯错误。这个时候可以休息以下。让思维冷静一下。提高注意力可以在短时间内做更多的事情,这样就有时间生活而不只是工作。
关于反馈
技术交流中,别人不反对你,不代表认同你,也许知识懒得跟你讲。你错了,别人不一定跟你讲,可能只是不好意思打击你,所有获得别人的真正想法很重要。
关于反思
应该经常问自己做当前事情的意义是什么。当前做这件事情的意义是什么。这样做有两个好处,一是明白意义后更愿意去做。二是如果可以及时发现错误,然后改正。
关于大局观
解决一个问题,首先应该搞清楚你有哪些资源,有哪些解决方法,预估各种解决方法的时间。而不是立即实施想到的第一个方法。就像广度搜索雨与深度搜索的关系。如果只用一种方法做,效率可能会很慢。如果一开始的直觉是错误的,会让你解决方法越来越远。