After few months of soul searching I found the reason. My excellence at programming was due to external motivation - to be recognized and applauded by peers. When I got that I lost my motivations to do that. Given the quality of work done in big Indian IT companies it was really difficult to find people who were better than me. I was thinking about it in a wrong way. I needed to change myself, my goals and vision. I did that. I asked myself what I want from life? I learned all that I wanted was to do something meaningful with it. I don't need the recognition and applauds from others but I need to feel that I am making good use of my life to contribute something back to the world. I realized I never loved programming itself but I did it for other reasons - to get recognized by peers. I changed my reason to do it. I now do it to create value. I now do it to make things that people need. I now do it to make a small part of world better. I feel better when I know that my work is creating value for someone.
I don't love programming anymore. I don't need to but I can find it very satisfying to do things that are even more boring to do than programming if it helps me in achieving what I want - "Creating Value". It doesn't matter what others think about it. I need to feel that I made a contribution.
My suggestion - Start Contributing.