I have been interviewing several freshers who were taught Java in engineering schools under computer science curriculum. Я был несколько интервью freshers которые учили 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. В лучшем случае они имеют поверхностное знание OO концепций, как полиморфизм. It becomes nauseous to watch them repeat by rote the definitions without demonstrating a clear understanding of underlying concepts and logic. Она становится nauseous смотреть их повторять по rote без определений, демонстрируя четкое понимание основных концепций и логики. Such graduates become nothing more than structured C coders using Java. Такие выпускники становятся не чем иным, структурированные кодировщиков С помощью 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. Это платформа, которая помогает вам легко разрабатывать кросс-платформенные и веб-приложений. Knowing Java without knowing about the web (other than googling and email), for example, is fruitless. Зная, Java, не зная об Интернете (помимо поиск в 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 Software Development
  6. Software Development Methodologies (includes Extreme Programming) Методологии разработки программного обеспечения (в том числе экстремального программирования)
  7. Software Testing & Quality Processes Тестирование и качество процессов
  8. Design Patterns in Java Разработка моделей на Яве
  9. Enterprise Software Development Предприятие разработка программного обеспечения
  10. Networking - TCP/IP, UDP, SMTP, POP3, HTTP etc. Сетевые - TCP / IP, UDP, SMTP, POP3, HTTP т.д.

Optional: Дополнительно:

  1. Computer Security Computer Security
  2. Artifical Intelligence Искусственный интеллект