В рамках этой темы рассмотрим и структурируем основные концепции, применяемые в программировании - компонент, абстракция, библиотека, инструмент, проектирование и архитектура, шаблоны проектирования. Также сформулируем проблемы, с которыми разработчик встречается во время проектирования и разработки, и каким образом и в каких случаях эти проблемы возможно преодолеть. Рассмотрим отличия качественно и некачественно спроектированного и написанного компонента, совместно выработаем критерии качества компонента, и отличия качественного кода от некачественного. Рассмотрим понятие и процесс рефакторинга, каким образом можно повысить качество кода в отдельном компоненте и во всем проекте.