Anyone who has worked on a manufacturing production line is familiar with the concept of time and motion. A time-and-motion study involves the analysis of the operations needed to manufacture an item in a factory, with the intention of reducing the manufacturing time per item and thereby increasing the rate of output. The study calls for every step of the manufacturing process to be scrutinized in order to identify any inefficiency in the production method.
A production line has to be the epitome of efficiency, and production engineers use time-and-motion studies as a technique for streamlining the manufacturing process. Consider a car manufacturing plant, with vehicles rolling off lines in huge numbers. If one step of the process is suboptimal, the result could be a substantial increase in the cost of production as well as fewer cars being available for market.
Manufacturing time is not the only concern of the production engineer. Another factor is quality, as the process must ensure an acceptable and consistent level of build quality for every item rolling off the line.
Although a time-and-motion study is a technique used by the manufacturing industry, the efficiency-focused mindset of the production engineer is relevant to the task of designing a build process for software.
The Software Production Line
Few people would perceive the software development process as being similar to a production line. Developing software is a creative task and is different for each system. Nevertheless, the many and varied activities that make up a software development project are common to all projects and are frequently repeated by each member of the team on an almost daily basis.
A software engineer's tasks include such common activities as pulling down the latest version of the application from source control; building, deploying, and testing new application functionality; and checking the defects log for errors raised against previous releases. These tasks and many more make up a typical developer's day.
Similar recurring tasks exist for other project roles. The quality assurance team has a process for installing the latest releases from the development team and preparing a suitable environment for testing. The team may perform this task manually or rely upon a script for creating a clean environment for each test cycle.
For rapid development to take place, all of these activities must run smoothly and efficiently.
Time and Motion for Software Development
The software development environment and the processes and procedures that drive it must ensure all team members can work expediently and accurately. To achieve this optimal state for the project, teams should look to the practices of production engineers and perform their own time-and-motion studies on those everyday activities that are performed so frequently.
This shouldn't be a matter of hiring production engineers with stopwatches to come in and time people as they work. Instead, efficiency is the responsibility of all team members, and everyone should seek ways to improve the process.
Feeding this information back into a company's development practices is critical to maintaining a companywide adaptive foundation for rapid development, as passing these process improvements from project to project helps establish productive environments for future applications.
With the importance of time and motion in mind, let's consider the intricacies of the build process.