Перейти к содержанию

Технология программирования

О курсе

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

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

Начните с технического задания

ТЗ: HR-система найма — документ со стороны заказчика: что система должна делать и каким правилам подчиняться. Требования в нём пронумерованы, и лабораторные ссылаются именно на эти номера.

Архитектурные решения в ТЗ не описаны намеренно — они ваши, и защищать их будете вы.

Язык и платформа — на ваш выбор

Примеры на лекциях написаны на C#: код нужно на чём-то показывать. Сам курс не про конкретный язык — слои, границы, инверсия зависимостей и идемпотентность одинаково выражаются в Go, Python, Java или TypeScript.

Свой проект пишите на любом стеке. Выбор, отличный от .NET, согласуйте на первой лабораторной и зафиксируйте отдельным ADR: экосистема должна позволять выполнить все требования раздела 10 ТЗ.

Как устроен семестр

Проект курса техническое задание на весь семестр
Лекции девять тем: от границ приложения до сопровождения
Лабораторные работы девять работ, каждая наращивает ту же систему

Часть материалов ещё в работе

У готовящихся лекций и работ на странице стоит план содержания, зафиксированный при проектировании курса. Окончательная версия появляется здесь до занятия — заглядывайте перед парой.

Что ожидается в сдаче работ

  • рабочий код с внятной историей коммитов, а не один коммит «готово»;
  • README.md работы: что сделано, как собрать и запустить, что не получилось;
  • явная ссылка на пункты ТЗ, которые закрывает работа.

История коммитов — часть сдачи

Двадцать коммитов «fix» и финальный «всё готово» читаются одинаково плохо. Коммит должен отвечать на вопрос «что изменилось и зачем».