>I just find that the short iteration isn't ideal because the short iteration, and lack of long-vision planning doesn't allow designers to develop in a "big-picture" way.
I don't think that kind of planning is particularly valuable. I've worked in many really unsuccessful companies that had a long term plan (which never really came to fruition) and some really successful companies which may have had a blurry long term vision about their general direction but mainly just reacted to customer input and market conditions as they saw fit.
The Linux kernel is developed in exactly this way too and it's hardly a model of an unsuccessful software project. It's not just me.
>Testing doesn't really fit anywhere in the equation as a differentiation. There was automated unit testing before Agile
Automated testing was barely used though. XP, the progenitor of agile, did emphasize it though.
It 'fits' because once you do enough of it (and you have automated releases), it just sort of stops making sense having release schedules. Every change to the code base that gets through code review and the test suite is releasable so why not release it?
>It also requires automated deployment which can be tricky
I think 2009 was the last time I worked on a system that didn't have automated deployment.
>I just think the short 2-3 week iterations don't fit every organization and if you can handle 1-2 month sprints, you'll have better designed software because you can see further into the future.
I've always aimed for iterations that are as short and tight as possible because the future - meaning how your software is really going to be used - is by far and away the least predictable thing you'll have to deal with. The most you can do is react to that quickly before veering too far down a dead end.
Hell, even when I develop software for myself I end up being surprised about how I actually end up using it.