Developing new software features? Keep this in mind!
With new software functionalities you need to look much broader and further than just the problem and the solution you develop for this. The new features you develop have an impact on your organization, on other business processes and data, on the future, on other applications... in other words: on your success! Have you thought about all the factors that you impact with new software functionalities before you start developing?
Are you developing what was intended?
Various people are involved in the development of software, each with its own interpretation of the same subject. The customer has a problem and describes this from his perspective, the consultant interprets it from his own perspective, the engineer looks at the resulting change request from a different perspective and ultimately the result is not what the customer originally intended. Communication is therefore crucial. You must continuously fine-tune and give feedback to make sure you have understood each other correctly and are able to come up with a reasonable solution.
Do the new features provide benefits?
What is the reason behind the development of the new features? "That's how we did it in the old system" is not a legitimate reason. Software development costs money and must therefore offer value. Return On Investment is what it’s all about. Make sure that you have a clear understanding of how you currently work (software and business processes), how this will change with the intended new features and what benefits this will bring you. Will you start to work more efficiently? Or make less mistakes? Improve the service to your customers? You must be able to motivate how the software development makes your organization more successful.
What is the impact of the functionalities on other processes?
What you develop can function properly, but how does it affect the other processes? Does the rest of the system still work properly? Too often only the new functionalities are tested, while they are an integrated part of a complete application. Assess how the newly developed piece fits within the existing application and processes. Does it fit into what you already have and how you work now? And make sure you have the right tools for testing. Automatic test applications and load tests are essential tools to continuously test existing processes.
What are the consequences for the customer?
Changes can have an impact on existing processes, but also on existing data. How do you ensure that a change you make is backwards compatible? How do you ensure that existing customer data is correctly placed in a new process structure and does not get lost? You will have to think about this before you start, as well as during the process. Again, good communication with the consultant and the customer is not to be underestimated here.
How do you integrate different platforms as efficiently as possible?
Nowadays it is no longer tenable to work on one platform. Mobile applications and web applications are increasingly part of a complete solution. This also raises issues, because different programming languages, platforms and processes need to be seamlessly integrated with each other. Beyond knowledge of the languages ??and updated technical documentation, good process descriptions and test work are very important.
What are the consequences for the future?
Customizations might need to be re-developed when you upgrade or they cannot be developed in the new version. This can be a time-consuming and costly job and the customer needs to invest in changes they already had. Therefore, think carefully when it comes to customizations. Does the customer really need this new piece of functionality? And is it something that solves a short-term problem or is it something that is needed for the longer term? Will the technology in a few years still be used and – equally important - supported?
In addition, you will of course need to consider that in a year from now you may no longer be involved in the subject as much as you are right now, or that a fellow developer must look at your code. So, when creating functionality, do not just think about how you make it work, but also think about keeping it maintainable. This may require a bit more work initially, but it is worth it in the long run. Because before you know, your code grows into an opaque plate of spaghetti and every change you make causes three other things to crash.
Eighty percent of your development work is done before you start programming. Think carefully before you start developing, get a clear and complete understanding of the new features and only then make a well-informed decision how you will do it. That saves you a lot of problems!
Peter Conijn is Application Developer at Dysel and turns modern technology into practical and useful applications for customers.