The trick is to stop using full-screen maximized windows. If you hold down Option when clicking the green maximize button you can make windows maximized the old-fashioned way, where cmd-tab behavior makes sense. You can also bind global keyboard shortcuts to this action. I use cmd-shift-up. I also bind cmd-shift-left and cmd-shift-right to fill the left/right 50% of the screen.
Beyond cmd-tab working sensibly, you also get the advantage of not having annoying sliding animations when switching maximized windows. You can mitigate the animation somewhat for full-screen windows in accessibility options (it’s an effect of a “Reduce animations” checkbox or something like that) but it only turns it from sliding to a faster fade — there’s no way to make it instantaneous like non-full-screen window switching is.
Unfortunately, maximized windows and full screen windows are not equivalent, and there are plenty of contexts in which fullscreen is what is required (virtual desktop, distraction free mode, graphics apps, etc. etc). Maximized windows retain the window bar, and if you don't have auto hide enabled on the dock or menu bar they will remain as well taking up screen real estate unnecessarily.
Beyond cmd-tab working sensibly, you also get the advantage of not having annoying sliding animations when switching maximized windows. You can mitigate the animation somewhat for full-screen windows in accessibility options (it’s an effect of a “Reduce animations” checkbox or something like that) but it only turns it from sliding to a faster fade — there’s no way to make it instantaneous like non-full-screen window switching is.