Любой программист должен знать "Алгоритмы и структуры данных" (например,http://oberoncore.ru/library/algorithms ... structures). Чтобы:
а) уметь адекватно применять готовые средства.
б) уметь сочетать стандартные приёмы, реализуя ориентированные на задачу решения (которые могут в разы повышать эффективность в сравнении комбинированием отдельно взятых стандартных решений).

Готовые компоненты по означенной тематике есть. См.http://oberoncore.ru/bbcc/иhttp://oberoncore.ru/projects/cpc