views:

52

answers:

2

From what I have read, "agile" seems to be just a euphemistic term for hack-and-slash development. In other words, where architecture-centric development is based around design documents, agile development has no "design," per se, and the code is just hacked together until it passes tests. I really hope this is not the case. Clarification would be much appreciated. Thanks.

+5  A: 

I don't know where you're getting your information, but it's not from anybody who's properly implemented an agile development team :)

Agile doesn't mean there are no design documents. Rather, the design documentation evolves iteratively over time. The idea is that the very beginning of a project, before anybody has had any experience with it, is the absolute worst time to create a concrete and detailed design. There are too many variables. Instead, a high-level design is created which takes into account those variables and address up-front that those uncertainties will be discovered in time.

As a basic scenario, at the start of a project we would give high-level estimates about the size of that project without any concrete numbers. "This part is small, that part is medium, that part is super extra large" etc. The business sets the priorities accordingly. Say they originally wanted the super extra large part first, but now that they know it's a ton more effort than the medium part then they'd rather have the medium part first just to get something to market. Save the rest for later.

This saved them the time of creating a huge detailed design for the super extra large part when it turns out that's not what's best for the business right now. That can be re-evaluated and re-addressed later after the more immediate priorities are done.

And, very importantly, depending on the nature of the software, it's entirely possible that changes made to the medium part during development will have drastic consequences on the design of the super extra large part. If it was all designed up front, it would cost a lot more to re-design and adjust to those changes.

It should also be noted that developers can "hack code together just to pass tests" in any development environment. That has less to do with agile and more to do with sloppy/lazy coding practices. Development methodologies don't produce good or bad software, developers do.

David
There's also an important distinction to make bertween "design" and "Architecture"; I completely agree that you shouldn't do a big sdesign upfront - but - that doesn't preclude laying out some architecture first - which should be roughly as permanent as the product owners overal vison for the solution. Even at the early stages there should be enough direction on which to soundly based major architectural direction.
Adrian K
+2  A: 

Agile development can be very "architectural" as far as organized formal measures are concerned. Agile has more to do with short, iterative lifecycles that allow a project to grow and adapt quickly to any changes the customer might have or the team encounters. Agile isn't "Cowboy coding" because of this however, most agile teams use real and even rigid processes to do their work.

Jesse Naugher