Ask HN: Где изучать основы программной инженерии?

Ask HN: Where to learn software engineering fundamentals?

Ask HN: Где изучать основы программной инженерии?

Я никогда не изучал computer science, но большую часть жизни писал простой код, а теперь с помощью ИИ делаю это быстрее. Мне интересно, где лучше всего изучить фундаментальные основы программной инженерии.

Попросите GPT или Claude найти хорошие курсы и учебные пути на GitHub. Начните с создания демо — учитесь на практике.
Трудно дать точные рекомендации, но изучите материалы эпохи MOOC, примерно 2012-2017 годов, когда качественное онлайн-образование предоставлялось бесплатно. Например: MIT OCW 6.0001 и 6.0002, курсы UBC по функциональному программированию на Racket, курс Computation Structures, где вы строите CPU из базовых вентилей, и математический анализ MIT 18.01.
Одна вещь, которую я бы добавил к отличным предложениям выше: может быть удивительно полезно опуститься на уровень ниже того, что обычно считается «основами программной инженерии». Я преподаю студентам-математикам и с годами все больше убеждаюсь, что понимание машины внизу облегчает понимание многих высокоуровневых концепций: память и адреса, простой CPU, ассемблер, соглашения о вызовах и как компилятор транслирует язык программирования в исполняемый код. Принцип: не учи решение, пока не узнаешь проблему. Например, указатели становятся менее загадочными, когда память и адреса конкретны. Я экспериментирую с подобным подходом снизу вверх в курсе в Университете Ульма, где мы доходим до написания небольшого компилятора и его самодостаточной версии. Материалы на английском: https://github.com/michael-lehn/not-abc
Для CS, как «фундамента, стоящего за тем, с чем типичный программист сталкивается каждый день», есть хороший ресурс: https://teachyourselfcs.com/
https://aosabook.org/en/