Engineering Excellence
July 15th, 2008 by ibruce
In my last posting I described initiatives to ensure excellence in our internal processes. I described Integrated Product Development (IPD) which we use to gain information about customer needs, market trends, and technology trends and translate into high quality products that meet these needs and wants.
While IPD is used to decide what products we build, the processes which assure that they are built appropriately – on time, with quality and efficiently - are our Engineering Excellence processes. Since Novell business units came from Novell and acquired companies, we have a collection of engineering processes to choose from.
Waterfall and Scrum
There are different approaches to building software. Traditional waterfall techniques go through structured phases: architecture, design, development, unit test, system test, integration test, and regression are all typical phases. In agile techniques there is continuous build of what has already been developed, and all code is continually integrated and tested to create a potentially releasable product. With our focus on open source, we are involved in community approaches; participants are involved inside and outside our company; and we maintain both a community and enterprise version of the product. There are other variations: spiral, scrum, and extreme programming are popular.
In looking at these choices, we determined that we would get good coverage if we focused our energies on two typical approaches: traditional (waterfall, modified waterfall, the V-Model) and scrum. By standardizing on these two, we largely cover all of the choices – including open source development.
What are some key engineering processes?
There are many Engineering processes. Included in them are:
- Interlock with product management on feature selection
- Project/release planning
- Project management
- Estimating effort
- Putting in the proper buffers to deal with expected but unforeseen delays (e.g. requirements churn)
- Globalization (e.g. double-byte)
- Localization (of content and interfaces)
- ISV support
- User-centered design
- Backlog management (especially for scrum)
- Criteria to exit from one phase to another of development
- Product ship criteria
- Quality metrics and targets
- Testing strategy
- Beta criteria
- Design documentation
- Patch and update
- Multi-site development
- Defect management
- Coding and code inspection
- Documentation
- Tools (e.g. configuration management, bug detection)
- Vendor management
- Re-use
- Incorporation of open source assets
- Security
- Export
- Architecture reviews
- Install
- Common technologies (e.g. user interfaces, databases, directories)
A phased approach
Novell has an excellent reputation for its engineering prowess. For this reason we only recently have selected Standard Engineering Practices (SEPs) in our Engineering Excellence initiative.
We did not rigorously formalize all of the above processes at once. While standardization has benefits, we are careful not to overindulge in process, since that can slow down development in a way that is counterproductive. This year, we have chosen a small number of SEPs to get started. These include the ones that are most critical to developing products in a timely fashion and with high quality. These SEPs relate to: interlock with product management, backlog management, project/release planning, estimation, buffering, acceptance/exit criteria, ship criteria, and design documentation. Even these are not brand new – the standardized processes rely on tried and true processes that parts of Novell have been using for years. And it is our intention to add new SEPs every year -as part of a continuous improvement program.