I've found that Gemini 2.5 Pro is pretty good at analyzing existing code, but really bad at generating a new code. When I use Gemini with Aider, my session usually went like:
Me: build a plan to build X
Gemini: I'll do A, B, and C to achieve X
Me: that sounds really good, please do
Gemini: <do A, D, E>
Me: no, please do B and C.
Gemini: I apologize. <do A', C, F>
Me: no! A was already correct, please revert. Also do B and C.
Gemini: <revert the code to A, D, E>
Whereas Sonnet/Opus on average took me more tries to get it to the implementation plan that I'm satisfied with, but it's so much easier to steer to make it produce the code that I want.
When I use amazon-q for this, I make it write a plan into a markdown file, then I clear context and tell it to read that file and execute that plan phase by phase. This is with Sonnet 4.
Sometimes I also yeet that file to Codex and see which implementation is better. Clear context, read that file again, give it a diff that codex produce and tell it do a review.