Use a Defined Process to accomplish a job. '''Problem''' How to do a job: * Determine what needs to be done * Decide how to do it * Do it * Check to make sure it is correct * Fix any problems * Deliver the final result ''How do you know what needs to be done, and decide how to do it?'' '''Agent''' * Yourself '''Context''' * When you need to do a job, and want to improve your working efficiency. * Demands for accuracy, precision, and completeness exceed informal methods. * A systematic framework is required to insure that all the details are properly handled. * You want to balance the legs of the * Schedule(Time) - Cost(Resources) - Quality(Features) triangle. '''Forces''' * A well-ordered and structured process can greatly improve the efficiency and effectiveness of purely routine tasks. * Order and structure will inhibit the creative process. '''Solution''' * Use a defined process when you want to improve your work. * Treat the creative and routine differently. * Break the job up into tasks, and separate the routine tasks from the creative tasks. '''Rule''' * Provide scripts (ProcessAsPattern ?) to make the job easier to do by showing what needs to be done and how to do it. * Provide forms to gather and retain data in a consistent manner. * Provide standards and checklists to guide your work and provide a basis for verifying product and process quality. * Provide process improvement provisions to ensure the process will evolve to meet your ever-changing needs. '''Steps ''' to define a process: * Determine your needs and priorities. * Define the process objectives, goals, and quality criteria * Characterize your current process. * Characterize your target process. * Establish a process development strategy. * Define your initial process * Validate your initial process * Enhance your process. '''Reason''' * Defining the tasks makes it easier to accomplish a challenging job, adds consistency, and enables you to make meaningful measurements. * A defined process allows you to separate the routine work from the creative work. * Once the creative tasks have been separated and bounded, the routine tasks can be made much more accurate and efficient. * Reducing the time required for routine tasks gives you more time for creative tasks. '''Benefits''' * It enables effective communication about the process. * It enhances understanding, and provides a basis for automation. * It supports evolution by providing an effective means for learning and improvement. * It aids process management and planning. "We are what we repeatedly do. Excellence, then is not an act, but a habit." --- MrAristotle '''Resulting Context''' The next time you need to do the same job, you will: * have the scripts and forms of the process available to help you. * be able to collect meaningful data to help you estimate and plan future jobs. '''References''' * AdisciplineForSoftwareEngineering, WattsHumphrey, Addison-Wesley, 1995, ISBN 0201546108 '''Examples''' * IsoNineThousand (ISO 9000, ISO 9001, ISO 9000-3) * CapabilityMaturityModel (CMM) '''Related Patterns''' * SoftwareProcess IS-A DefinedProcess * ProcessPatterns * ProcessAsPattern '''Author(s)''' * KentSchnaith '''Date(s)''' * 22-Jan-97, 11-Feb-97 ---- I don't understand how the solution balances the forces. I can define a process that offers no insight as to whether I'm doing what needs to be done. That a process specifies that something be done doesn't mean it needs to be done. Also, how is the pattern different from: "how do I solve all my problems" for which the proposed answer is: "use a process"? Last, if Humphrey is the cited example of this pattern, isn't the context limited to academic simulations outside professional practice? -- JimCoplien ''Cope, I'd be very interested in your comments on Humphrey's work and proposals, specifically your thoughts on the extent to which they apply in professional environments. Thanks - RonJeffries'' ---- I can see that this needs some work. Not only must the process be defined, but it must have a special quality that encourages people to apply it. I don't think I have communicated this yet. I'm more interested in process than in organization. I have little power to change the organization I work in, but I do have freedom to define and use my own personal software process. -- KentSchnaith ---- How can we keep this pattern from leading to an ever-growing number of unmaintained and ignored lists of how to do things, ala, for example, IsoNineThousand? --RonJeffries ''Ron, you can't. The nature of such defined processes is that they cope with change by adding more process. There's usually not much meta-process there to eliminate wasteful process. --ChristianEdwardGruber'' ---- Also see: * PersonalSoftwareProcess * TeamSoftwareProcess * CollaborativeSoftwareProcess ---- CategoryPlanning