Какой набор навыков должен иметь каждый выпускник колледжа? [закрыто]

9

У нас был приглашенный лектор в нашей школе, он касался тех, кто заканчивает учебу и не достиг того уровня квалификации, которого он ожидает, т.е. знание одного большого скомпилированного языка, такого как Java, C ++ или C #, одного языка сценариев, такого как Python или Ruby, одного веб-фреймворка. Какие еще навыки, по вашему мнению, должны иметь решающее значение для выпускника?


источник
Я предполагаю, что вы имеете в виду окончание университета?
Майкл Шоу
1
@Ptolemy: в Штатах термин колледж правильный.
Макнейл
1
Желание пнуть себя в задницу и отучить текстовые сообщения говорить, вы, молодые панки! socializedpr.com/…
Работа

Ответы:

27

Безусловно, я бы сказал, стремление учиться. Колледж на самом деле не предназначен, чтобы дать вам навыки, необходимые для того, чтобы стать программистом. Он предназначен , чтобы научить вас навыки, необходимые для узнать эти навыки.

Джейсон Бейкер
источник
Не мог бы сказать это лучше.
Крис
4

Новым выпускникам нужно больше, чем просто желание учиться, им нужна одержимость обучением, понимание того, как учиться, и прочная основа в реалиях программного обеспечения. Мне вообще все равно, какие языки ты знаешь, но каждый младший должен:

  1. Понять историю . Информатика - хорошо изученная область, со многими решенными проблемами. Знание этого факта открывает дверь к изучению того, что предстало перед вами. Даже знание о том, что у меня богатая история, извлекает уроки из более чем многих выпускников. Сюда входят такие вещи, как нотация Big-O, история алгоритмов, принципы Пророков (Кнут, K & R, Hofstdater и т. Д.), А также общепринятые практики и шаблоны.

  2. Знай, что это можно решить . Я всегда удивляюсь, когда разработчик озадачен проблемой. Частью обучения обучению является простой принцип, что проблемы всегда легко разрешимы. Когда вы это знаете, это заставляет задуматься о том, чтобы найти здравый ответ.

  3. Понять разложение . Мало того, что проблемы могут быть решены, но путь к этому так же прост, как разделяй и властвуй. Сократите проблему до более простых компонентов, и ваш ответ всегда будет представлен.

  4. Знать, как измерить . Помимо возможности разбивать проблемы, новые разработчики должны знать, как собирать факты об этих проблемах. Сколько? На сколько огромен? Как быстро? Сколько? Простые факты - это шаг к пониманию и объективному мышлению. Делать предположения без фактов - простой способ потеряться в проблемном пространстве.

  5. Будьте объективны . Все проблемы могут быть разложены, измерены и поняты просто. Проблемы, которые не могут быть поняты, просто требуют дополнительной декомпозиции, измерения и понимания. Бесполезно злиться или разочаровываться, и бесполезно спорить о теориях или обвинять их. Любое иррациональное поведение или убеждение, связанное с процессом решения проблем, является ядом, затрудняя поиск решений.

  6. Предпочитаю шаблоны и принципы . Вы столкнетесь с десятками правильных способов работы, языками, моделями программирования, компьютерными архитектурами и даже инженерными методами. Не существует единственно правильного пути, но есть основополагающие концепции, которые вы можете применять снова и снова. Научитесь видеть эти шаблоны, так как они будут направлять ваше обучение и мышление на каждом этапе пути.

Брюс Олдерсон
источник
1
  1. Страсть к программированию хорошо
  2. Смирение
  3. Способность быстро осваивать новые вещи
TaylorOtwell
источник
0

Как работодатель, я буду нанимать людей только в качестве программистов, которые:

  1. Имею опыт пошагового прохождения кода.
  2. Можно подобрать подходящий дизайн патерна для решения простой конкретной задачи.
  3. Может реализовать код, который отражает выбранный ими дизайн.

