I feel like "agile" has come to mean "get shit done fast" in today's programmer culture. But just as "agility" and "speed" are not the same, agile development does not necessitate a race to the finish and similarly is not the antithesis of the slow programming style (as some commenters seem to be suggesting).
I think people have wrongly used agile as an excuse to implement first, reflect later, refactor never. In the original agile movement, there is a lot of time devoted to refactoring. You hack something together that accomplishes your goal. You get to see how it's working, get user testing up and running, and then reflect. But underneath the hood the program is a complete mess. This is the time for an agile developer to go back and majorly refactor the program into a neat, well-organized system. Maybe even rewrite. The problem is people on the business side of things see a near-complete project that they want to launch ASAP. It may even feel that way to the developers. I think the refactor part of the process gets cut short because of the desire to push the product out the door or work on new feature sets. You're only doing half the agile process in this case.
I'm definitely not in the "plan first, build later" vein of thought. It's not how I program or do artwork (I'm a hobby artist as well). I need time to play around and experiment with different ideas in real-life implementations before settling on my plan of attack. There are so many ideas that may seem great in your head, but don't do well IRL. Additionally, you may stumble upon a new idea in the process of experimenting.
The thing I long for the most as a programmer is more time to refactor. Time to refine my code. There is something to be said about craftsmanship as opposed to mere production. One thing I've enjoyed about my own personal programming projects outside of work is that I have time to sit back and reflect. Is this the best way of modeling X? Is there a more simple way of expressing X? And then I can do major refactors/rewrites that would never fit into a sprint at my workplace. But I do believe the investment will pay off in the future when it comes to maintenance. And extra day refactoring now could save weeks of debugging later on.
I think people have wrongly used agile as an excuse to implement first, reflect later, refactor never. In the original agile movement, there is a lot of time devoted to refactoring. You hack something together that accomplishes your goal. You get to see how it's working, get user testing up and running, and then reflect. But underneath the hood the program is a complete mess. This is the time for an agile developer to go back and majorly refactor the program into a neat, well-organized system. Maybe even rewrite. The problem is people on the business side of things see a near-complete project that they want to launch ASAP. It may even feel that way to the developers. I think the refactor part of the process gets cut short because of the desire to push the product out the door or work on new feature sets. You're only doing half the agile process in this case.
I'm definitely not in the "plan first, build later" vein of thought. It's not how I program or do artwork (I'm a hobby artist as well). I need time to play around and experiment with different ideas in real-life implementations before settling on my plan of attack. There are so many ideas that may seem great in your head, but don't do well IRL. Additionally, you may stumble upon a new idea in the process of experimenting.
The thing I long for the most as a programmer is more time to refactor. Time to refine my code. There is something to be said about craftsmanship as opposed to mere production. One thing I've enjoyed about my own personal programming projects outside of work is that I have time to sit back and reflect. Is this the best way of modeling X? Is there a more simple way of expressing X? And then I can do major refactors/rewrites that would never fit into a sprint at my workplace. But I do believe the investment will pay off in the future when it comes to maintenance. And extra day refactoring now could save weeks of debugging later on.