Coordination of planning, monitoring and control for software delivery ensuring time and budget constraints. Covers risk management, managing people, teamwork and meeting customer requirements .
Software management is distinct from other domains because:
- product is intangible
- projects are often one-off
- processes are organization-specific and variable
Management activities:
- Project planning
Estimating, scheduling, task assignment. - Reporting
Progress communication to customers and senior management. - Proposal writing
Documenting objectives and approach to win contracts. - People management
- Risk management
Managing People
Organizing work and environment to support effective performance. Poor management is a primary cause of project failure.
Key management factors:
- Consistency
Treat all team members comparably; no favorites. - Respect
Recognize differing skills without discrimination. - Inclusion
Involve all members and consider all views. - Honesty
Communicate project status accurately.
Motivation
People should have enough motivation to work on the projects efficiently. Work and environment must encourage that.
Needs hierarchy (Maslow) — relevant levels for software teams:
- Physiological and safety needs
Not typically at issue in software contexts. - Social needs
Satisfied by communal facilities, informal communication channels. - Esteem needs
Satisfied by recognition of achievements, appropriate rewards. - Self-realization needs
Satisfied by training opportunities and responsibility.
Personality Types
People working in an organization must have the suitable mindset and motivational orientations.
- Task-oriented
Motivated by the work itself. - Self-oriented
Work is a means to personal goals. - Interaction-oriented
Motivated by co-worker presence and relationships.
Individuals combine all three types. And it changes with the situation, culture and group participation.
Teamwork
Collaborative group work. Required for all non-trivial projects.
Group cohesiveness is the state where members prioritize group success over individual interests. Advantages of cohesive groups:
- Shared quality standards emerge from within the team.
- Shared knowledge
Continuity maintained when members leave. - Collective ownership encourages refactoring and continual improvement.
- Cross-learning reduces inhibitions from ignorance of others’ work.
Team effectiveness is determined by 3 factors:
- People
Diversity of skill sets to cover all project activities. - Group organization
Structure enabling individuals to contribute effectively. - Communications
Information flow on status, decisions, and changes.
Group Composition
Homogeneous groups by personality type are problematic:
- All task-oriented
Everyone pursues own agenda. - All self-oriented
Everyone wants to lead. - All interaction-oriented
Excess communication and insufficient output.
For a group to be effective, it should balance all 3 types. Majority of software engineers tend to be task-oriented. Deliberately recruiting interaction-oriented individuals compensates for this imbalance.
Group Organization
Organization structure affects decision-making, information flow, and stakeholder interaction.
- Small groups
Organized informally. Consensus-driven decisions. Leader acts as external interface only. Tasks allocated by ability and experience. - Large projects
Hierarchical structure. Sub-groups own sub-projects. - Agile teams
Always informal. Formal structure explicitly avoided as it inhibits information exchange.
Group Communications
Communication is essential to share work status, design decisions, changes and so on.
Quality of group communications depend on:
- Group size
Larger groups produce harder communication; scale negatively. - Group structure
Informal structure outperforms hierarchical for communication. - Group composition
Mixed personality types and mixed gender improve communication. - Physical environment
Workspace layout can actively encourage communication.
Project Planning
Software Pricing
Price is not equal to development cost. Broader factors influence final price:
- Market opportunity
Price may be lowered to enter a new market. - Cost estimate uncertainty
Price raised to cover risk on uncertain estimates. - Contractual terms
Shared intellectual property can reduce price. - Requirements volatility
Price raised if requirements are likely to change. - Financial health
Contract may be under-priced to improve cash flow.
Agile Planning
- Release planning
Looks several months ahead; decides which features to include in a release based on story priorities. - Iteration planning
Plans the next sprint (2–4 weeks); number of stories reflects iteration capacity.