Why Is Process Important?

For enterprise software management, process is important because having a documented way of doing things enables adding new team members more efficiently and provides a mechanism for improvement. Process is important to the business as well as to the engineering team.

What is “Process”?

Process describes what needs to be done, not how it is done. Process allows an organization to see the information that needs to move from one state to another without prescribing how to make this transition. In this way, a process describes the nature of the business without constraining it to a particular toolset.

For an example, the process of writing a research paper hasn’t changed. You look for information in authoritative sources, then copy important quotes with their attribution. You outline what you want to say about your discoveries and then you expand on those thoughts. We used to do this with a lot of notebook paper and books, magazines and journals at the library. Now we do this with word processing software and search engines. The process – the what – hasn’t changed, but the procedure – the how – has.

In developing and implementing a process for enterprise software development, I believe the principles that should be the guiding force are: Balanced Priorities, Collaborative Understanding, Architectural Planning and Continuous Improvement. These four principles correlate nicely with the Core Principles of the Eclipse Foundation‘s Open Unified Process.

Core Principles

Balance competing priorities to maximize stakeholder value

For a software product to be successful, stakeholders and team members must converge on a clear consensus of the following factors:
  1. Constraints placed on the development team (cost, schedule, resources, regulations, etc.)
  2. Constraints placed on the solution
The challenge for all involved is creating a solution that maximizes the value delivered to the stakeholders subject to those constraints. Balance is about making the critical, cost-benefit trade-offs between desired features and the subsequent design decisions that define the architecture of the system.

Collaborate to align interests and share understanding

For a software product to be managed and built successfully, those involved must overcome the fact that there is a diverse range of interests and skills that are brought together by the common goal of bringing the product to fruition. An Enterprise Software Product Management Process should enable a team to live up to the principle of healthy collaboration by

Focus on the architecture early to minimize risks and organize development

Without an architectural foundation, a system will evolve in an inefficient and haphazard way. Such a system often proves difficult to extend, reuse, or integrate without substantial rework. Architecture is the description of the organization of the components of a system and the interfaces by which these components interact. Ways to adhere to this principle typically include:
  • Leveraging the architecture as a collaborative tool
  • Cope with complexity by raising the level of abstraction
  • Organize the architecture into loosely coupled, highly cohesive components
  • Reuse of existing assets
  • Simplifying processes and optimize on strategic systems

Evolve to continuously obtain feedback and improve

Knowing all of the stakeholders’ needs at the inception of a product is impossible and even if it were, those needs are likely to change over time. The intention behind this principle is to continuously get feedback in order to improve both the product and this process. A team can adhere to this principle by:
  • Developing in iterations
  • Focusing iterations on defined management milestones
  • Embracing and managing change
  • Establishing objective measures of progress
  • Continuous improvement through iteration retrospectives