Saturday, February 1, 2014

Agile Reactions

Recently in my software engineering class we discussed the ideas of Agile Software Development. The discussion seemed to illuminate several things to me, primarily that there is this good idea called Software Requirements, there is this good thing called Agile Software Development, and there is this bad thing which is the common programmer's perception of each.

Often when I encounter people who advocate for the Agile style, they function as if Agile means the following.

  • Don't comment your code (because your code is self documenting).
  • Don't write specs, because that isn't flexible.
  • Start coding right now (Like if you are still reading this sentence and not coding you aren't doing agile right).
  • Don't write tests (Because hey I have madz hacking skillz, my code doesn't have bugs).

When I encounter people who advocate for the more classical approach (which is not too often these days) they seem to think the following.

  • Plan everything before writing any code.
  • Understand everything before doing anything.
  • Never change from the spec/standard.

From our discussion, it really seems like real Agile and Requirements based development are two sides of the same coin, and not either of the two concepts I described above. Requirements does seem to focus more on, figure out what you are going to do before you start coding, while Agile does seem to emphasize flexibility more, but it seems like they are both reactions to the same thing, poor programming. You need to know what you are going to build before you build it, you need to write tests, plan, and define the problem space. At the same time you need to be flexible with your client and their needs, as much as is possible. You need to not spend all your time planning, but you do need to spend some of it planning. At the same time you do need to actual create a product at some point.

In reality it seems that Agile and Requirement are both abstractions on good design and engineering practice, which isn't to detract from them at all. After all this is Computer Science abstraction is our most powerful tool.

No comments:

Post a Comment