This document discusses the programming and software engineering aspects of Software-Defined Networking (SDN). It reviews the SDN architecture, its use cases, and the challenges in developing SDN software applications, particularly focusing on the northbound and southbound interfaces and protocols like OpenFlow. The paper also highlights current programming paradigms and languages for SDN, aiming to address the need for higher abstraction in network application development.