Archive for January, 2009

Data modeling: essential business skill

Friday, January 30th, 2009

Everyone involved in managing or improving a business process should understand data modeling.  For real. And almost everyone is in a position to improve a business process by understanding the current one and making suggestions to improve it.  Understanding a business process means understanding business objects, events, the relations among them, and the business rules that govern the process, and that’s what data modeling is all about.

Sure, data modeling is the first step to designing a database, but that’s just a coincidence.  A well designed database is well designed both because it’s efficient and because it matches business needs.

The first step in data modeling is understanding entities.  An entity is like a business object: examples may include customer, order, product, patient, blogger, post, or whatever.  The next step is to understand relationships among the entities, like  a customer may place many orders or  a post is written by a blogger.   Then the data modeler thinks about the attributes of the entities, like the name of the blogger, the price of the product, and so on.  The attributes and relationships are where the business rules come from.  Examples of rules may be “a post is written by exactly one blogger” or “every order must have a shipping address.” It’s not really a sequential step by step thing, more like a series of really interesting brainstorm sessions, but you get the idea.

Data modeling can get really complex, especially when it includes enough detail to generate an actual database, but that’s beside the point.  We’re talking about clear thinking about business things, events, relationships, and rules.  The point is that this kind of thinking can enable a business person to understand better the things, events, and rules of a business, and then to define more rational processes based on that understanding.

Today a lot of the problems that data modeling helps reveal relate to overcomplicated org charts and artificial complexities of legacy information systems.  Often the business evolves around the system, and it takes clear thinking to untangle the process spaghetti that results.

I worked with one company that organized itself by four different product line channels, served by matrixed support functions like accounts receivable and claims.  Worked pretty well, except when you wanted to know all of your contacts with a given customer, for example.  The same customer could have had a different record for each channel, then more information was socked away in the matrixed support functions.   Furthermore, the customer records were all laid out differently, and had different addresses, contact information, billing instructions, and so on.

Maybe I’m oversimplifying, but shouldn’t one customer have one file with the same information that everyone uses?  It seems to me that if applied in the real world this data-oriented perspective could really make things simpler and more cost effective.

IT PMs need IT experience

Sunday, January 25th, 2009

I’ve heard that “A good project manager can manage any project, as long as they’ve got good people on the project”. In the perfect world, maybe. In the real world, no way.

Those promoting project management focus on characteristics of PMs that are common across all disciplines: interpersonal skills, organizational skills, communication skills, and problem-solving skills.  These are necessary but not sufficient qualities.  Good project managers also have interest and depth in the subject matter of the project.

It seems that the world has forgotten about history’s great project managers. They were overwhelmingly individuals with abiding interests in their fields.  Werner von Braun led the massively successful development of the Saturn moon rocket. General Bernard Schriever, the man cited as “The Father of Project Management” (here), who led the Air Force’s space and missile programs in the 1950s, was a long time pilot with an engineering degree.  Frederick Brooks, with a PhD in Mathematics from Harvard, led development of IBM’s OS/360 operating system, fundamental to IBM’s dominance 0f commercial computing during the 70s and 80s. “As of 2008 he is still engaged in active research there, primarily in virtual worlds and molecular graphics.” (Wikipedia)

I recently witnessed two IT projects, both multimillion dollar efforts and both business-critical.  Project A, a migration to a commercial-off-the-shelf (COTS) human resources system, tracked to budget and schedule and met business objectives with almost no customization.  Project B, another COTS effort for core business operations, suffered huge budget and schedule overruns associated with frequent changes in direction and scope expansions.

Project A was outsourced to an outside consulting firm, who brought in a PM with deep technical experience configuring and customizing the COTS package.  Project B was run by an internal Project Management Office, staffed by project managers who did not have technical or business analysis backgrounds.

Project A’s leadership had the background to understand the road ahead, and spent six months of a two year project in definition, completing detailed business requirements, business process design, and system architecture deliverables.  On Project B, a senior IT manager decreed that the team skip requirements definition, since future business processes would be dictated by the COTS application: a critical early mistake.  Project B’s management did not have the IT background needed to recognize the mistake, which would have been obvious to the Project A team.

For a PM to be effective he or she needs sufficient knowledge to envision the end product in a scope and objectives document, create a work breakdown structure that makes sense to business and technical team members, and know which risks are pivotal and which don’t matter.

In spite of stereotypes about IT folks, many are experienced, articulate, well organized, have great interpersonal and problem-solving skills, technically curious, and would welcome an opportunity to lead an ambitious project.  Make one of them your project manager, provide strong organizational support, and you’ll be more likely to achieve objectives on budget and on schedule.

Architectural templates for business IT apps

Sunday, January 11th, 2009

An architectural template is a generalized architecture that illustrates features common to all examples of a given type of system. A template may be thought of as a “fill in the blanks” form for a project lead, identifying typical components, good analysis and design techniques, general project planning guidelines, staffing skill needs, and more. The data warehouse model is a good example (check out the Wikipedia article on data warehousing). It identifies distinct components and interfaces that make up a data warehouse, and defines the quality and performance characteristics that make them work well.
Most importantly, the template gives rules for deciding whether or not a system is an example of the given architectural type. With a good template, it is possible for a systems architect to compare the template with the general functions and objectives of a planned system. If the problem matches the template, then the architect has a head start on planning and definition.