Saturday, March 3, 2007

From SOA to SaaS

From SOA to SaaS

David shows how to grow a local Service-Oriented Architecture into a federated SOA distributed over the web to use and deliver Software-as-a-Service.

By David Houlding,
Mar 02, 2007

David is an Enterprise Architect and may be reached at david@houlding.net.


"Service-Oriented Architecture" (SOA) and "Software as a Service" (SaaS) are two driving forces in software architectures today. In this article, I explore how to grow a local SOA into a federated SOA distributed over the Web to both use and deliver SaaS. In the process, I examine how "mashups" relate to SOA over the Web and how, if used inappropriately, they may circumvent some of the benefits of SOA and SaaS.

SOA

Service-oriented architecture has established its value in enterprise systems as an architecture for integration, consolidation, and reuse. This has provided a path to integrate and consolidate legacy systems onto a consistent platform for growth and agility going forward. The building blocks of the SOA are services that all adhere to the pattern in Figure 1.

Figure 1: Service pattern.

Ensuring that services adhere to a strict pattern and set of access protocols enables growth in the numbers of services in an SOA without increasing its complexity. This in turn has improved reuse, reduced redundancy, and improved maintainability and flexibility of such systems.

One key aspect of an SOA is that all clients are thin in that they contain no business logic. Rather, business logic is located in services where it can be reused across many different types of clients ranging from web browser UI clients, to IVR clients, to system-level B2B external component-type clients.

Services in an SOA may be accessed using a variety of protocols. For the purpose of this discussion, I focus on web services where clients connect with services using SOAP/HTTP and the interfaces of our services are specified using Web Services Description Language (WSDL).

WSDL is agnostic of implementation language. In the SOA example I present here, the service implementation is in .NET C#.

[Click image to view at full size]

Figure 2: Application architecture.

Figure 2 shows an overview of the application architecture of my SOA example. The Mapping Service is responsible for providing mapping-related services, including geolocation to lookup a latitude/longitude for an address. The following code, from MappingService.asmx.cs , illustrates this:


public LatitudeLongitudePoint geocode(
string street, string city,
string state,
string zip, string country )

The Address Service is responsible for managing addresses, and provides methods such as add, which may be used to add a new address (see AddressService.asmx.cs):

public Address add( Address address )


In the process of adding, the address geolocation is done to assign a latitude/longitude to the address. The Address Service depends on the Mapping Service for this geolocation as in Figure 2, and as shown by the following code (see AddressService.asmx.cs) from the implementation of the add method in the Address Service:


LatitudeLongitudePoint point =
new MappingService().geocode(
address.Street, address.City,
address.State, address.Zipcode,
address.Country );
address.Latitude = point.Latitude;
address.Longitude = point.Longitude;


The Add Address ASP Web Page is responsible for enabling users to enter new addresses, and then add them. Once the address is added, the latitude/longitude coordinates associated with the address are displayed.

SaaS

Software as a Service has established itself on the Web through the provision of APIs; for example, Yahoo Maps (developer.yahoo.com/maps). Here, I focus on SaaS delivered as an API, accessible remotely over the Web at a system level where the consumer is a nonvisual system component. SaaS has enabled new systems to focus on their core value add, while essentially outsourcing supporting services.

This in turn has yielded benefits, including speeding time-to-market and reduced licensing, maintenance, and administration costs.

In an Enterprise SOA, where all services are implemented locally and none are outsourced over the Web, implementations are full in the sense that they contain all business logic, or may be adapters that can delegate to a local third-party framework, library, or product. For example, in a local enterprise architecture, the Mapping Service implementation may simply delegate to some third-party product also running locally. (To see a list of such products, search the Web for "geocoding software products".)

The Convergence of SOA and SaaS

Fortunately, the service interface/implementation pattern in Figure 1 enables a convenient architectural path to align these two powerful trends and leverage their synergies.

As more services become available over the Web as part of the SaaS trend, service implementations can change so that instead of implementing all logic by themselves or delegating to some local third-party product, they instead delegate to some remote service delivered by some third party.

For example, Yahoo Maps includes an API that you can use to geocode an address (developer.yahoo.com/maps/rest/V1/geocode.html). To make use of this geocoding service, you can simply switch the implementation of your Mapping Service and change the geocode method to delegate to the Yahoo geocode web service instead of processing such requests in our local system (see MappingService.asmx.cs):