По моему опыту, менее 5% выпускников компьютерных наук, претендующих на программирование, действительно имеют эти навыки на базовом уровне. Это минимальные навыки, которые необходимы для того, чтобы быть коммерчески полезными, и, что важно, не каждый способен освоить эти навыки.

Другие приятные вещи:

  • Опыт работы над командным проектом
  • Использование контроля источника
  • Опыт юнит-тестирования

Это облегчает их интеграцию с существующей командой разработчиков, но это предметы, которые обычно можно преподавать на рабочем месте.

Майкл Шоу
источник
0

Когда-то у меня была команда, которую я «унаследовал», в основном с недавно законченным персоналом, и у меня был опыт, что те, кто занимался настоящим программированием «рядом» с этой учебой (чтобы заработать немного денег), были самыми способными членами команды. Следовательно, ключом является опыт, и на каком языке мало что значит.

Однако, если вы посмотрите, что ищут рекрутеры (на всех распространенных сайтах рекрутеров, таких как jobserver.com и т. Д.), Интересно заметить, что есть много вопросов, касающихся C ++, C #, Java, но есть и другие, которые искали и также есть такие «экзотические» вещи, как КОБОЛ.

хол
источник
0
  1. Межличностные и коммуникативные навыки
  2. Прагматичный подход (не та академическая теория)
  3. Умение мыслить как клиент, не склонный к техническому развитию
  4. Способность оценить, что важно / и что можно игнорировать с точки зрения затрат / выгод
  5. Умение работать в команде
  6. Умение мыслить стратегически: архитектура, расширяемость, масштабируемость
  7. Открытость, чтобы признать, что университетские учения имеют мало общего с реальным миром (зависит от университета - некоторые из них лучше).

Учебный процесс в этой профессии никогда не заканчивается. Нужно постоянно учиться и совершенствоваться, иначе он «улетает» из игры очень быстро.

ладья
источник
Это все полезно. Тем не менее, почти нулевые выпускники университетов имеют их, и они не являются критическими, поскольку большинство из них легко получить на рабочем месте. Я думаю, что вы отвечали на другой вопрос.
ДБКК
@dbkk - Прошу прощения, но вопрос был не в том, «какие навыки у выпускников-программистов», а в том, «что ... должно быть». Кроме того, нет, они не легко усваиваются. Наоборот, чаще всего люди с многолетним опытом по-прежнему скучают по большинству из них.
Ладья
1
Это общие навыки, и многие из них не подходят для обучения в школе.
Дэвид Торнли
-1

Другие ответы хороши, но я бы сказал, что упущенным навыком в университете, кажется, является реальная разработка программного обеспечения .

Основные классы для обучения ООП и языку, подобному Java, великолепны, но на 3-м и 4-м курсах студенты (по крайней мере, в моем местном университете) пишут компиляторы и операционные системы вместо того, чтобы учиться определять и создавать хорошую архитектуру, как анализировать требования и создавать из этого список технических спецификаций и, возможно, самое главное, в чем разница между хорошим кодом, который работает, и плохим кодом, который работает.

Как будто наши университеты почти хотят выпускать кодеров вместо разработчиков программного обеспечения . Я бы никогда не нанял кого-нибудь, кто не проявил бы какой-нибудь навык / талант в области машиностроения.

Николь
источник
4
Потому что людей учат информатике, а не программированию. Эта проблема исчезла бы, если бы университеты и студенты поняли, что информатика! = Разработка программного обеспечения, информатика - это наука, информатика - это не программирование, а разработка программного обеспечения - это больше, чем программирование.
Томас Оуэнс
-1. Изучение того, как все работает под капотом (компиляторы, ОС, язык ассемблера и т. Д.), Важно, даже если вы на самом деле никогда не работаете на этом уровне, потому что в какой-то момент вы столкнетесь с неплотными абстракциями.
dsimcha
@dsimcha, если вы в это верите, у вас очень узкое представление о том, какие инженеры-программисты сейчас работают в компаниях в реальном мире. Дело не в том, что эти вещи не приносят никакой пользы - это издержки, связанные с непредоставлением обучения чему-то более важному.
Николь