User Stories Are Not Narratives

The “story” in agile development’s “user story” is not a narrative in the traditional sense of the word. Many are short on verbs, which is a big hint that something non-narrative is going on. “User story” is shorthand for a set of concepts and principles. The danger with taking a simple word like “story” and assigning it a new meaning is that novices, and occasionally even experts, confuse the jargon with the traditional definition.

Continue reading

Culture Shock

Over twenty years ago, I moved from Oregon to Utah to start going to school at BYU. As we were driving to Provo from the north, my mom, who had been born in Utah, commented, “This place right here is called the point of the mountain.”

“That’s stupid, there’s nothing here!” I remember saying, a bit more harshly than was appropriate. I think my mom was a little taken aback, and didn’t bother to try to justify why the place deserved to have a name: It separates Utah valley from the Salt Lake Valley, and the counties with corresponding names; it’s the highest point on I-15 through the Wasatch Front and the place you’ll most likely hit snowy roads.

I realized later that I was just experiencing culture shock. After an email discussion with a coworker today, I realized that culture shock is possible between programming environments.

Continue reading

Object-Oriented vs. Database-Oriented

Having worked for Folio and NextPage, companies that have specialized in full-text indexing using custom search engines, I have an admitted knowledge liability with regard to relational databases. It never really made sense to have a relational database and our own search database coexisting in an application. But it never occurred to me that such a knowledge liability could be considered a benefit in terms of thinking about how applications should be designed. Continue reading

Design by Contract

I recently finished reading Design by Contract by Example by Richard Mitchell and Jim McKim. The book, as its title suggests, gives advice about writing good contracts through a set of principles applied in various examples. In addition to wanting to learn more about design by contract generally, I came to this book with a couple questions: Can you do design by contract effectively without built-in language support, and what is the relationship between design by contract and unit testing? In this article I’ll talk about design by contract generally, and discuss those two questions in follow-on articles. Continue reading