XmlSerializer xs =
new XmlSerializer(typeof
( ResultSet ) );
WebRequest request =
WebRequest.Create( uri );
WebResponse response =
request.GetResponse();
ResultType result =
( (ResultSet) xs.Deserialize
( response.GetResponseStream()
) ).Result[ 0 ];
point =
new LatitudeLongitudePoint
(Double.Parse
( result.Latitude.ToString() ),
Double.Parse
( result.Longitude.ToString() ) );


This change to your implementation from using a local geocoder to using the remote Yahoo Maps API does not change the WSDL interface for the Mapping Service, so there is no impact to any of our service clients through this change. This agility afforded by the simple service pattern is extremely important as it enables us to make localized changes to services without changes to the service interface and (more importantly) without causing pervasive rewrites of clients, which are risky and costly.

It is important in an SOA to have a uniform set of protocols for accessing services to improve their ease of use and minimize the complexity of service clients, as well as enable the SOA to grow without adding a lot of complexity due to different access protocols. In my SOA example, all services are accessed using web services with SOAP/HTTP(S). However, note that in the Mapping Service geocode method implementation, I use the Yahoo Maps API with an XML/HTTP REST ("REpresentational State Transfer") protocol. In this way, implementations of my services that delegate out to remote services perform a "glue" function in making remote services with diverse APIs and access protocols accessible locally through a set of services that may all be accessed more easily and uniformly using the same protocol.

Service Interface Design

You may wonder why we don't just call out to the remote geocoding service from the Address Service. This is because in creating your SOA, you need to decompose groups of functionality into services. Embedding mapping functionality inside an Address Service makes it less accessible and reusable by other clients. Having a separate Mapping Service enables you to reuse just the mapping capabilities directly. For example, if you wanted to create a map and use geocoding without a full address, you could use your separate Mapping Service directly. Learning how to break down groups of related services for reusability is more of an art than a science, and one that senior architects should play a key role in.

It is also important to design the interfaces of services well so that they don't expose the specifics of their current implementation. For example, even though the Mapping Service used a local third-party mapping product initially, I didn't expose any specific details of that third-party product through the Mapping Service interface. This let me later change the Mapping Service implementation to deliver its service by delegating to some other API such as Yahoo Maps, without having to change the WSDL interface of the Mapping Service.

Good service interface design makes all the difference between technical service plugability and practical service plugability. Remember that you can't change your service interface later without forcing a rewrite of clients of that service, which is something you want to avoid by paying careful attention up front to service decomposition and interface design.

Tracking Best of Breed

The other reason you have a separate Mapping Service rather than call out to the remote service from all over your architecture is to localize or isolate dependency on the remote service for agility. Consider a scenario where the Mapping Service proves useful and several clients in the architecture grow to depend on it. To deliver the best service to these clients, over time you want to track the "best of breed" mapping SaaS available. Today, perhaps Yahoo Maps fills this need. However, perhaps in a year, Google Maps comes out with a much better mapping service that we want to use. If you made the mistake of connecting from several points in your architecture directly to the Yahoo Maps API, then later to change to Google would require a "pervasive" rewrite where you have to touch the code in many places to make this change—a risky and cumbersome task.

Rather, by isolating the dependency on Yahoo Maps API behind the Mapping Service interface, you are able to change over to Google Maps with only a simple local change to the implementation of the Mapping Service, avoiding any code changes to the clients of the Mapping Service. This lets you make architectural changes quickly to track best-of-breed SaaS providers, easily and with minimal risk, making the architecture more flexible and business that depends on it more agile.

Mashups

"Mashups" is a term typically used to describe the integration of services at the web page UI level to create rich web applications with lots of functionality behind them delivered by several different web sites. For example, you could create a web page that has maps, news, weather, and other information all drawn from different remote web application services and integrated with a custom layout look-and-feel. In this case, the SaaS is delivered at the point of the UI. This goes against the grain of an SOA in that it locates logic in the UI to access services where it is only useful to the UI client and cannot be reused by other types of clients.

For example, consider a case where you have nonUI clients such as business systems that want to make use of geocoding services to lookup latitude/longitude coordinates for a given address. If you put your logic to access remote geocoding services in a web page UI, this is not accessible to your nonvisual business-system client components. However, if you provide your geocoding access through a Mapping Service accessible as a web service using SOAP/HTTP, then you support its use for all your clients, both UI and nonUI.

