08.01.2013 Views

Back Room Front Room 2

Back Room Front Room 2

Back Room Front Room 2

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Third, this approach leads to a sound architecture.<br />

If the organizational structure grows according<br />

to a pattern language that draws on the key structures<br />

of the business domain, then the architecture<br />

will in turn reflect those key structures. That’s what<br />

architecture is supposed to do—serve the business.<br />

We must continually remind ourselves that it should<br />

do so not for its own sake, but for the sake of the<br />

relationships between the people who inhabit it.<br />

6 KEY PATTERNS OF<br />

SOFTWARE DEVELOPMENT<br />

The key patterns of software development<br />

organizations have come together in several key<br />

collections, many of which were mentioned in<br />

Section 4 above. Many of those patterns have been<br />

woven together into a single pattern language of<br />

about 100 patterns for software development<br />

(Coplien Harrison 2004). Here are some of the key<br />

patterns from that pattern language.<br />

6.1 Engage Customers<br />

If you want to manage an<br />

incremental process that<br />

accommodates customer<br />

input, and if you want the<br />

customer to feel loved,<br />

Then: Engage customers<br />

after Quality Assurance and<br />

project management are<br />

prepared to serve them.<br />

Most of “engaging customers”<br />

means listening to<br />

them more than it means asking them questions or<br />

reviewing Use Cases or UML diagrams with them.<br />

Use Cases may have a place in dialogue with the<br />

customer but are secondary to the practice of<br />

listening. You can observe a lot, just by watching.<br />

And it should be a cold day in Hell before a<br />

customer sees a UML diagram. Customer<br />

engagement means making a customer feel cared<br />

for, and that as much means spending time with<br />

them as it does fixing their bugs and addressing their<br />

requirements.<br />

6.2 Work Flows Inward<br />

If you want<br />

information to flow<br />

to the producing<br />

roles in an organization,<br />

Then: put<br />

ORGANIZATIONAL PATTERNS<br />

the developer at the center and see that information<br />

flows toward the center, not from the center. If you<br />

always feed developers with the resources and<br />

information they need and if you allow them to<br />

control the process (DEVELOPER CONTROLS PROCESS<br />

is another one of our patterns) then the organization<br />

will be working its hardest to deliver the artifact that<br />

matters most: the software to be delivered to the<br />

customer. The alternative is to channel resources to<br />

management. But most managers do not directly<br />

produce anything delivered to the customer.<br />

6.3 Architect Controls Product<br />

If a project has a long<br />

life, Then: use the<br />

architect to carry the<br />

vision forward and<br />

serve as the long-term<br />

keeper of<br />

architectural style.<br />

The goal is to keep<br />

the conceptual integrity<br />

high for the project. The Architect doesn’t<br />

dictate APIs or code but embodies the principles and<br />

styles that are key to success in this line of business.<br />

6.4 Developer Controls Process<br />

If you need to orchestrate the<br />

activities of a given location<br />

or feature, Then: put the<br />

Developer role in control of<br />

the succession of activities.<br />

The Developer role is the one<br />

who builds things that your<br />

customer pays for; other roles<br />

produce internal plans and<br />

artifacts that the customer<br />

never sees. If the schedule is planned around the<br />

Developer, then the Developer is never blocked and<br />

Developer productivity can be optimized.<br />

6.5 Hallway Chatter<br />

49<br />

If developers tend to<br />

huddle around the<br />

organizational core<br />

or supporting roles<br />

are inadequately<br />

engaged with each<br />

other, Then:<br />

rearrange responsibilities<br />

in a way that encourages less isolation and

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!