Наткнулся на просторах ютуба на весьма интересного спикера Егора Бугаенко и по совместительству автора книги Elegant Objects, где он весьма неплохо поясняет за ООП. Не могу сказать, что согласен с каждым его словом, но для общего развития рекомендую ознакомиться с материалами.
Не смотря на то, что некоторая часть докладов в контексте языка Java, материал будет понятен программистам и на других ООП языках. В данной подборке привожу русскоязычные выступления в случайном порядке.
Хороший доклад на тему того, что создание классов и объектов совершенно не означает следованию парадигме ООП — объектно-ориентированному программированию и проектированию. Рассмотрены типичные ошибки и анти-паттерны при проектировании классов.
Несколько доводов о том, почему стоит внедрять TDD в проектах и как это поможет создать страховочную систему от ошибок. В конце рассмотрен подход ленивого TDD, при котором сначала пишется небольшой рабочий кусок кода, под него пишутся тесты, а затем тесты пишутся только для тех кейсов, в которых обнаружилось некорректное поведение.