Designing and Developing Cross-Cutting Features
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.

Posted by Alistair Cockburn on Oct 30, 2006
The cooperative game model grew alongside the agile model. Originally constructed to explain software development, it struck a chord with business people, who rightly saw that business is also predominantly a cooperative (and competitive!) game of invention and communication.The creation of software is somewhat difficult to define, a bit of a conundrum, as Cockburn himself observes in the beginning of this chapter:
...although programming is a solitary, inspiration-based, logical activity, it is also a group engineering activity. It is paradoxical, because it is not the case, and at the same time it is very much the case, that software development is:
Its creation is sensitive to tools; its quality is independent of tools. Some software qualifies as beautiful, some as junk. It is a meeting of opposites and of multiple sets of opposites.
- Mathematical, as C. A. R. Hoare has often said
- Engineering, as Bertrand Meyer has often said
- A craft, as many programmers say
- A mystical act of creation, as some programmers claim
So, in this introductory chapter, Cockburn comes at it a different way: using analogies to examine what we do, asking “What would the experience of developing software be like if it were not software we were developing?” He uses examples from both his own art form (poetry) and from co-operative games, particularly rock-climbing, to explore other ways of thinking and talking about software development.
He then goes on to examine the idea of software development as a cooperative game of invention and communication more closely. The chapter considers the primary goal of the game (delivering working software) and the secondary goal, or residue of the game (setting up for the next game), where the "next game" is altering or replacing the system, or creating a neighboring system.
He finishes by relating these ideas to everyday life: how the application of this "collaborative game" vocabulary can help teams think about adopting Agile software development. In this language, the team plays the game toward an agreed-upon goal: collaborating, strategizing and reflectively choosing their moves to maximize benefit for not just the team but also the larger game of the enterprise.Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
Alex Russell talks about the shortcomings of the web platform and how it is evolving in order to adress them. He also explains about how browsers are improving and shares his vision on things to come.
Jeff Lindsay discusses creating distributed and concurrent systems using ZeroMQ – a lightweight message queue-, and gevent – a coroutine-based networking library.
Brian Ketelsen introduces Skynet, a platform for polyglot, distributed and composable services that communicate with each other over RPC/JSON.
Carin Meier tells the story of Alice discovering Monads, meeting three types of monads – Identity, Maybe, State-, and learning how to implement them in Clojure.
The need for agile, queryable, reliable, scalable storage without the pain of SQL schema migration is real. This article uses MongoDB to introduce NoSQL concepts to Java, PHP, and Python developers.
Jérôme Giraud introduces Wink Toolkit, an open source mobile JavaScript framework for HTML5 web or hybrid apps, showing widgets and interactions.
Greg Wilson and Christophe Coenraets demo Adobe Edge, a motion and interaction tool, CSS Regions and Shaders, and PhoneGap.
1 comment
Watch Thread Reply