1) I agree with Ujjwal Kanth. That was one of the most stupid mistakes in regards to programming that I have done. However, it's good till an extent when you are ready to check on the other ways to solve the same problem and make it and yourself better.
For example, if you are trying to solve a computationally expensive prime number generation problem, you'll come up with a simple solution with your plain brain. That would be great, implement it and then you'll see that it can be improved. If you miss this step then you'll be extinct soon.
2) Other would be trying to make it look modular, performant, premature optimization and following all standards. Because, as said earlier, the process of learning is lost and many edge cases will be lost when we try to make it very standardized code and fixing those it becomes dirty which is too bad.
3) Also, learning a new language without considering it's reason for creation. Anyone would learn by starting to code, but there's a small issue here.
For example, I know java and I am learning python by solving a problem. In java I need to store data in a format to reverse it and all. If I'm writing the same solution in python replacing the syntax, it's as good as not learning python. Because, I am trying to port a program here. I might even miss simple ways of string manipulation in python which could be much faster ( It may look funny, but it matters when you solve computationally heavy problems like in projecteuler.net).
Because, for some problems some languages offer better solutions than others (just my personal opinion though. I am not starting any language wars :J)
4) Considering too much about design patterns, data structures when you're learning a programming language. This might even make you loose the motivation.
Looks like I have given points which even contradict within themselves. Let me know if you find any mistakes. Cheers :)