我们学校有一位客座讲师,他对即将毕业但未达到他期望的技能水平的人进行正切。熟悉一种大型编译语言(如Java,C ++或C#),一种脚本语言(如Python或Ruby),一种Web框架。你们认为还有哪些其他技能对毕业的学生绝对至关重要?
我们学校有一位客座讲师,他对即将毕业但未达到他期望的技能水平的人进行正切。熟悉一种大型编译语言(如Java,C ++或C#),一种脚本语言(如Python或Ruby),一种Web框架。你们认为还有哪些其他技能对毕业的学生绝对至关重要?
Answers:
应届毕业生不仅需要学习的欲望,还需要对学习的痴迷,对学习方法的理解以及对软件现实的牢固了解。我通常不在乎您知道什么语言,但是每位大三学生都必须:
了解历史。计算机科学是一个经过充分研究的领域,存在许多已解决的问题。知道这一事实为您学习之前的事物打开了大门。即使知道拥有丰富的历史可以从中挖掘知识,也比许多毕业生graduate不休。其中包括诸如big-O表示法,算法历史,先知原则(Knuth,K&R,Hofstdater等)以及公认的实践和模式。
知道可以解决。当开发人员遇到问题时,我总是感到惊讶。学习的一部分是简单的原理,即问题总是容易解决的。一旦您知道了这一点,它便为您寻找合理答案提供了思路。
了解分解。不仅可以解决问题,而且解决问题的方法就像分而治之一样简单。将问题简化为更简单的组件,您的答案将始终存在。
知道如何衡量。除了能够分解问题之外,新开发人员还需要知道如何收集有关这些问题的事实。多久?多大?多快?多少?简单的事实是理解和客观思考的一步。在没有事实的情况下进行假设是在问题空间中迷失的简便方法。
要客观。所有问题都可以分解,度量和简单理解。无法理解的问题仅需要额外的分解,度量和理解。生气或沮丧无济于事,争论理论或指责也无济于事。与解决问题的过程相关的任何非理性行为或信念都是有毒的,这使得解决方案很难找到。
偏好模式和原则。您将遇到许多正确的方法来做事情,语言,编程模型,计算机体系结构,甚至是工程方法。没有唯一正确的方法,但是可以反复应用坚实的基础概念。学会看这些模式,因为它们将指导您学习和思考每一步。
这个专业的学习过程永无止境。一个人必须不断学习和提高自己,否则,他会很快真正地“退出”游戏。
其他答案很好,但是我想说大学里被忽视的第一名技能似乎是实际的 软件工程。
教OOP和Java之类语言的基础课很棒,但是在第三和四年级,为什么学生(至少在我当地的大学里)写编译器和操作系统,而不是学习如何识别和创建好的体系结构,剖析需求并从中创建技术规范列表,也许最重要的是,好的代码有效和坏的代码之间有什么区别。
这就像我们的大学几乎要生产出编码器,而不是软件工程师。我绝不会聘请没有在工程方面表现出一定技能/才华的人。