System programming is the practice of writing system software. System software lives at a low level, interfacing directly with the kernel and core system libraries. Your shell and your text editor, your compiler and your debugger, your core utilities and system daemons are all system software. But so are the network server, the web server, and the database. These components are entirely system software, primarily if not exclusively interfacing with the kernel and the C library.
But nowadays more and more programming work are about high level product designs. Application programming designs such as mobile app design and web design are becoming the main stream developments. In our daily work, it seems we are getting far away from the low level system programming. You may wonder what the current status of system programming is.
Traditional system software—your low-level Unix utilities, your daemons, your toolchain, and so on—is as important as ever. But I believe we are witnessing a sea change, a reemphasis on the centrality and importance of system programming. This change is occurring due to a perhaps surprising reason: The rise of mobile and web apps.
On their face, neither mobile nor web applications seem very system-y. Indeed, Android apps (Java), iOS apps (Objective C), and web pages are pretty far from the system level. But behind any nontrivial mobile app or website is a distributed system, one or more servers in a data center providing the business logic, computation, and storage powering the app. And these distributed systems live entirely at the system level: Server software, mostly running on Linux, designed for maximum performance and scalability.
As an example, consider a word processor. Ten years ago, your word processor was pretty far from system software. Sure, it had some system-level elements, but for the most part it was higher-level GUI code. Fast forward to today and consider Google Docs. It still has that GUI code (in the form of a web page or Android app), but that's not the genius of the product. No, the core of Google Docs is the distributed system in the Google data center that enables document editing, sharing, and collaboration at massive scale. That distributed system's focus is pure system programming: file I/O, networking I/O, memory management, session management, threading.
Although many of us may not deal with low level system programming in most of our time, we can still see their use everywhere. Many of the low level details are encapsulated into some APIs so that we can focus on the business logic. But it's always a good addon if you know more about system programming, sometimes the bugs you encounter may be easily fixed with some knowledge of system programming.
Reference : http://www.quora.com/Computer-Programming/What-is-the-current-state-of-system-programming