application versus systems programming
Think of a restaurant. The chef plating a dish is doing application work - solving the customer's actual problem (a meal). The people who built the kitchen, the gas lines, and the refrigeration did systems work - they made the place where cooking is even possible. Both are programming; they just sit at different distances from the underlying machine and from the end user.
Application programming aims a program at a human problem: a spreadsheet, a chat app, a checkout page. The programmer mostly works with high-level tools and libraries and trusts that 'open a file' or 'send a message' just works. Systems programming aims at the machinery those tools rely on: making 'open a file' actually happen by talking to the operating system and the disk. Application code optimizes for developer speed and clear features; systems code optimizes for performance, predictability, and precise control over resources, and pays for that with more responsibility for low-level details.
This split matters because it shapes what you must care about. An application bug might show a wrong total on a screen; a systems bug might corrupt every program's memory or crash the whole machine. Knowing which side of the line you are on tells you how careful to be, which language fits, and how much of the machine you need to understand. In practice many engineers move between the two, and the most valuable ones understand enough of the systems layer to debug their applications when the abstraction leaks.
Writing the React front-end of a shopping site is application programming. Writing the memory allocator that the browser uses to render that page fast is systems programming.
Same page on screen, two very different layers of code making it appear.
It is a spectrum, not a wall. Many real jobs straddle both; the words describe where your focus sits, not a credential or a fixed career box.