Технология программирования¶
О курсе¶
Инженерная сторона разработки: как из требований заказчика вырастает работающая система, где проходят границы между слоями и почему архитектурные решения приходится защищать, а не просто принимать.
Курс построен вокруг одного сквозного проекта. Все девять лабораторных работ развивают одну и ту же систему, а лекции объясняют, чем на каждом шаге за неё платят.
Начните с технического задания
ТЗ: HR-система найма — документ со стороны заказчика: что система должна делать и каким правилам подчиняться. Требования в нём пронумерованы, и лабораторные ссылаются именно на эти номера.
Архитектурные решения в ТЗ не описаны намеренно — они ваши, и защищать их будете вы.
Язык и платформа — на ваш выбор
Примеры на лекциях написаны на C#: код нужно на чём-то показывать. Сам курс не про конкретный язык — слои, границы, инверсия зависимостей и идемпотентность одинаково выражаются в Go, Python, Java или TypeScript.
Свой проект пишите на любом стеке. Выбор, отличный от .NET, согласуйте на первой лабораторной и зафиксируйте отдельным ADR: экосистема должна позволять выполнить все требования раздела 10 ТЗ.
Как устроен семестр¶
| Проект курса | техническое задание на весь семестр |
| Лекции | девять тем: от границ приложения до сопровождения |
| Лабораторные работы | девять работ, каждая наращивает ту же систему |
Часть материалов ещё в работе
У готовящихся лекций и работ на странице стоит план содержания, зафиксированный при проектировании курса. Окончательная версия появляется здесь до занятия — заглядывайте перед парой.
Что ожидается в сдаче работ¶
- рабочий код с внятной историей коммитов, а не один коммит «готово»;
README.mdработы: что сделано, как собрать и запустить, что не получилось;- явная ссылка на пункты ТЗ, которые закрывает работа.
История коммитов — часть сдачи
Двадцать коммитов «fix» и финальный «всё готово» читаются одинаково плохо. Коммит должен отвечать на вопрос «что изменилось и зачем».