技术思想与技术细节

一本《算法导论》看了七年,这曾是我自豪的,也是我现在困惑的。 我花了那么多时间在算法,可是无论是上课或是工作,考研或是面试,都看不到它的价值。 要说学它没用,又似乎每次面试都比较顺利,为什么呢?

为什么学了那么久的算法,却从未感觉它给我带来什么实际的价值? 其实,我从来没有真正学会过算法。 且不说算法的博大精深,千变万化。即使一本《算法导论》,也只是学习了其中几章中的几个基础算法,离学会还差得远。 即使是基础算法,也有那么多晦涩难懂的细节,看了也记不住,记住了也会忘。 就算真的记住了,也只是基础算法,在实际的使用中,也是要根据现实环境做调整,不可能直接用的。 于是不禁困惑,我的付出有什么意义?

今天,这个问题,我突然找到了答案。 虽然我学的是算法细节,但我最终收获的是算法思想。 不只是算法,所有的技术都是这样的。 我们学的是技术细节,是为了理解藏在其中的技术思想,然后使用这些思想去创造更多的技术。

除非我们工作中真的要用到那些技术,否则记住那么多技术细节也是没用的。 我们并不需要知道那些技术细节,因为技术细节只是一些特定的场合才能使用。 我们需要的是技术思想,这样,不管遇到什么问题,都能知道怎么解决。

我们需要的只是技术思想,却不得不去学习那么技术细节。 技术思想需要通过技术细节来承载,离开了技术细节,技术思想只是一堆“假大空”。 我们需要通过技术细节来感受技术思想,如果走捷径,跳过技术细节直接去理解技术思想,也很难理解到思想的精髓。

品味细节,但不拘泥于细节。以理解技术思想为目的去学习技术细节。 我们在学习技术细节时,在理解技术细节之余,尽可能地多想想“为什么”。 有意识地去挖掘,这一技术细节是反映了怎样的技术思想。

这样想来,我的算法学习,已经退化成为了学习而学习。 只是知道了技术细节,却没有想过它背后的思想,看来我的算法是白学了。 幸好,付出了总是会有收获的。 即使我没有想过要去理解算法思想,但是长期的耳濡目染,在我自己都感觉不到的情况下,思想已经悄悄地被影响。 也许我能顺利地通过面试,正是这种思想在悄悄地帮我。

总结: 学习技术细节是为了理解技术思想。 单纯以学习为目的的学习,也是能有收获的。 若能有意识地以理解技术思想为目的的学习,收获会更多。