You plug the computer straight into the Arduino right? There is no "box in between the PC and the Arduino? That "box" is the external programming hardware (also called the programmer or the debugger).
If you can plug the computer straight into the Arduino, it either means that the Arduino has the circuitry for the programming hardware on the board already, or there is a bootloader inside the processor so the it can interpret the signals from the desktop computer and program itself.
The Arduino IDE is obviously made to work with the stuff in the above paragraph. So the Arduino IDE makes it seamless to write, compile, and upload code (there is also technically a linker step after you compile). In general, these are three different stages. Even writing code and compiling code might be separate stages (some people write their code in a text editor, use a command-line compiler to generate the machine code, and upload the code with a programmer and its standalone software).
The best and most convenient possible setup is where you can stay in the IDE for everything like you can in the Arduino IDE programming an Arduino board, or using the Segger IDE with the Segger J-Link. But if you are trying to use Arduino code with something other than an Arduino board, this is no longer the case so the different steps start becoming broken out.