How to Start a Custom Software Enhancement Project?

Custom software enhancement is often confused with custom software maintenance services, because the line between these two terms may seem blurred sometimes. You need to know that software enhancement includes advancements in features, platforms, performance, usability and design. Through enhancement your software application becomes faster, more efficient, more usable, more useful, and more desirable. It’s the next step in your software’s evolution, that’s why you need to know how to prioritize the changes.

Step 1: Get an idea on where to start your custom software enhancement project at.

Create a database of requested changes where users of your solution can offer what they wish to see in the upcoming version of your software. In addition to this, you can approach your most valuable clients/users and ask them directly what kind of new features they would like to add.
Afterwards, ask the development team what kind of functionalities they would add.

They may speak in favor of:

Upgrading the software to be compatible with new database releases;
Adding new statistical analysis and visualization tools;
Adding a new tab to the dashboard;
Improving the search function; etc.

Step 2: Evaluate the information and take a decision.

As with all business decisions, it’s a cost/benefit problem. What is the benefit of adding a feature? What will it cost (including the costs that will result from not adding the feature)? Calculate how much it will cost to add it.
Tip: Usually the cost is calculated in hours that have to be spent by developers to develop a feature.

Analyze the information you got from the users of your platform and identify those missing features that will have a tangible business impact on user experience. It makes no sense to add a feature from which only a few will benefit.

At first, pick those features that have the most benefit for the smallest cost. Resources are often limited, while requirements and desires are not, that is why it is so important to prioritize correctly.

An accurate estimation of a custom software enhancement project may be a herculean task. These questions will help you estimate the project:

1. How will your existing solution be affected by modifications?
2. Do you need to build the new feature from scratch or does something similar already exist in the system?
3. Can you reuse the existing code?
4. Will modifications require the testing of the whole system?
5. How many developers are needed to make modifications?
6. How much time will it take to develop, design and test new features?

The bad news is that you can miscalculate the time and effort required. For instance, the development of a new functionality might take longer than you expected and result in higher production costs.

In order to avoid this kind of errors it is better to entrust your custom software enhancement project to an experienced team of software developers who know how to:

• Thoroughly analyze existing software documentation
• Analyze the architecture of the existing software application and offer structural changes
• Analyze and make changes to the existing code
• Perform software security analysis

Custom software enhancement cannot be made by a low-skilled developer. That’s why you need someone who has experience in adding new features to a code written by someone else, who can understand not only how to build in new functionalities, but also to see the business essence of the system.

One of the most important things in software enhancement projects is to clearly prioritize the requirements and take an approach to incrementally work on one function or feature at a time. Your users will thank you for the changes they’ve asked and waited for.

Custom Software Maintenance Is More Significant than You Think

Custom software maintenance is the last phase of the software development life cycle. Unlike software support services we’ve covered last time, maintenance services include backups, small changes to functionality, bug fixing, optimization for identified performance problems, and other tasks agreed upon in the contract. Software maintenance is complex and challenging, that is why you need to choose your maintenance team wisely.

All types of custom software maintenance are aimed at keeping the system usable and valuable for the company. At the same time, software maintenance has more service-like aspects when compared to software development because maintenance results in benefits for users. Software maintenance can thus be classified as:

  1. Corrective – deals with the repair of faults found.
  2. Adaptive – deals with adjusting the software to new hardware or recent operating system updates.
  3. Perfective – covers minor system improvements, such as the reorganization of data sets within a database so they can be searched faster or use less storage.
  4. Preventive – includes modifications that do not have a direct effect on the user. This type of maintenance aims to prevent problems that can happen in the future and to provide a better basis for future development. That is why it includes updates of documentation and comments.

Maintenance processes vary depending on the software and its complexity, but generally they include:

  1. Problem identification and tracing
  2. Analysis and determination of priorities
  3. Design
  4. Implementation
  5. Testing
  6. Delivery and documentation updates

As you can see from the description of maintenance above, this is a complex process. But maintenance is frequently viewed as an undesirable type of work for mid-level, senior developers, because it seems too constraining. Most companies hire junior level developers for maintenance positions. This is not always a good idea, because a junior developer may not fully understand the purpose and value of the system, and may fix bugs in a clumsy way.

Assigning a different software development team member to be responsible for maintenance every week is a good idea. This way developers keep maintenance in mind and are more focused on producing high quality code. Additionally, programmers will learn from each other’s code. If you wish to maximize your effectiveness at maintenance activities, you need to change the way in which people are assigned to maintenance.

You should have mid-level developers doing custom software maintenance because:

Maintenance is intellectually and technically complex

Code maintenance is not easy as far as it requires finding innovative solutions to existing code problems. Moreover, the maintainer must be able to work with concept design and its code at the same time, and this ability comes with experience.

They know how to program well

Skilled programmers recognize what makes good code good, and working with lots of code will refine that skill. Through maintenance, developers learn how to write clear, optimized code, but new development in its turn helps them put into practice what they’ve learned.

They know how to prioritize

Programmers who do maintenance know better how to prioritize tasks when the platform is live and actively used. The prioritization of fixes sets rigid timeframes and thus improves the team’s productivity.

As Dave Thomas said, all programming is maintenance programming. Even in a new project the code is original only during the first couple of minutes, because afterwards the developer makes changes and optimizes it.

The good thing about maintaining your custom software is that you can save from 10 to 25% of the IT budget in case you decide to work with a third-party custom software maintenance company, because IT outsourcing service providers have lower costs of delivery if compared to original software vendors.

In summary, choose the maintenance team wisely, maintain all upgrades, archive older releases of custom software so you can find it easily, and help your software evolve by adding new features and improving the user experience.