To become a decent programmer, it's important to have a variety of tools in your mental toolbox so that you can pick the right tool for the job. However, even though I learn about other tools, when I approach new problems I fall back onto the tools I know well, even if they aren't the best solution. For example, as a Java programmer working in Python, it's easy for me to fall back onto for's and classes when a lambda or generator would be a much more elegant solution. I'm curious to hear any books, essays, ideas, or techniques you use to combat this problem.