Internet is a critical infrastructure for today's world just like transportation and electricity. The large deployment base of internet has made it quite difficult to evolve in terms of physical infrastructure, protocols and performance. Software Defined Networking (SDN) is the most recent advancement, extending the idea of programmable networks. SDN framework decouples the network service from underlying implementation providing a novel approach for application to configure, operate and communicate with the network. In this paper, the authors present a study of programmable networks with emphasis on the motives and challenges of SDN. Following it they give an overview of SDN architecture its current applications and future applications.