In my SOA example, the Address Service depends on the Mapping Service. This is an illustration of the important concept in SOA that services can depend on each other, and new higher level, more abstract services can build on and reuse or delegate to lower level, more foundational services. This concept is important in the convergence of SOA and SaaS because it illustrates how local SOAs will merge to form federated SOAs and new higher level, more abstract services may be developed that depend on other lower level foundation services that already exist.

In summary, to best leverage SOA and SaaS, you want to do your mashing up or accessing SaaS from behind services, and not in UIs. This approach does not prevent all the benefits of new rich web UIs that leverage powerful mashup tools such as AJAX. It simply means that your AJAX-enabled web UIs talk to your local service interfaces, which may in turn talk to remote services, and your web pages can focus on presentation rather than connecting to remote services.

Challenges

The convergence of SOA and SaaS is not without its challenges and risks.

In delegating to remote services over the public untrusted Internet, you often need to be concerned with security. This risk can be mitigated effectively with a combination of application and communications security. Application security typically includes username and password login to the remote service before use, while communications security may be implemented with SSL; for example, HTTPS.

Licensing is another challenge for SaaS. Many of today's SaaS services are offered free. However, for SaaS to grow to its full potential it must be funded, and some providers of services need to get revenue from the use of their services to offset the cost of ongoing hosting and development of new software services. Early forms of such licensing are emerging that involve signing up at web sites associated with the SaaS provider, providing billing information over the Web, receiving a key in response, and sending this key with requests for services. This approach enables the SaaS provider to accurately bill for their service usage. This model of usage moves SaaS toward a utility pay-as-you-go model.

Network and service reliability is yet another challenge with SaaS. When deciding to delegate geocoding over the Web, one has to consider the scenario of network or service outages that could compromise our local Mapping Service and break its clients. Some strategies to mitigate these risks may include redundant network connectivity, so if one channel fails, another will be available. Similarly, behind a service such as the Mapping Service, you may have the capability to delegate to several remote geocoding services. If one goes down, this failure is detected and the Mapping Service implementation automatically fails over to an alternate remote service. This ensures continuity of service to clients of the Mapping Service.

Conclusion

SOA has proven itself in architectures today as a tool to integrate, consolidate, and reuse services. Concurrently, SaaS has established itself as a successful method to deliver business services across the Web. Together, these driving forces may be leveraged as discussed in this article to deliver federated SOA over the Web, and powerful new business capabilities.

Friday, March 2, 2007

A Beginner's Recipe for a Service-Oriented Architecture

A Beginner's Recipe for a Service-Oriented Architecture

Lesson number one: It's an architectural style, not a technology. Here's what else you'll need to know.

By Paul C. Zikopoulos , DB2 magazine
Oct 11, 2006

Lesson number one: It's an architectural style, not a technology. Here's what else you'll need to know.

Every vendor has a service-oriented architecture (SOA) story; they just might not realize it yet, partly because the SOA terminology can be confusing to the uninitiated.

For example, when most people hear the term SOA, they automatically think Web services. There is a lot more to SOA than Web services, however. In this article, I give you an introduction to the IBM approach to the SOA architecture.

The SOA Recipe

First of all, SOA is an architectural style, not a technology. You implement an SOA architecture using technology, but too many people get lost looking for some product or technology right off the bat when SOA is primarily about a thought process. Truthfully, SOA could have been more aptly named ‘Save Our Architecture’ because its benefit is a free flow of business process data, both vertically and horizontally, from the enterprise to your supply chain and throughout your value net.

Start with some services…

To understand the SOA framework, you need to start at its atomic layer, a service. A service is really just part of a business process, again, not technology here. If you’re an IT savvy professional, this initial step may not come naturally to you, so I recommend you start by thinking about what your business does on a day-to-day basis. Every business has an objective.

For example, a financial company’s objective is to make money through a product family – one of those family members may be debt instruments. Finding ways to get you to spend money you don’t have is a key revenue instrument for financial firms and this is where debt instruments come in. Your typical financial firm offers a myriad of products, such as mortgages, that are tied to this fundamental business model. People take out a mortgage to borrow money that they don’t have to buy an asset, typically a house. A house is a fixed asset, which is typically recognized as a good thing for individual wealth creation. Mortgages have different life spans and amortization schedules, and come with interest rates that are usually within one to three points of the prime rate.

