I've had a great time this week at a private developer/tester conference at a large world-class company. I've been staying busy speaking and consulting here and enjoying every minute of it.
Today we heard a keynote address from Ivar Jacobson that was very interesting. It was about being smart in software development. Here are a few of the main points that resonated with me:
* Being smart means being agile plus doing the right thing in a particular situation.
* Knowing the right thing to do requires knowledge, training and experience.
* Interesting "factoid" - 90% + of companies still use waterfall methods.
* Small, cross-functional teams are best (10 people or less)
* Trying to define requirements early at a level of 80% completeness or higher is futile.
* Only 5 - 10% of requirements have a critical impact. These are the ones needed to build the initial interation(s) - the "skinny system".
* Agile isn't what it was 5 years ago. It's smarter today.
* Architecture is still important. Without it, you have a chaotic mess.
* On the other hand, "An architecture without executable code is a hallucination."
* Refactor over releases. Large scale refactoring is costly.
* "Whatever you do, you are not done until you have verified that you did what you wanted to do."
* We are all testers.
* A law of nature: People don't read documents
* Make sure your documents add value
* Practices over processes. Practices can be assembled from a variety of sources. They are separate but composable. In this way, you can select what works for you.
* Appropriate mentoring can help you become smarter faster.
* Change through evolution, not revolution.
* Agility responds to risk and unknowns.
I thought this was a thoughtful and helpful session. It gives me some new ways to think about agility as I help my clients make the transition from traditional methods.