depending on the project, it'll normally be browser for reference (or if its web based testing as well, but thats rare)
then I have about between 1/2 and 2/3rds of the screen space left to have terminals in.
I'll have one/two long terminals open with vim for the main file(s) I'm working on, then 1-4 smaller terminals for running the program/tests. if its a big project, then more terminals for reference (ie library one, library two etc.).
Think of it more as having a really big desk, with loads of copies of the same reference book open to different pages. Its quicker to glance than it is to alt-tab. For me (and i'm not claiming this is a universal trait) that flash of screens where we switch context from one full screen to the other makes me loose context on what I'm working on.
I have virtual monitors as well, all split into contexts, so one will have email/slack/$messenger one will have "personal" internets (ie timewasting sites) and a professional browser, thats logged into company services. If I'm doing graphics, then drawing/editing screens as well.
I used to be a proponent of many monitors. I bought a matrox parhelia new to support triple monitors when they came out. (yes I am that old). However due to the way my mind works, I found that with three screens I would end up in a spinlock with two browsers open, one in each monitor, and not do any work.
I keep one window on screen at any time, full screen. I use 2 sets of 16 virtual desktops, tmix, emacs and brave. Maybe 10 instances of each app, and of within each maybe ten tabs. So that's a total of about 300 windows. It gives me zero visibility problems. I much prefer using my hands to change whatn I'm looking at instead of my neck.
However a lot of the time the Vims are there for reference.
In general, I often have up to 10 tabs open on Gnome terminal, and a GNU screen session in each with up to 10 screens. Maintaining lots of context.
Within a single GNU screen session, I'll often have a build window, some editing windows for code, editing windows for config files, etc.