Today I was talking with a friend of mine about thinking, The topic is interesting and I wanted to share it with you because as a programmer we are always thinking and trying to find solutions. Actually it's a good habit when you want to learn something new, instead of taking action and delve into the details, you should think about that and break it down into several pieces then construct it as a big picture. Once you get familiar to it you can start trying to figure out each individual piece, By doing so you will become great in your field.*Image courtesy of [http://goo.gl/Xi2Cn4](http://goo.gl/Xi2Cn4)*
On the other hand, thinking isn't the only thing for being an expert in programming. Suppose that you are given a challenging feature to implement in a team you're working with, you might spend days and days trying to implement this feature and each time you fail and stuck in it then you try to find a solution on the net or asking questions on Stackoverflow. I'm not saying you shouldn't google about your problem, What I'm saying is that you should understand the problem, This is where a Thinking out of the box's metaphor comes into play.
This is very helpful because when you ran into a problem you should first think about it in a new or a different prespective, For example you can put yourself in end user's place and try to figure it out. Once you understand it, you can start coding the feature. By doing so you can help yourself and believe me it works like a charm and you don't need to post off-topic questions every single day on Stackoverflow anymore, Instead when you run into a serious problem, you can post your question and get extra votes :)
So thinking out of the box helps us to think like a programmer, It also helps you to approach problems in new ways.