Abstract-As the applications of Wireless Sensor Networks increase rapidly, the number of deployed sensor devices proliferates, which prompts the research community to work towards their integration in the so-called "Internet of Things" to gather real time information and make the maximum out of their use towards enhancing the user experience. The capability to reconfigure/reprogram them remotely not only enables easy maintenance and code updates, which is mandatory in large sensor network deployments, but also provides an unprecedented flexibility regarding the use of all available resources of different types. However, the design of a reliable dissemination protocol is a real challenge and the reason is threefold: the desired reprogramming requirements differ from use case to use case (e.g. tolerated reprogramming time, affordable overhead), the wireless medium is characterized by low reliability, and the devices are severely resource constrained. For this reason, in this paper we first explore the reprogramming requirements and the intricacies of WSNs and then review the already proposed network protocols for reprogramming wireless sensor networks placing emphasis on the their features to guide both prospect users and designers efforts.