Agility and Discipline

by chromatic

Scott Ambler's The Discipline of Agile on DDJ deconstructs a myth surrounding agile development, namely the fiction that agile development or XP is for undisciplined cowboys. Perhaps my favorite part of the article is the checklist at the end which helps identify cowboy coders and actual agile teams:

  • Take a test-driven approach to development.
  • Work very closely with their stakeholders on a daily basis, and the stakeholders have active roles on the team.
  • Produce working software on a regular basis and can show a clear track record of doing so throughout the project.
  • Work in an open, collaborative, and self-organizing manner.

5 Comments

Robert Hicks
2007-09-22 16:04:10
Funny, I have never heard Scientists complaining. In fact, NASA is poised to jump headlong into the Java world. Not that I "love" Java (I reserve that feeling for Perl) but Java makes tradeoffs just like every language does.
Robert Fischer
2007-09-24 06:20:42
When you say "dynamic" languages, are you implying that the only "Agile" languages are dynamically typed languages? And why is it that flexible syntax/code organization/personal style makes a language "offer a rapidity of development and feedback"? Isn't that more an aspect of the "chattiness" of a language?


In other words, what does Ruby have that OCaml doesn't that makes Ruby an "Agile" language and OCaml not?

Stephen Crane
2007-09-25 02:30:48
The intent behind closing of class String is not to close it to extension (although this is a side-effect) but to preserve its value-semantics: it's impossible to change the value of a String, an essential property for its use as a hash key.
chromatic
2007-09-25 16:42:48
@Robert Fischer, perhaps that is a sloppy use of terms. I suppose that, when pressed, I'd give a more formal definition of "dynamic" with terms that include late-binding and generic programming without recompilation. (I'm flexible on late binding as well; Haskell supports pretty decent genericity with its extensible type system without, at least in my modest experience, requiring that you recompile or, worse, re-edit existing code.)


I haven't used OCaml, so I can't compare it.


I mentioned flexibility of syntax as a placeholder for saying "Wow, Java is verbose and doesn't allow much in the way of syntax-level abstractions." The ultimate example of syntax malleability is Lisp, but Perl and Ruby are flexible with regard to their syntax, and Haskell allows you to define new infix operators as well.

chromatic
2007-09-25 16:44:43
@Stephen, I'm not sure I understand. I would think that making strings immutable at least with regard to the VM would serve that purpose. I would think that allowing users to subclass String wouldn't harm that goal, at least for code that follows Liskov.


Perhaps I'm misunderstanding what you mean.