Oftentimes, for words especially of Latin origin, German will adopt the English term, perhaps slightly fitting it to the language. This type of term (in my experience) has tended to become the favored variant, such as Compiler for the English compiler. However, there is typically a more German-like variant of the English (or, ultimately Latin), as evidenced by Kompilierer, or a straight translation of the term into something more easily understandable, whereby compiler becomes Übersetzer.
The internet age, international communication needs, and the prevalence of the latest documentation being available first (or only) in English is likely to blame for this trend. Books especially use either a German-like Latin derivation or (preferably) a native term.
This is cursory illustration of the situation on the more technical side of things. No one would think to use a term like user interface over the well-established Benutzeroberfläche, or memory over Arbeitsspeicher.
Ultimately, both English and German, as West Germanic languages, operate similarly enough that the friction due to terminology is minimal.
It’s mixed. Sometimes we use literal translations (e.g. computer -> Rechner, window -> Fenster, operating system -> Betriebssystem). For other terms we stick to the English one (e.g. software, bug, chip, browser, email).