I often hear proponents to agile code say that it makes sloppy untested code.
I feel that this is incorrect and should be addressed. The idea of rapid deployment and agile code development is simplify how we think, write and source control our code. By breaking our code into smaller iterations they become more maintainable and easier to deploy.
Code proves whether a theory works or not. Trying to make all the features for a product or making them perfect only delays your releases and puts strain on your team. By making your features small and easy to release you also make them easier to test. Would you rather test a small feature set and release or a large milestone with many features? We should be testing as we go but often a large milestone is pushed to production then the team is inundated for weeks with bug or feature fixes. If we would keep the milestones small and light we can fixes problems as we ship and keep our products shipping without halting our development cycle.
By rapid deployment we can get immediate feedback from our customers and users. Nothing is more detrimental on the morale of a team than to spend months on a feature only to find out that the customer does not like or use it. This could of been prevented by releasing a small simple version of your feature. It does one thing and one thing well. We would of gotten feedback about the core idea of our feature much sooner and save many resources doing so.
Agile code comes down to one thing. Simple. Simple feature, simple idea, easier tests. The core idea is retained. The product or feature is in its most simple state it becomes easier to test and maintain. So in summary, keep it simple, keep it short, test early and often with users. Deploy, receive feedback, correct and repeat. Following this cycle will help you keep your code clean and maintainable while getting your product out there.