WebSeitz/wikilog
Agility Vs Conflict
Whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness.

(backlinks off) (map off)
(search off)
last edited by BillSeitz on Feb 10, 2008 9:04 pm

Marketing/ Collaboration: Merging the Two Cultures

Especially in the current resource-constrained environment (but also in the long-term uncertainty- and change-filled future), managers can not afford the distractions, lost , and damage that comes with the and teams regarding each other with suspicion and disdain.

Key Questions

Key Finding

Traditional "rigorous" software development methodologies often use formal processes as a way of ignoring human conflict rather than resolving it. Agile methodologies, such as Extreme Programming, push constant informal communication and implementation feedback cycles to improve both parties' satisfaction with both the work product and the working environment.

Key Takeaways


Many organizations experience conflicts between Marketing and . Marketing perceives as often being a barrier to getting anything done ("they make everything sound hard"), and as taking too long to get anything done. often perceives Marketing as "having no respect for actually doing something", and being unable to either think through its needs systematically or make up its mind (esp. in terms of prioritizing).

Make Communication More Frequent and Less Formal

Organizations often react to internal tensions by "setting ground rules" for communication: legalistic written communication and formal political committee meetings. At best this "papers over" the tensions, but it can neither avoid nor resolve them. In many cases it makes things worse by creating more drag on both teams, resulting in more resentment.

Newly publicized methodologies such as ([XP]) and Scrum, using practices such as Short -s and , make communication sufficiently intense in both directions that formality is greatly reduced in favor of clarity and mutual understanding. A single integrated team operates. Here I focus mainly on the specific vocabulary (capitalized below) and practices of [XP], but you may want to research the alternatives.

Marketing assigns a product designer (called simply the Customer/ in [XP]), who invests significant time. There are no other "business analysts" to filter the communciation. The Customer writes brief requirements in the form of , clarifies them with developers in person, rates their relative business value, then prioritizes them for scheduling after developers have provided cost estimates for each. They stay highly available (e.g. On-Site) to resolve ambiguities and conflicts within hours.

In return they get Frequent Iterations: working, integrated, and bug-free implementations of the scheduled . Typically an Iteration is completed roughly every month. This allows true operational progress to be demonstrated, and triggers a new Planning Game session where User Stories can be added and changed, then a new batch scheduled for the following Iteration. Not every Iteration is necessarily Released to the users, but the constant testing and integration makes that possible. And since User Stories are generally prioritized in order of business value/[ROI], stopping development on a project can happen as soon as the Customer (or senior management) feels he's gotten enough value from the process: there's never a sense of a large "sunk cost" requiring additional development to generate returns.

This Requires Changes in Development Practices

This kind of development often requires some significant changes to the development practices. Test-Driven Development requires that the suite be fully automated, written before the code, and passed completely before any code integration takes place. (a) eliminates separate Designer/Architect roles (note this is not true in all agile approaches), (b) provides continuous peer review as a replacement for separate review activities, and (c) provides a mentoring process to improve the skills of your more junior developers. Not every developer welcomes these practices at first, but many find that the payoffs convince them.

Multi-Project, Multi-Customer Situations Require a Macro Process

Most of the literature about agile processes focus on a single team working on a single stand-along project at a time. When there is a single Customer but with multiple projects, there is some potential for the same developer to work on individual from multiple projects during the same Iteration. But that is not probably ideal - better results are likely to come from having a single Iteration focus on a single project (though the group could be split into separate sub-teams to work on separate projects simultaneously). 's process explores practices for having multiple projects running simultaneously which must being globally integrated into a deployed code base.

When there are multiple Customer factions things become even more complex: forming a coherent isn't easy. One approach is to have a Customer Committee, which runs a periodic (per-Release?) macro using coarse-grained User Stories and estimates to come to consensus on . Another approach is to dedicate a separate sub-team to each Customer (possibly re-balancing resources on a periodic basis).

Becomes Messier

This kind of process is more difficult to follow when developers are external (outsourced/offsite, not as much of an issue with contractors working on-site with your in-house team). Integrating the Customer into the development process is more complicated in such situations. And dynamic environments do not mix well with -s, regardless of the methodology. notes that tracking costs at each Iteration gives the Customer a strong sense of cost vs. benefit for the work performed so far: if the relationship is not going to work out, (a) he discovers it faster (putting less money at issue) and (b) he's received the most valuable chunks of functionality first (assuming at least 1 Iteration's worth of working/maintainable code has been delivered). This reduces the need for fixed-pricing as a method of reducing risk.

Solve People Problems with People

Collaboration problems are People problems. They are often best solved by increasing the communication bandwidth between people. Agile methods aggressively pursue personal communication to bring issues to the surface where there is some hope of their resolution, resulting in increased trust and respect.

See : | | | | | | | |


 




Bill Seitz, fluxent at gmail dot com, Weblog