Typically, I'll split the workspace in 2 (i3 wm), have a terminal with vim on the right, and a stack of terminals on the left. One terminal would be with the shell mainly for interacting with git, running tests, manage the directory structure, building/packaging the project, etc. Another may have a project-specific console to interact with functions in the project as I write them. Another may have a development server running and show the live log output. I may tile this last one in a small corner above the vim window so it stays visible.
Terminal windows is what most of my windows are, but typically I'll also have a browser window for looking at documentation and interacting with the issue tracking system. If it's a personal project, I may have an emacs org-mode window for managing my tasks there.
I regularly fullscreen to different windows when I want more room or to focus on them.