Intro

Within my effort Escaping Web Dev I stumbled on systemsprogramming and grew curious to what it is.

Definition

According to Wikipedia, Systems Programming refers to developing software and platforms that provide services to other software. In contrast to application programming which provides services directly to users.
// Systems programming isn't a well defined term, it seems to mean any system that isn't user-facing.

It involves building for:

  • operatingsystems
  • Firmware
  • Managing hardware resources (CPU, GPU, memory, storage, network, peripherals, etc)
  • Computational Science software
  • Game Engines
  • Automation software
  • Compilers / Virtual Machines
  • Distributed Systems

Examples

  • Building daemons
  • Services
  • Networking tools
  • Libraries that are performance sensitive
  • OS drivers and tools.
  • Building Web browsers

Systems Programming requires an understanding of low-level programming, efficiency, focus on performance, and the ability to work with limiting constraints.

How Do I Get Involved?

  • Learn low-level programming languages such as C, C++, and I’m already Learning Rust.
  • Learn OS internals, memory management, and computer architecture.

Books

Projects

Things to build to gain an understanding.

  • Basic / mini shells
  • File systems
  • Web server

References