I have just realized recently that to learn programming takes more time than I expected as it involves design patterns and data structures. Without the knowledge of that it is not worth to start working on anything. Am I right? I am just wondering if anybody has strategy for learning design patterns and data structures in a practical way.
I believe you need to first obtain a confident level of knowledge in a programming language such as: C, C++, Java, C#.
Data Structures are way more important than design patterns (lots of which I think are bogus).
Even if Collections or Containers exist in the programming language that you are confident in, try to program (your personal version of) them yourself. Then you will understand/appreciate the Data Structures that part of the programming language.
Cheers, good luck!