Software development product roadmap or strategy as a concept has been around since the early days of computing. It is an integral part of any project, naturally evolving with time and technology.
The Software Development Roadmap (SDR) can be defined as a structured, actionable plan for developing new software products; it requires identifying all activities necessary to meet customers’ requirements within a given time frame and budget limits. The visual product roadmap serves several purposes: it shortens communication between developers and customers by providing them with high-level description or blueprint of what needs to be done or built; projects will always be on track because it’s based on milestones rather than isolated tasks; most important, it allows you to predict failure points before they happen which ultimately leads to a better product.
It’s no news that the advice “Software Development is a process” has been written about lots of times, but you would be surprised how many developers don’t know what that exactly means nor do they care to learn it. How can anyone expect their software products to be successful when nobody actually knows how they are supposed to behave? The truth is, not knowing how to plan your product will likely end up with unpleasant surprises which you’ll have to deal with later on.
Benefits of SDR
Here are some benefits of using an SDR:
1) Communication between customers and developers becomes easier because it provides high-level overview of what needs to be done
2) Providing goal/milestone-oriented planning allows for better estimation and resource allocation
3) Improved customer satisfaction because there will be a regular stream of information to the product development teams.
Of course, SDR takes time to properly plan and prepare but in my humble opinion it is worth it not only for developers but also for customers. In the end, when your customers are happy that way you can sleep well at night.
Do you have an idea? Has somebody suggested something which might be considered as “next great thing” in the software industry? Planning all that stuff before even starting your work on that concept seems like a tough job but once you got it done it will allow you to produce better products without spending unnecessary time and money.
The third step you should consider is to plan your project. At this point you should have an idea about which tool will be used. Do you really need a high level of integration? Tools like Mule are great for quickly building prototypes but they come with the cost of increased complexity and require very good knowledge in order to get them up and running. The same goes for your choice of services, which APIs do you want to use? Which one’s are more stable, reliable?
So many questions that must be answered before even starting the development stage. My advice would be not to rush into it or at least discuss it with developers who already did some integrations using similar toolsets. If possible, take somebody from the QA team or even better someone who will be using the service in production.
Depending on the scale of your project you may consider outsourcing some of these tasks. For example, it can be a very smart move to let somebody else worry about all future REST API integrations and focus only on your workflow and bpm business rules (i.e: hard-coded transactions with fixed steps). The same goes for testing, maybe you don’t need all that regression UI tests or just basic smoke tests? Or doing some sort of 3th party integrations to help automate your QA process by importing dumps/screenshots into bug tracker?
All these are just wild guesses because I have no idea what are you building right now but I’m pretty sure that there is someone filling in your application data and making sure all processes and workflows are covered. Can we get rid of them?
They don’t actually exist… We can not possibly hire enough system testers or QA engineers to go through our app with every possible scenario and every type of customer input we could ever imagine. Even if we did, what is the ROI on such an investment? The return might never happen at all even just because the business needs change – new markets open/close, new features get added/removed, etc. So why bother about these “fake people” right now ?
They do exist! They’re called automated tests (unit tests, integration testing and GUI automated testing) and they will make your life easier without asking you for a salary.
What are automated tests?
Here is a definition from Wikipedia: “In computer programming, unit testing is a software verification and validation method in which components of an application, including its code as well as other checks, are tested to determine if they are fit for use.” In this article we’ll be talking about unit tests , but the same rules apply to integration and GUI testing .
Each time someone implements some new features or fixes any bugs on our apps, he or she needs to test it again manually to make sure everything works as expected. And this process repeats over and over throughout each development cycle. But what if we could somehow automate these boring routine tasks so that every developer could focus on bigger things?
What are Unit Tests? Unit tests are basically automated tests that are designed to test specific parts of an app. They usually test the smallest unit of your app – one method or a group of methods. You can also think about them as “white-box” tests, since they provide complete control over all unit-test cases and enable you to explore what is happening inside it.