Design patterns: command pattern

In our pizza sessions we are currently looking at a variety of design patterns. I am a big fan of using design patterns because they provide best practices for a lot of software development issues. One of the simplest but very powerful design patterns is the command pattern. Basically the only thing the pattern dictates is that there is a command interface (or base class) that states that objects implementing the interface should have an execute method. The great thing about this pattern is that now the object that needs something to be done doesn’t have to know anything about the object performing the action. All it needs to know is that there is going to be an execute method.

As a team we decided a year ago to organize what we call “pizza sessions”. They are 2 hour sessions after work hours for training, coding dojo’s or whatever else we would like to do to become better software developers.
I’m very enthusiastic about Agile software development. I believe it fits the way people want to work and it brings out the best in people. There is one downside though: every now and again I run into people who oppose everything that could loosely be associated with “old-style” project management.
What’s the essence of Agility? Sure we have the Agile manifesto, but what does it mean for a developer? I’m sorry to say, but too often I hear people say: “hey listen we do scrum, so we are Agile”.
Although there is no agreement on the precise definition of the term “software architecture”, I believe it is one of the most essential disciplines in successful software development. It is also one of the most difficult ones, especially in an Agile environment. After all, how do you design a system if you are delivering working software every sprint.