So here is a list of popular metaphors used to explain the practice of creating software...
The Traditional Software Development Metaphors
Software Development as Factory
- Heavy emphasis on frameworks (assembly line) and components (widgets)
- Use in large scale development projects (hundreds of developers) or highly distributed projects (outsourced)
- Highly centralized control of processes, tools, etc.
Software Development as Engineering
- Heavy focus on estimation techniques
- Fixes made in planning are less expensive than after “construction” has started.
- Highest project management priority is being “in control”.
- Software development as a science, e.g. objective, measurable.
- Belief that Software Development is an immature or imprecise version of engineering.
Software Development as Model/Architecture
- Architect as “GOD”
- Code is simply implementation of a model
- If the software doesn’t work, either the model is wrong or the code doesn’t implement the model properly.
- Tooling can automatically generate application from the model.
- Software models a business, a process, etc. in design. Goal of software is to accurately reflect real life processes.
- Need specialized modeling languages, expertise, and tools
Software Development as Workflow/Process
- Projects as repeatable processes.
- Workflow is defined up front, and people are compartmentalized.
- Emphasis on distribution, encapsulation and hand-off.
- Project managers are process champions – they make sure the rules are followed.
These metaphors have formed the bedrock of software development. They represent the traditional way of viewing software development as well as project management in general. They have enabled a whole toolbox of techniques, tools and templates for managing projects and software development.
The Radical Software Development Metaphors
These metaphors have become in vogue thanks to various agile methodologies, reactions against the traditional view of software and frankly a lot of failures for the traditional metaphors to come to grips with the complexities of creating software.
Software Development as Craft/Voodoo/Martial Art
- Focus on simplicity, elegance, and craftsmanship
- Toolbox approach
- Apprentice / Master / Guru model
- Software is highly dependent on people
- Software “Design” provides guide to picking solutions
Software Development as Game Playing
- Games are processes without the prescription
- Games can be open or closed, cooperative or competitive
- Rules of the game are enforced, but outcome is unknown
- Games also include collaborative activities such as sports, playing music, dance, etc.
Software Development as Book Writing/Composition/Poetry
- Iteration, drafts, reviews, etc.
- Focus on creativity within an established structure.
- Objective is known, but product is not well defined.
- Challenges in forcing creative process into rigid scope, time lines and budget are recognized.
Software Development as Learning/Experiment/Invention
- Modeling in software is about learning
- Documentation, requirements gathering is a means to collective learning
- Focus on establishment of common language
- Prototyping, experiment, measuring as a way to learn
Which one fits your culture, your organization needs, and your skill set? If you're a start-up company, then the software factory metaphor might not be the best fit. However, if you're building printer drivers with third party outsourcers in India, then perhaps it is the right model.
If you start with basic metaphors, the toolbox and methodologies such as RUP, XP, Scrum, Waterfall, etc. start to make more sense - they're expressions of the underlying metaphor. In addition, if you want to evangelize a new software development methodology (for example, those who are trying to evangelize the use of XP in a traditional RUP organization) starting with a discussion around metaphors and basic understanding of software development might help the discussion, especially with non-technical users.
One last suggestion - this discussion is a great interview topic for Project Managers. If you want to hire an "Agile" PM, then start the interview with the list of metaphors and ask them which one they believe fits their style of working. If they pick one metaphor, then get them to explain how their PM toolbox (GANTT charts, risk matrices, status reports, etc.) fit into the metaphor. The traditional toolbox can be used in an agile context if the underlying metaphor is right - there are ways to use MS Project even if you believe that Software Development is more like writing a book then building a bridge.
7 comments:
Thanx dude! I was looking for something so complete about software development methodologies.
Rohit
Outsourced Software Development company
Nice words.
The other reason a project manager would be a good idea is clear to anyone who had been following the Moodle 2.0 development.Now days many verson are declare.
Hey great post Chris. I was lookin for such such post since a long time. Thanks a lot for the great work.
Hello,great post. Information are pretty exciting and saved me huge amount of time which I have spend on something else instead of searching posts like this. I am waiting for more.
Post a Comment