How to rescue an IT project? The basics of responsible project takeover
Have you ever had to struggle with a software development project going really bad? Or perhaps circumstances forced you to look for another contractor to complete your project? It’s still possible to turn the project into a magnificent product. Discover how we go about it and learn what you should do to turn the tide of your software development struggle.
Regardless of whether you work for a startup company that is developing its new service, are part of an internal team in a corporate environment, or hired a software company to develop an app, the software project that is so important to you is not immune to failure. Sounds obvious? Only until you realize just how many things can go wrong. Before we get to answering the question how to rescue an it project, let’s answer another one.
Why do software projects fail?
Any software project is susceptible to various threats during the entire software development process. There are a plethora of reasons for why you may end up having to worry about how to rescue an IT project.
- Schedule is not consistently followed
It’s hard to imagine an IT project without a proper schedule and a project manager. But even if the planning is there, it takes consistency in monitoring and making sure that all deadlines are met to really deliver the good on time. Oftentimes, it’s not the case. Deadlines and deliverables do exist, but are not strictly and aggressively followed by the project manager. As a result, delays and project overruns pile up to the point that it’s not possible to keep it together without bringing it to at least a temporary halt.
- Planning and estimation are off
The insistence of many customers to pay less and that of software companies to be more cost competitive leads to gross underestimation of advanced projects that simply cannot be developed on a tight and fixed budget. Developing a complex project without a strong initial analysis and consulting subject matter experts in such conditions greatly increases the likelihood of failure. recommend you read our previous article that tackles the fixed price vs time and material dilemma.
- Budget is exceeded
Unless a project is absolutely essential to the organization behind it, it’s not unusual to put it on hold simply due to budget overruns. Coupled with no clear signs of improvement, this may convince the stakeholders to transfer the resources to a different place. Budget overruns may be a result of poor estimation, underfinancing, constant scope changes or simply the incompetence of developers and managers in charge.
- Scope is constantly changed
When the customer insists on changes during development, the result may be an increase in cost that far exceeds their expectation. Deep functional changes to the project late in the process may cause the cost of maintenance or debugging to skyrocket.
- Communication leaves much to be desired
Poor contractor – client communication as well as failure to work efficiently as a group lead to projects being shelved too. Read our web development outsourcing communication problems article to learn more about dealing with communication issues.
- Testing is not included
The bigger the scope of a project is, the more testing should be included to ensure that all separate modules down to the most low level functions work as expected and don’t cause unexpected somewhere else. We’ll go back to the issue of unit testing later in the article.
Software project takeover
The difficult decision to hand an IT project over to another team isn’t always the result of the original team’s incompetence or failure to stick to deadlines and budget. Some takeovers have to do more with strategic decision made by a company to shift resources to more immediate projects or high level structural changes in the organization. Therefore, the quality of the work the new team received may vary to great extent. That quality is crucial in determining how much effort it will take the new guys to get familiar with everything. Any responsible software company that knows how to rescue an it project properly would carry out the following steps.
Step 1 – source code analysis
The first look into the source code of the project should give answers to the most basic of questions – what functionalities are already implemented and what important deliverables are yet to be developed. As one goes through the code, seemingly reverse engineering the way it work, it’s vital to create the documentation on the go – in case it was not built up until this point.
Step 2 – code quality assurance
The initial code quality analysis will not only help understand the inner workings of the app at hand, but also will tell a lot about the quality of the previous team’s work. It should provide an answer to the following questions:
- Are coding conventions (properly) applied?
It makes a world of difference for the new team if the names of variables, classes, functions etc. follow the same patterns and make it easy guess what they do without any deep analysis (for example; calculateCostOfOrder for the name of the function that returns full cost of a order).
- Are design patterns (properly) used?
The same thing goes for design patterns. When used properly in places when they are expected, they make it much easier to understand the context behind the code at hand.
- Are there comments in the code?
It’s a good practice for developers to write comments right in the code as they work their way through an app. Those comments don’t affect the app and are not visible to end users, but for the developers, depending on the difficulty of the project, they may turn out to be anything from time- to life-savers.
Step 3 – developing a documentation
The documentation will help to understand the project from the ground up. It will also prove indispensable for whoever will be in charge of maintaining the app in the future. It should include:
- Low-level description of the application architecture
- Closer look at the procedures related to the installation and maintenance
- Description of classes and layers
- Description of the database structure
Step 4 – working out the system version control
The way developers use the system version control program such as Git or Svn says a lot about how much they know about how to rescue an IT project and how much they care about the big picture of the project. Any change to the project should be well described so that everyone understands what the change refers to. It’s even better when the logs include specific references to the tasks as classified in the project management tool (Sensinum uses JIRA).
Step 5 – unit testing
There are various kinds of unit tests. Some of them may include very low level aspects such as the way each separate function works and to what extent it influences other modules of an app. But at the initial stage of project takeover, even functional black-box testing may be very useful. What it basically means is that developers write tests in order to check whether the app does what it should do. Thanks to such tests, it’s possible to asses the state of affairs at the highest level. From then, decisions can be made as to what functionalities should be developed next and how they influence each other. At a later stage of development, more code-specific tests should be written as well.
How to rescue an IT project? – patiently
Software development is a complex endeavor that almost always entails the presence of many stakeholders. As a result many things can go wrong. It’s important to know that all the steps we described are not meant to point out flaws in other people’s work, but to make sure that the project can blossom again. One also needs to be patient – the initial stage of project takeover, when performed dutifully, is bound to take quite a bit of time to understand the project deeply. This will not only end up speeding up the project in the long run, but help you avoid maintenance problems in the future.
Sensinum is a Polish software house bringing highest quality software development services to companies, marketing agencies and teams. If you need a subcontractor or want to team up with a software house on your own project, Sensinum presents you with highly skilled developers with many advanced project in their portfolio. Our experience in working with different clients guarantees effectiveness and satisfaction. Don’t hesitate to ask about anything, contact us and consult your software idea for free.
Also, read more about the cost of outsourcing IT services.