Что должен знать ИТ специалист с высшим образованием
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README.md сложность Sep 19, 2017

README.md

Три пути в ИТ

Специалист с высшим образованием может пойти тремя путями и должен иметь достаточную подготовку для них:

Специалист высокого класса

  • способен логично, алгоритмически мыслить
  • пишет человекочитаемый код
  • знает и применяет принципы хорошей архитектуры кода
  • хорошо знает существующие технологии и инструменты (во всех сферах разработки)
  • помимо того как ими правильно пользоваться знает как они устроены внутри
  • способен сам разрабатывать такие инструменты
  • знает различные методологии (ООП/ФП)
  • знает принципы работы баз данных, как реляционных так и других
  • владеет терминологией отрасли
  • знает и применяет хорошие практики для решения типовых задач
  • знает методики масштабирования ПО (CAP!)
  • знает стандартные алгоритмы и структуры данных, умеет вычислять сложность алгоритмов
  • знает когда и как нужно оптимизировать ПО
  • владеет технологиями инсталляции ПО (пакеты, системы управления конфигурациями)
  • знает принципы и способен разрабатывать системное ПО (компиляторы, ядра ОС)
  • способен проектировать человеческие интерфейсы
  • знает принципы работы аппаратного обеспечения, операционных систем и сетей
  • машинное обучение (нейронные сети и др.)

Примеры типовых задач: БД, интеграция, агрегация таблиц, кеширование, журналирование, конфигурирование, профилирование, сериализация, генерация уникальных id, симметричное шифрование, очередь, сервер задач, регексы, хеширование (подпись), генерация паролей, паралелизм, локализация/интернационализация, API, валидация, веб-сессии.

можно ещё погуглить по запросу: Programmer Competency Matrix, например http://www.starling-software.com/employment/programmer-competency-matrix.html

Руководитель/архитектор

  • знает методики и инструменты командной разработки
  • знает принципы хорошей архитектуры, имеет архитектурную чуйку
  • знает что когда и как нужно документировать
  • знает практики повышения качества кода
  • знает методологии и стандарты управления проектами
  • знает инструменты и процесс тестирования
  • знает метрики качества кода

Учёный

  • дискретная математика
  • квантовые компьютеры (понимание от физиков, алгоритмы от математиков)
  • лямбда-исчисление и теория категорий
  • теорию рекурсивных функций, вычислимость и сложность алгоритмов
  • криптография
  • доказательство корректности программ (формальная верификаций), да и аппаратуры
  • децентрализованные системы (блокчейн, DHT)

у буржуев есть Computer science, можно подглядеть что ещё

Знание трендов

  • Нейронные сети
  • Квантовые компьютеры
  • Многоядерность (+ФП)
  • Биоинформатика

Внешний контроль и реальные задачи

Только свободный софт в образовании.

Лабы/курсовые/дипломные начиная со второго курса только в виде доработок к свободному софту:

  • проще контролировать (если авторы приняли патч, то это уже пройденный контроль)
  • репутация ВУЗа
  • портфолио студенту
  • реальные задачи
  • уникальные задания
  • работа в команде
  • язык
  • инструменты и процессы совместной разработки

Проекты можно рекомендовать, но рассматривать предложения от студентов, но выбирать известные, зрелые проекты, один их критериев актуальности - наличие пакета в Debian.

Примеры проектов:

  • GIMP, Krita, Inkscape, Blender, Darktable, CAD
  • Firefox (Servo?), Thunderbird, Tox, Ethereum

Спросить чего не хватает технологичным компаниям.