9 Lessons Learned from Effectively Managed Software Projects
Managing software projects and maintaining budget expectations requires effort and planning. As originally discussed by QSM, a quantitative software management firm, there are “9 Keys to Effectively Managing Software Projects.” We agree with the findings from QSM and wanted to share the following lessons learned that can guide business leaders when managing software projects.
#1: Software Development is not Manufacturing
Unlike a planned manufacturing process where the team knows “what to do and how to implement it”, Software is often a discovery process. Developers must uncover project requirements in order to develop a solution that meets functional expectations.
#2: Schedule and Cost are not Interchangeable
The Rolling Stones said it best when they sang “You can’t always get what you want!” This is also true in software development. Business leaders want things done: Good, Fast, Cheap. Most often they have to pick two of these competing priorities.
#3: The Best Data for Comparison is Your Own
Software development varies from project to project, but the information that you can learn from hundreds of projects could help improve your teams overall productivity and efficiency. It is important to record, analyze, and use the schedule, cost, and quality data that the projects generate. Developers can leverage strengths found in success and the gotchas that burned us, to then better set achievable targets and improvements.
#4: Don’t Get Lost in the Details
When planning a software project, it is important to focus on the large questions and identify any overriding constraints on the critical path. Important questions include:
- Do we know enough about the project to make an intelligent estimate?
- Are the project’s schedule, cost, and quality constraints achievable?
- Can we staff the project?
- Is there an agreed upon change control process in place?
#5: Change Doesn’t Come Free
Software development is a discovery process (Lesson #1). We have to consider when development changes should be addressed. Changes to requirements in later stages of development are the most costly since they could require extensive rework to already completed tasks / phases. Every change should be evaluated for its impact on budget and schedule. If a change is accepted, the budget and schedule should be revised.
#6: Plan and Monitor your Plan
Development project plans are based on historical performance to estimate realistic commitments. (This backs up lesson #3, record, analyze, and learn from your data!) Development plans should, at minimum, specify: Software Deliverables; Staffing; Schedule; and any overriding constraints. Monitor your plan, measure your results, and make revisions as needed for success.
#7: An Estimate is not a Project Plan
An engineering estimate for software development will help identify a project budget. A project plan takes into account staffing and scheduling to set implementation expectations. Allowing a developer to complete a design phase before they complete an engineering estimate will vastly improve our chances of completing a project plan on-time and on-budget.
#8: There is a lot more to Software Development than Coding
Software development is completed through a process of planning. The planning process can be approximately 70% of the project and includes: requirements gathering, analysis, design, project management, configuration management, documentation, system integration and testing.
#9: Plan for Project Measurement
Project measurement can be defined differently for each implemented project. For example, a client could measure Return on Investment (ROI), Overall Equipment Effectiveness (OEE), etc. before and after a new development is completed. A development company would measure their estimation effectiveness and/or their quality assurance process as well as overall customer satisfaction and strive for continuous improvement. A development company should pay particular attention to Lesson #3: The Best Data for Comparison is Your Own and Lesson #6: Plan and Monitor your Plan.