In addition to the comments others have provided. Take a reasonable complex problem and solve it. Now refactor it. Not sure what refactoring is, read Refactoring: Improving the Design of Existing Code by Martin fowler.
Show your code to others and seek feedback. Always assume that your code can be improved.
Show your code to others and seek feedback. Always assume that your code can be improved.