С моей точки зрения, способность дизайна сложнее получить, чем навыки разработки/кодирования.
Когда вы сталкиваетесь с требованием, как создавать функциональные модули, как правильно построить архитектуру программы?
Кстати, существуют ли какие-то книги?