Back Room Front Room 2
Back Room Front Room 2
Back Room Front Room 2
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