Credit cards are another debt instrument that financial companies use to generate wealth. They come with fancy monikers (like platinum, gold, and so on) and awards (travel miles, catalog merchandise points, and more), but they all have one thing in common: they have very high premiums over the prime lending rate and, if you don’t pay them on time, generate lots of revenue for financial companies, and usually lots of headaches for you.

So let’s get back to the service part of SOA. Think about what this company does on a day-to-day basis to support its business objective. Think of that as its high-level service, and break that up into the processes that underpin that operation. This exercise yields repeatable business tasks or components, called low level-services. An example of a service is a credit card application.

When you apply for a credit card over the Internet, you set a process in motion. You fill out some sort of Web form and submit it. That Web form typically ‘spits’ out XML to a backend process. Behind the scenes, a number of low-level services are fed the information from the XML and invoked. In this example, it’s likely a credit check, and if successful, it’s followed by a new account creation service. More advanced process modeling would include the entire end-to-end workflow. A simplified example is shown below:

Figure 1

You can see the various services in this previous example – remember, I’ve still not mentioned any kind of technology, or vendor, for that matter. I have no idea what technology is used to match the credit limit to the income request. I have no idea what data server is used to hold the information that can be used to determine if the applicant has good credit or not, or what mining algorithm is used to figure out the credit score, or what operating system these services are implemented on. The preceding figure just illustrates a bunch of repeatable business tasks.

A dash of service orientation….

The next step in understanding SOA is service orientation, which is a way of integrating your business as linked services. More importantly, service orientation is about the outcomes of those linked services. Again, I’ve still not mentioned any type of technology yet – it’s still a thought process.

Imagine building blocks of services that support your business objective. Some of the services that could be associated with my credit card application example are shown below:

Figure 2

The service that processes a credit check could invoke some internal mining algorithms in a local database, but in all likelihood is fulfilled by a company that manages credit ratings (such as Experian). Another service could get an applicant’s details from a relational local database, which could be used as input, or as a complement. The service that processes a credit check could invoke some internal mining algorithms in a local database, but in all likelihood is fulfilled by a company that manages credit ratings (such as Experian). Another service could get an applicant’s details from a relational local database, which could be used as input, or as a complement, to the process credit scoring engine. Finally, another service could use the information from the previously mentioned services to calculate the interest discount rate on the debt instrument. Economic theory dictates that the interest rate is really a function of risk (which is a big part of what is fueling the Basel II accord). The output of this service would likely be a lower interest rate for credit card applicants with good credit scores, and a higher one for those without.

Finally…some technology

Now that you’ve got your repeatable business services defined in the context of the philosophy of their implementation and workflow, you’re ready for the SOA part. In fact, here’s where the technology starts to come into play. SOA is simply the IT architectural style that supports the service orientation thought process and makes it a reality. After all, the customer details have to exist in some database, and the discount calculation algorithm has to be written in some language (such as PMML), and the whole application has to be architected around some programming language (.NET, PHP, or Java, and so on).

So using different programming languages, data stores, and so on, the modeled business processes have their jobs to do. The whole point of SOA, as you will see via the composite application in the next section, is that the service requester (the one asking for the results of these business processes) should be agnostic to the underlying technologies that provide the service and support them (programming language, operating system, database, and so on).

