**Become an active member of SO**. Really!

- To dive into problems other people are facing and where you could give advice based on your available knowlegde but most of the times the questions push you to take it one or two steps further.

And off course also:

- Reading good books, make the examples, discuss them with colleagues, and go on...
- Make a proof of concept about a certain goal you want to reach, not doing it in production code but just a kindergarten project where you try all sorts of different scenarios
- Scraping the internet for good examples, clarifications, good blogs
- Clearly define with the (inhouse) customer what they really need, we all know [this fabulous picture][1], it makes so much difference to communicate the desired functionality, get the details clear, discuss business rules, use-cases and their deviations.

And last but not least:

- **Don't let your (proud) ego stand in the way of learning from your own mistakes and from others**


  [1]: http://ot.ncsu.edu/wp-content/uploads/2008/09/software_cartoon.jpg