Software development is not easy. If it were, there wouldn't be so much evidence out there that prove that most software projects:
• Fall short of customer expectations/requirements
• Are usually behind schedule
• Cost way more than expected
To make managing software projects easier, I've written about several common software development issues. They will give you the framework that you need for high-level monitoring and planning i.e. information about your expectations, the things you should watch, and how you should react.
1: Software Development and Manufacturing are not One and the Same
Believe it or not, corporations were nurtured in a manufacturing environment. If a business owner wanted to maximize production, he or she would either add another assembly line, increase the machine speed, or create a second shift.
When it comes to the software development process, beginning requirements are more functional than anything else. Adding more personnel to the project won't be of much help but it will increase development costs and reduce the quality of the final product. If the requirements are abstract and the development tools are new, your team will likely be unfamiliar with the environment and the business. As a result, additional time and effort will be needed to figure out what to do and how to do it.
2: Cost and Schedule are not Interchangeable
The proposed schedule and the effort/cost needed to finish a software project are not the same thing. As is expected, every project has an optimal schedule and staffing range. When this schedule is interfered with in order to meet a deadline, the efficiency of the team is negatively affected. But, that's not all, the delivered product's quality will be degraded because of limited testing and increased communication complexity.
3: Your Data is Best for Comparison
Because of the sheer amount of effort, prestige, money, and time that comes with a software development project, it’s downright weird that many companies don't record, analyze, and use the valuable data that they can get from every project. This data creates a composite prediction that highlights how companies create software, identifies weaknesses and strengths, and helps them make realistic estimates and set achievable goals.
Theoretically, if you are able to measure your data, then you can you manage it as well. Thus, it is important that you record the following summary information about each project in a project closedown:
• The amount of effort that was required
• The amount of time it took to to complete the project
• The number of defects that were found during the development process
• What the project produced
While it's true that industry data can quite useful when doing a comparison, this information tells you nothing about your company and how it produces software. Most companies have a pattern that they follow when working on a project, but if a record isn't kept, essential information remains in the ether and they aren't able to discern the feasibility of a certain schedule, staffing plan, or even set a quality standard.
4: Don't Get Bogged Down By the Details
In the beginning stages of each software project, it's important that you ask big questions like:
• Is there enough information available to produce an intelligent estimate?
• Are the quality constraints, cost, and schedule of the project attainable?
• Do we have the staff needed to complete this project?
• Do all parties agree on the change control process?
Many software development projects fail because the focus is on minutiae rather than the big questions about feasibility. Every project must have a project plan with a clear objective – complete with roles and responsibilities. It's also important to address the project's overriding constraints honestly before you begin making comprehensive plans.
5: No One Ever Said That Change Was Free
To complete a software development project effectively, a delicate balance must be achieved between:
• The time needed to get the work done
• The staff needed to complete the project
• The tasks that need to get done
If there's a change to any of the aforementioned factors, it will affect the other two. Also its important to note that late stage changes are the most expensive because of all extra work involved i.e. reworking tasks that have already been done.
In order to handle change effectively, use these two techniques in tandem:
• Make room for a certain amount of change in each project, in both your schedule and budget. Effective project management anticipates unforeseen events and false starts and develops strategies to deal with the issues that aren't as obvious.
• All changes should be analyzed to determine their impact on schedule and cost. Even the tiniest change means that both of these factors will have to be adjusted.
6: Make A Plan And Keep An Eye On Your Progress
All projects must have a project plan with the following details:
• A description of the final product
To be effective, this plan should also be based on past performances. In this way, you can be sure that all of your milestones are achievable. Keeping track of this information will help you get a clearer picture of your ongoing performance.
In truth, most projects are planned out. But, if this were done effectively, why do so many of them fail to meet the quality, schedule, and cost objectives? The following reasons may help you gain some clarity:
• Lack of historical project data leaves companies blind to their capabilities. As a result, they tend to make commitments that they cannot fulfill
• Improper monitoring of a project while in process
If a project falls behind schedule and begins to miss milestones, the human tendency is to try to compensate in future reporting periods. The problem with this solution is that it rarely works. What it does is keep bad news hidden, and when the truth is finally revealed, its too late to take effective action.
7: An Estimate and A Project Plan Are Not the Same
When estimating different aspects of a software project, the two key components that cause uncertainty are:
• The development team's productivity
• The scope of the project requirements
There is simply no way to say for sure that a certain project will be completed in a certain amount of time and for a set price i.e. it will be completed in 9 months and will cost $675,000. Although this may be the most likely outcome, there isn't enough information available for a 100% accurate prediction. But, estimates do provide a benefit – they minimize the uncertainty around schedule and cost. This can be down in a couple ways:
• Estimate to a specific level of certainty e.g. This project has a 90% chance of being completed within the next 10 months and for less than $750,000
• Factor the best case, worst case, and most likely scenario into your estimate
So, when it boils down to it, an estimate gives you an idea of the scope of the entire project. Project plans, on the other hand, are more comprehensive and include details like:
• Individual tasks
• Roles and responsibility
• Critical path
Simply put – although project plans and estimates are not the same thing, they are complimentary.
8: Software Development is More Than Just Coding
When it come to project productivity (ability to meet cost, staffing, and schedule constraints), is the software language that you use important? The answer to this question is “not much” and this is why:
• The innate capabilities of the language may not be as important as the skill level of the team; especially if multiple languages are needed for the task at hand
• Coding only takes up a small percentage of the work in software development. In fact, system and integration testing, documentation, configuration management, project management, design, analysis, and requirements gathering take up abut 70% of time and effort.
The languages used in the development process should be a good match for the team's skills and appropriate for the task at hand. But, they are not a magic substance that will cure all of your ills. Good configuration management, change control and project management play a much more important role in a project's successful completion.
9: Plan for Project Analysis
Every software development firm wants to know how it compares to its competition in terms of efficiency, estimate accuracy, productivity, and quality. Just a cursory look will reveal that the information needed to do this analysis is a normal byproduct of every software development project, but many companies are unable to take advantage of this data. There are two fundamental reasons for this:
• No information was collected
• Collection of data was inconsistent and thus trends and comparison are impossible
Software analysis and measurement don't just happen on their own. Like every business initiative, they need knowledgeable staff, clear objectives, established roles and responsibilities, senior leadership support, and standards. If your quality and productivity are lacking, measuring these aspects won't be of much help. But, analyzing this data will give you a better idea of what your issues are so you can start measuring the effectiveness of your improvement strategies.
Software analysis is a powerful tool for measuring, managing, and planning software maintenance and development. When software is an essential part of a business' success it's important to know your capabilities because it may mean the difference between failure or success.