The Information Management brand in the IBM portfolio provides a feature-rich and flexible foundation for SOA. (You’ve likely heard the ‘Information as a Service’ slogan around its set of core products. The Information Management brand provides all sorts of native IBM data servers and content repositories, but extends the reach of data integration with products such as WebSphere Information Integrator to reach virtually any data asset or artifact: databases such as Oracle, SQL Server, Teradata, Sybase, and so on; XML artifacts, Microsoft Excel spreadsheets; specialized life science research databases such as BLAST; WebSphere MQSeries message queues; Web content; heritage data stores such as ADABAS, IMS, IDMS, and many more.

All of the data sources mentioned in the previous paragraph can be accessed without regard to the underlying technologies. For example, using the SQL API in the DB2®family of products, you can access data that resides in Oracle and SQL Server databases. The fact that SQL Server has a MONEY data type while Oracle uses NUMBER is of no consequence to the application developer. The Information as a Service architecture abstracts these complexities and automatically compensates for them through data type conversion services, function compensation services, optimization services, and more. That cornerstone of SOA has been a philosophy of the Information Management brand for a long time – long before SOA was even called SOA. This heritage provides a rich set of technologies to build the optimal SOA solution for your business.

For example, many Visual Basic.NET developers understand how to write a database application using ADO.NET but they may not know how to interact with a WebSphere MQSeries message queue. The Information as a Service framework provides a foundation by which the queues look like tables, and functions are provided to read, read-destructively, or write to these ‘tables’.

The composite application: it’s what uses the SOA?

Composite applications are the active services that have been assembled and strung together to support the business objective. SOA helps make building and adjusting composite applications fast, easy, and flexible, and that’s the whole point. If you take into account the previous figures in this article, a composite application could be represented by these blocks being connected together to satisfy the end-to-end business objective, as shown below. (I’ve added some other services to this figure to illustrate the vertical and horizontal business integration capabilities of the SOA.)

Figure 3

In the preceding figure, you can follow the original three services I’ve detailed in this article. This horizontal flow ends with a service to ship the client a new credit card. However, there could be some other workflow that is triggered from this particular workflow and thus becomes part of the composite application. For example, if the client is approved for a credit card, he or she may be eligible for 15,000 bonus points, which can be used to purchase products from the merchandise reward catalog. This secondary workflow is handled again by services and includes getting a price, calculating the shipping quote, and saving the ‘shopping cart’ for future reference or updating inventories if the product is eventually purchased.

Again, in this example, all of these blocks can be instantiated by different operating systems, programming languages, databases, repositories – the composite application just calls on the business processes it needs to complete the work.

So what about the technology?

For the most part, this article hasn’t discussed specific technologies. Yes, I did say that the IBM Information Management brand has a set of products in which the SOA philosophy is well engrained. But what components can you use to build an "SOA-ized" environment?

The IBM software portfolio provides a number of SOA-enabled and enhancing products through its various brands: Rational, Tivoli, Information Management, WebSphere, and Lotus. These software components allow you to model, assemble, deploy, and manage the entire SOA life cycle.

In addition to this, the IBM software portfolio allows you to superimpose governance controls on the life cycle, as shown below:

Figure 4

This SOA life cycle starts with the Model phase. In this phase, you gather requirements for designing your business processes. (The WebSphere and Rational brands can come in handy here.) Specifically, you understand the information assets that are available to you (and they may or may not all be yours) and link them to business context. In the Model phase, you’ll work with information metadata, develop data and content models, map information to business processes, and more.

Once you’ve tuned and optimized your business processes, you assemble the services using technologies such as the DB2 Universal Database (DB2 UDB) data server, along with WebSphere Information Integrator, WebSphere MetaStage, or the WebSphere Information Server (among other products that you can use from this portfolio). Rational products can be used here as well.

Finally, you’ll also typically choose the deployment type of your SOA here in this phase. While you’re likely already aware of Web services as being a deployment type, others exist such as Enterprise JavaBeans, Java Messaging Services, or MQ services to power an Enterprise Service Bus (ESB), and more.

These assets are then deployed into a secure and integrated environment for integrating people, processes, and information. The SOA environment responds to service information requests in its repository, and products such as WebSphere Application Server can provide the runtime environment, with products from the Tivoli portfolio used to deliver service responses, load balance requests, enforce service policy, and more. Products such as DB2 UDB can provide the persistence layer of the data (and optionally the runtime environment via the componentized WebSphere Application Server that comes with DB2 UDB) in a highly scalable and reliable manner. While the SOA framework is running the business, you need to manage and monitor it to ensure performance, availability, and security, and to meet service levels. You can do this via a number of log and monitor services provided by various products in the IBM software portfolio.

Once the SOA architecture is deployed and running, clients manage and monitor it so as to evolve the operational efficiencies of the business. Information gathered during the Manage phase is fed back into the life cycle for continuous process improvement – making it a closed loop feedback system.

Underpinning all of these life cycle stages is governance, which provides guidance and oversight for the SOA project. This information allows IT to better align the infrastructure by defining and redefining information management rules and policies.

Wrapping it Up…

In this article, I've given you the main ingredients and steps to implementing an SOA architecture. The main thing that I want you to take away from this article is that SOA is primarily about a thought process. Using this thought process, you can deliver great benefits to your business. Those benefits include a more efficient and flexible IT infrastructure, which can, in turn, help you evolve into what IBM calls an On Demand business.

Paul C. Zikopoulos is an award-winning writer and speaker with the IBM Database Competitive Technologies team. He has more than ten years of experience with DB2 products and has written numerous magazine articles and books about it. Paul has co-authored the books: DB2 Version 8: The Official Guide, DB2: The Complete Reference, DB2 Fundamentals Certification for Dummies, DB2 for Dummies, and A DBA's Guide to Databases on Linux. Paul is a DB2 Certified Advanced Technical Expert (DRDA and Cluster/EEE) and a DB2 Certified Solutions Expert (Business Intelligence and Database Administration). Currently he is writing a book on the Apache Derby/IBM Derby database. You can reach him at: paulz_ibm@msn.com.

18 ways to be a great boss

18 ways to be a great boss

FastCompany.com | February 16, 2007 | 13:36 IST

There are few career moments as exciting -- and these days, as perilous -- as taking over the top job at a company, business unit, or department. But what exactly do you do once you're in charge?

This online guide provides 18 tactics -- and case studies -- to help you take the reigns running.

1. Begin your transition before you start the job. Use the interview process to get an early jump on learning about the organization. Ask critical questions: How are decisions made? What are the key challenges? Which functions are strong, and which ones need to be overhauled? Use that information to build some initial hypotheses about how you would change things for the better.

Take your cue from Steve Bennett who took over the CEO spot at Intuit Corp. "The interview process is where you start," he says. "That's where you ask all of the questions about what it takes to be successful."

2. Travel widely within your organization, listen carefully, and look for patterns in everything you see and hear. Bruce Patton, co-author of Difficult Conversations: How to Discuss What Matters Most and a partner with Vantage Partners, a Boston-based relationship management consulting firm, advises new leaders to spend a lot of time listening and asking questions. Talk to employees up and down the hierarchy. "Soon you'll start to see a pattern about what's going on," he says.

Within his first month on the job, Steve Bennett hit the road and tested the hypotheses that he had formed during his interviews. In 30 days, he visited dozens of locations and talked to hundreds of people, gathering feedback and insight on what was right - and wrong - with the firm's operations.

3. As you ask questions, look for the rising stars whom you want as part of your team. Your listening tour may help you identify the key players whose skills you need as part of your management team. "If you're engaging in high quality inquiry, you'll want to keep people who had good answers," Patton says.

Asking tough questions is a critical skill, but not necessarily a pleasant experience.

4. Identify the kind of people who will flourish in the environment you want to establish. Even before interviewing people to assemble your team, take the time to identify the challenges ahead -- and the kind of people who are motivated by those situations.

When Scott Lutz was tapped to lead 8th Continent, a soy-milk company borne of a 50-50 joint venture between two corporate giants, DuPont and General Mills, he knew he needed to assemble a team of renegades - people with "the right mix of passion and courage," Lutz describes. "They had to be willing to do things that hadn't been done before."

5. After you've identified the ideal individual, identify the ideal group. Don't stop at finding the type of person you need. Envision how this person will interact with others to get the goals accomplished. Assemble the ideal team. In some cases, literally.

When Pat Gillick took over a mediocre Seattle Mariners club in 1999, he was keenly aware of the kind of group it would take to win a World Series. "Chemistry is unbelievably critical," Gillick says.

"If you come into a workplace, and there is inconsistency, there are disruptive employees, or you don't know what to expect, then you won't be a motivated employee." The Mariners' quest for a happy clubhouse includes paying close attention to the wives and kids of the players. Gillick meets with wives early in the season to work out everything from ticketing to security to the potentially inflammatory problem of who sits where.

6. Acknowledge what you don't know. Identify those around you are the experts and don't be afraid to lean on them. No one expects an incoming leader to know everything. And perhaps there is nothing more off-putting to a future team than someone who mistakenly thinks he or she does.

After 15 years as a manufacturing engineer at Boeing, Bruce Moravec had mastered his technical discipline. But when he was promoted to run the 757 Stretch Program, an ambitious mandate to stretch the plane by 24 feet, add functionality, and do it in less than two years, he understood he'd have to gain the confidence of people who worked in areas he knew little about.

"I had lots of credibility as a manufacturing engineer and second-level manager. But suddenly I was responsible for tool design, fuselage definition, all kinds of areas that weren't in my background."

7. Don't be afraid to listen to people who disagree. Listen, actively, to the people around you, especially those who challenge your assumptions.

Take it from Carlos Ghosn, Nissan's president and CEO and the engineer of the company's dramatic turnaround. "When I came to Nissan, I engaged in what I call 'active listening' with as many people as I could. I also got a lot of advice from outside the company, most of which was very conservative. People told me, 'You can't go fast in Japan. You can't close plants in Japan. You can't reduce head count.' I listened carefully, even to the opinions that totally contradicted my own beliefs, to make sure that when I made my decisions, I hadn't missed anything."

8. But clean house if you have to. Depending on the situation you step into, no matter how clear your vision is, and how evangelical you are, acknowledge that there may be people - some of whom may have already seen your predecessors come and go -- who are too jaded to follow.

Take Dale Fuller's experience. When he took over an ailing Borland Software, which at one time was a pioneer in developing developer tools, five different CEOs had already come and go in the preceding three years.

Skeptics assumed that Fuller was the latest in a series of short-term custodians. Rather than embrace the new direction, they figured that they'd just wait Fuller out. Fuller had other ideas. Within six months, he fired about 400 people, including 60 of his top managers.

9. Establish a way to communicate with -- and listen to -- your entire team. Your strategic course of action is only as effective as your ability to communicate it. Have the pipeline and protocol set up to get your message out there, and don't forget that communication goes both ways.

Dick Brown took over EDS in 1999 and moved swiftly to change old beliefs and behaviors, unleashing a set of practices -- dubbed "operating mechanisms" -- that were designed to create a company-wide culture based on instant feedback and direct, unfiltered communication. One of these practices is the "monthly performance call."

At the beginning of each month, 125 of the company's top worldwide executives punch into a conference call that begins promptly at 7 AM central daylight time. Participation is not optional.

10. Don't trash your predecessor, but don't be shy about promoting your own agenda. Do not assume that the prior administration screwed up or lost sight of the big picture. There's probably an element of truth in that.

But it's almost certainly true that they had a different disaster that they were working to avoid, Patton says. If you've got a clear vision of what needs to be fixed, by all means, implement it. Then ask yourself what led those really smart people to do what they did in such a way that it made sense to them?

Talk about a predecessor: when Melvin Wearing took over the role of chief of police for New Haven, Connecticut, he filled the controversial shoes of someone who resigned after fathering an illegitimate child with a convicted prostitute. On February 24, 1997, his first day on the job, Wearing moved quickly to telegraph the changing of the guard. First up: a visit to each of the day's four lineups (the roll call of officers that begins each shift) -- a practice that his predecessor had shunned.

11. Settle on a few major priorities. You can't fix everything at once. "Typically, you can't do everything you want to do, so you need to make some strategic choices," Patton says. "This is where you begin to align the organization around a common vision for the future."

Perhaps Wearing's most far-reaching legacy will be his focus on quality-of-life crimes -- the so-called broken-windows approach to policing. Just as Rudy Giuliani cracked down on New York's squeegee men, Wearing declared war on New Haven's vagrants and hookers, street-corner dealers, and boom-box blasters. By nipping misdemeanors in the bud, Wearing argues, police may deter more-serious crimes. His approach seems to be working. In 1997, New Haven logged 13,950 major crimes; in 2001, the city had a total of 9,322.

12. Meet the customers. Balance the big picture vision with-front line views. There is no reconnaissance more important than scouting out the territory where your products and services meet their customers. Seeing the customers actually interact provides some invaluable information.

When Gary Kusin took over as CEO of Kinko's Inc., he went into every single one of its 24 markets in the United States, visited more than 200 stores, and met with more than 2,500 team members.

13. Target a few early wins. Momentum counts, and nothing succeeds like success. It's critical for a new leader to create momentum during the transition, say Dan Ciampa and Michael Watkins in their book, "Right from the Start: Taking Charge in a New Leadership Role." Pick some problems the organization has not been able to address and figure out a way to fix them quickly to establish a new direction.

When Jim Berra was promoted to head the Starwood Hotels & Resorts Guest program in July 2001, and like any newcomer to a job, Berra was keen to have a few big wins to energize his new team. "I didn't want to solve world hunger in the first three months, but I was looking for a couple of things that would pay immediate dividends," he says.

So he focused on three priorities: First, he had to build better awareness of the company's Preferred Guest program, which lagged behind Hilton and Marriott in visibility despite its unprecedented policies of having no blackout dates and no limit on free rooms. Second, he had to find a way to measure the program's performance. And finally, he had to research customer segmentation for future promotions.

14. Keep an eye on the clock. Faster is almost always better. "Make sure your time is used to its best advantage," says Patton. "When you're new to an organization, many people will want your attention. While it's pleasant to swap stories about each other's golf game, you're better off saving them for the fairway, and using the time in the office to engage in a learning-oriented conversation."

Here's a tip: Create a "Stop Doing" List. Take a look at your desk. If you're like most hard-charging leaders, you've got a well-articulated to-do list. Now take another look: Where's your stop-doing list? We've all been told that leaders make things happen -- and that's true. But it's also true that great leaders distinguish themselves by their unyielding discipline to stop doing anything and everything that doesn't fit.

15. Don't be afraid to make mistakes but be sure to fix them faster than you make them. Any new situation is fraught with hazards, but taking over a top job exposes a new leader to pitfalls ranging from the personal to the organizational.

Accept that you can't know everything in your first six months, and even an extensive professional background can't insulate you from making mistakes in an unfamiliar company and culture. The key is to assess yourself and your progress as rigorously as you do your new colleagues and workplace, and to be prepared to make your own course corrections as you go along.

Last year, Lydia Shire and Paul Licari took over Locke-Ober, a Boston restaurant and Brahmin institution founded in 1875. The entire city was watching, and everybody had an opinion. And the first 10 days were a disaster. "You could have put me in front of a firing squad and it would have felt better," Licari shares.

16. Be wary of reckless re-engineering. If you're assuming leadership of a large organization or department, take the time to understand its current trajectory. Making too drastic and immediate a change can derail both confidence and long-term strategy. Stanford Business School Professor, Jim Collins, warns leaders to be cautious. "Why do overhyped change programs ultimately fail? Because they lack accountability, they fail to achieve credibility, and they have no authenticity."

Consider the Warner-Lambert Co. in the early 1980s. In 1979, Warner-Lambert told Business Week that it aimed to be a leading consumer-products company. One year later, it did an abrupt about-face and turned its sights on health care. In 1981, the company reversed course again and returned to diversification and consumer goods.

Then in 1987, Warner-Lambert made another U-turn, away from consumer goods, and announced that it wanted to compete with Merck. Then in the early 1990s, the company responded to government announcements of pending health-care reform and re-embraced diversification and consumer brands. Between 1979 and 1998, Warner-Lambert underwent three major restructurings -- one per CEO. Each new CEO arrived with his own program; each CEO halted the momentum of his predecessor.

17. Don't be afraid to look for ideas in unusual places. Don't just read your own industry's trade journals. Cast a wide net for insights -- sometimes the breakthrough idea lies in the triumphs of a completely different industry.

When Rob McEwen, took over an underperforming gold mine in northwestern Ontario, he assumed a tough situation: The gold market was depressed, the mine's operating costs were high, and miners were on strike. His breakthrough - an unprecedented move to make his company's proprietary information public and launching a contest to develop the mine over the Internet - came from learning about the Linux operating system and the open-source revolution.

18. Finally, ask yourself who do you really want to prevail, you or your organization? You'd be surprised by the difference.

Consider this: Jim Collins and his team at Stanford Graduate School of Business and asked, what makes a good company great? They started with 1,435 good companies, examined their performance over 40 years, and then identified 11 companies that became great.

Here's one thing they found: The CEOs who took their companies from good to great were largely anonymous -- a far cry from the celebrity CEOs we read about. Collins believes this is more a matter of cause and effect than an accident. There is something directly related between the absence of celebrity and the presence of good-to-great results.

Why? First, when you have a celebrity, the company turns into "the one genius with 1,000 helpers." It creates a sense that the whole thing is really about the CEO. And that leads to all sorts of problems - especially if the person goes away or if the person turns out not to be a genius after all.