607
社区成员




书的第三章的标题是 软件工程师的成长,其中在讲到其职业发展的时候,提到了一些软件工程师的职业资格考级,我想这一类的考试还是比价注重理论方面的知识的,如果是在以前,我会很赞同这类的测试,那时候我的想法是一个优秀的软件工程师无论是理论还是实践方面都是必须要精通的。
但是前不久,我看了保罗·格雷厄姆写的一本书《黑客与画家》,其中有一段话引起了我的注意:
人们无法考核你的工作,甚至误解你的工作,都不是最糟的事,更大的危险是你自己也会误解自己的工作。因为你总是从相关领域寻找新思想,如果你发现自己读的是计算机科学系,很自然地,你就会以为“计算机科学”与其他“理论科学”并无不同,你的工作属于“理论计算机科学”所涉及的那种理论的应用研究。读研究生期间,我的潜意识里一直有一种很不舒服的感觉,觉得自己应该多学一点理论,不应该期末考试结束还不到三个星期,就把所有东西忘得一干二净,那样真是不可饶恕。
现在,我意识到自己错了。黑客搞懂计算理论的必要性,与画家搞懂颜料化学成分的必要性差不多大。一般来说,在理论上,你需要知道如何计算“时间复杂度”和“空间复杂度”;如果你要写一个解析器,可能还需要知道状态机的概念;除此之外,并不需要知道特别多的理论。这些可比画家必须记住的颜料成分少很多。
这一段话看起来是在说我们在理论的方面并不需要掌握过多的相关知识,像上面提到的计算机等级考试,现在似乎也不乏为考证而考证,考完以后没过多久就将这类的知识忘得干净,又或者是,在学完了这些理论知识后很久的一段时间都用不上,那么学习那么多的理论知识还有没有用呢,在理论知识和实践知识的方面我们又该怎么权衡呢?
"书到用时方恨少",大学期间可能是唯一一段能沉心下来读书的时间。诚然,学习与工作不是一回事。大学注重的是知识体系的完备,重理论,轻实践;工作注重的是多快好省地解决问题,重实践,轻理论。所以对于浩如烟海的理论知识,我们应当有所取舍,对于重点理论,理论的重点部分进行更多的实践辅助。与此同时为了与工作做到更好的接轨,也需要在闲暇时间多掌握一些实践技能。
这是学习积累和实用性的匹配问题。第一,知识不等于技能。技能不是生搬硬套知识,能背出一本书,但无法没有正确下判断和在具体问题面前运用所学,就造成了工作障碍。第二,跨行业能力和具体技能的冲突。我认为学习理论知识要有重心,对于重心中的理论,付诸实践巩固。
原文地址:https://bbs.csdn.net/topics/613257662