Archive for September, 2009
Courage
Practicing agile development for the past year or 2, I've been thinking about the concept of courage more and more. Courage seems to be a common value of many frameworks (e.g. Extreme Programming), and I think it makes a lot of sense especially when taking into consideration test-driven development and domain-driven design. I've personally found that embracing courage makes me more productive in writing code by helping me make decisions more quickly and empowering me in general.
I think the same type of courage goes beyond the code and should be consciously applied to development overall. The goal of software development in business isn't excellent code quality after all but instead to meet some sort of business objective. For example, I think it takes courage to realize you've underestimated the complexity of a task and to come back to the product owner/client/manager and say "We screwed up and totally overlooked this when we implemented that. The consequences are this and that." I think it takes courage to say half-way through an iteration, "We just realized that we can't do all of this in time, but we can do this small part." This isn't anything new, and from my understanding good agile teams do this well naturally. I like to think of these things within the concept of courage because of the empowerment angle.
So while embracing courage within a programming context makes me more productive in writing code, I've found that embracing courage within an overall development context makes me more productive in creating business value. I can't say I do this all the time, but it comes to mind, at least subconsciously, with every hurdle I encounter. I think that in the face of imperfection, unexpected complexity, and evolving requirements, software development needs more engagement and with more engagement, more courage.