I have been interviewing several freshers who were taught Java in engineering schools under computer science curriculum.我一直在采访的几个新生谁学习Java在工程学校的计算机科学课程。 Interviewing them highlighted serious problems with their education as well as with the system.采访他们强调严重的问题,与他们的教育,以及与系统。 This is a brief overview of the issues and ways to interview such candidates.这是一个简要概述的问题,以及如何接受采访等候选人。 At the end I have included my recommendation of courses for software engineers.在去年底我有我的建议,包括课程软件工程师。

The students in most engineering institutes are being taught Java directly without a good introduction to object oriented development.学生在大多数工科院校现正教的Java直接没有良好的导言,以面向对象的发展。 At best they have cursory knowledge of OO concepts like polymorphism.在最好的,他们有粗略的知识,面向对象的概念一样,多态性。 It becomes nauseous to watch them repeat by rote the definitions without demonstrating a clear understanding of underlying concepts and logic.它成为恶心,以观赏他们重复死记硬背的定义,没有表现出一个清晰的认识,基本概念和逻辑。 Such graduates become nothing more than structured C coders using Java.这样的毕业生成为没有多结构c编码器使用Java 。

Learning Java to most is knowing about the “packages”, which is an incorrect approach.学习Java的到,最重要的是知道有关“包装” ,这是一个不正确的做法。 Java is not just about the libraries it provides. Java的不只是图书馆提供。 Anyone with logical ability can quickly pick new libraries.任何人与逻辑能力,可以快速地挑选新的图书馆。

Java is a language with a easy to learn syntax which should be first mastered. Java是一种语言一个简单易学的语法,其中,首先应该掌握。 It is a platform which helps you to easily develop cross-platform and web applications.这是一个平台,帮助您轻松地将开发的跨平台和Web应用程序。 Knowing Java without knowing about the web (other than googling and email), for example, is fruitless.知道Java的不知道有关Web (以外的其他使用Google和电子邮件) ,举例来说,是徒劳无功。

Java programmers do not just need to know Java, the language. Java程序员不只是需要知道的Java ,语文。 They need to have an understanding of basic software concepts like three-tier development, relational database management systems, quality processes etc.他们需要有一个了解的基本概念,例如软件的三层架构的发展,关系数据库管理系统,质量流程等。

Software developers with a narrow understanding of the field are likely to be a liability to themselves and to their companies.软件开发人员提供了狭隘的认识领域很可能是负债,对自己和他们的公司。 I look for people who have a healthy interest in the field and not the ones who have chosen IT solely because of its salary potential.我期待的人谁有一个健康的利益,在这一领域,而不是那些谁选择了它,纯粹是因为其薪酬的潜力。

My approach to interviewing them is to find out their clarity of concepts in whatever little (or much) they know.我的处理方法,以访谈,他们是要找出其清晰的概念,无论在小(或大部分)他们知道。 I ask lots of “why”.我想请问,很多“为什么” 。 Getting them to justify even obvious questions like value of object oriented development or polymorphism sheds light into their logical underpinings.让他们的理由,甚至明显的问题一样,价值的面向对象的发展或多态性揭示了他们的逻辑underpinings 。

My recommended courses for software enginners (1 semester each) would be:我的建议,课程软件enginners ( 1每学期)将是:

  1. Introduction to computers介绍计算机
  2. Computer Language (Fortran)计算机语言( FORTRAN语言)
  3. Algorithm and Data Structures算法和数据结构
  4. Object Oriented Development (preferably using SmallTalk)面向对象的发展(最好是使用了Smalltalk )
  5. Java Software Development Java软件开发
  6. Software Development Methodologies (includes Extreme Programming)软件开发方法(包括极限编程)
  7. Software Testing & Quality Processes软件测试与质量过程
  8. Design Patterns in Java设计模式在Java
  9. Enterprise Software Development企业软件开发
  10. Networking - TCP/IP, UDP, SMTP, POP3, HTTP etc.网络-的T CP/ I P, U DP的,的S MTP,使用P OP3, H TTP的等。

Optional:可选:

  1. Computer Security计算机安全
  2. Artifical Intelligence人工智能