In our twelve years of software development experience, we learned that businesses usually ask for custom software solutions after trying several off-the-shelf applications that fell short of solving their unique challenges. Most of them aren’t tech-savvy and don’t have a clear understanding of the necessary documentation and specifications required to build a custom solution. This lack of technical expertise, however, is not necessarily a negative.
Every development team will have a slightly different approach and set of requirements, and it’s unreasonable to expect from a business without any ties to software development to be aware of UX wireframes, user personas, or event-storming flows. We often have cases where we get a request for a quote with unusable specs, and we need to inform the client that the time they’ve invested in creating a 100-page document is wasted and will need to be redone.
A proper blueprint of what needs to be developed should be created alongside the software development agency through a series of workshops in the project’s discovery phase.
Nevertheless, that doesn’t mean you can’t do your own research and useful preparations for your future software development partner. In this blog post, we’ll go through key points you should know the answer to, or at least be aware of, before embarking on your custom software journey.
Identify your problem
The first and most crucial step is identifying the problem you want to solve. You should be able to explain what issues you’re trying to overcome and explain them in as much detail as you can. In this first step you don’t need to think about the actual solution, how the software should work, or which features you would need to solve the problem. Sometimes, internal organizational issues or overall business processes might be the actual pain points that software alone can’t resolve. Clarifying the problem will allow your chosen custom software developers to suggest better or newer solutions that you possibly haven’t thought of before.
Let’s say you’re offering shipping services in the EU, and you have a problem with your inventory management. A good problem definition would be, “Our current system doesn’t have an efficient inventory management system, leading to frequent stock shortages or overstocking issues. A lot of the work our warehouse team does is manual, and there’s a 24h+ delay between actual stock and what the system shows”.
Set clear goals and objectives
Once you’ve established the problem you need to solve, think about the objectives and goals you want to achieve with your custom software. What do you expect – increasing revenue, improving the customer experience, and more productivity? It’s a huge plus if you can analyze the current data and set realistic indicators for success. There’s a big difference between “we want to increase our customer satisfaction” and “on our recent polls, our customers gave us a 3.5 out of 5 rating for our customer support service, we would like to see that climb to 4.2 a year after we launch our new software solution”. Precise key performance indicators (KPIs) provide explicit objectives for the development agency and allow you to monitor the software’s success in a measurable way.
Know your users
People will use your software, whether it’s internal staff, customers or business partners. You know them better than anyone, and the developers will need your help in getting to know the future users of the app they’re building. Gathering demographic information, customer feedback, wishes, needs, frustrations… All of this will help design a better overall solution aligned with your expectations and those of your customers or users.
If you can, try to define different types of users (or roles) that will be interacting with the system – what permissions should each role have, and what can they access, do, or see in a new application? How much customization flexibility do you need for creating roles and permissions?
For example, you would say – “From the back-office side, we need a SuperAdmin account that has full access to all parts of the application, a Supervisor account that can see all customers’ businesses and all employees, and a Commercialist account that can only see businesses and employees assigned to him by the SuperAdmin or Supervisor. On the front-office side, we need two types of accounts – Business Owners that can add businesses and employees, manage payments and invoices, and create orders; and Employees that can only create orders for a business they’re assigned to.”
Break down your workflow
As I’ve mentioned in the introduction of this post, a client shouldn’t be expected to be knowledgeable of software development processes and methodologies, but it goes the other way, too. You are the master of your business domain and know the ins and outs of your workflow. Writing down or drawing out the steps of your work processes and highlighting problematic parts or steps that you want automated or streamlined with the new software will help the developers better understand what needs to be solved. This doesn’t have to be super detailed or techy. There are processes you will go through with an agency to sketch these flows (check out Event Storming), but being prepared will speed up the process.
This can be descriptive, it doesn’t have to be a diagram “When new inventory arrives at the warehouse, the process begins with physically checking and confirming the quantity and condition of the received goods. Warehouse workers then manually input details into the existing software system. This includes type, quantity, source, destination, and the expected dispatch date. An operator types in these details, and this manual data entry process is both time-consuming and prone to human errors.”
Prepare a feature wishlist
You have probably tried out some out-of-the-box solutions at this point and have a general idea of what you need from a custom software solution. Or you might have worked with some completely different software that has a certain feature you would like to implement in your business. You can prepare a wishlist of features you want in your custom solution.
No need to go into specifics; simply explaining what tasks the feature needs to do is more than enough. It’s also beneficial to prioritize these features based on the direct value they will create for your business and their importance for the overall process. A full realization of your wishlist might be over your designated budget, but that doesn’t mean that a smaller solution with only the most important features wouldn’t help solve your problem.
If you’re currently using a system or program, mentioning these and describing their shortcomings is important. Maybe you want to keep certain tools or even integrate your future apps with them. For example, you use a Customer relationship management (CRM) system to track and store info related to your current and potential customers and would like the new app to populate and change statuses in your CRM automatically. If a shipment for Client X arrives, scanning it would automatically update the order status for Client X’s open order to “In-Stock” and notify the respective sales representative.
Check out your competitors
It’s also helpful to know if a competitor already has a similar solution to the one you’re looking for and if you want to improve on some of the features to gain a competitive advantage. In most cases, custom software solutions rarely require something completely new and innovative that disrupts the whole market. Usually, it’s a matter of improving upon existing software solutions or tweaking features to fit your business process better. Examples of what you like or want to make specifying the new solution much easier.
Analyze your data
If you already have a software solution you’re using, and it’s gathering some data relevant to your business and the future app, analyzing that data and giving access to the development team is crucial. It helps us gain insight into your user demographic, business flows, issues you’re facing in your day-to-day work, and much much more. Your new app should also collect data and report, so think about what kind of information you want to extract from the system and in which way. What metrics are most important to track? It will be important to know if you need to migrate any old data from your existing system and what adjustments will need to be made for the new system.
You might say, “Our current system collects basic data like order history, customer information & order frequency, but we need to track turnover rates, have a real-time inventory status, and predictive analytics. However, we would still like to transfer and keep the data we currently collect, as it’s very useful ”.
Security and regulations
In relation to the previous step, collecting data comes with regulatory restrictions and security risks. If the software needs to comply with certain industry-specific requirements (like HIPAA, ISO, or GDPR), this needs to be communicated upfront, as it might affect how certain features are developed dramatically. Your custom app might handle sensitive data, and you need to process it in a specific way that might include third-party integrations.
It is essential to provide requirements and standards that must be adhered to. A basic example would be that your company operates within the European Union, and the new application must fully comply with GDPR regulations, which means it needs to have a specific way of collecting, processing, and storing personal data.
There are also a few things to consider that might not be directly related to features and workflows:
- Timeline and budget – if you have a set deadline or set budget that can’t be changed no matter what the development team needs to know about it. If that’s not the case, it’s still good to be aware of your expectations – how long do you think the development will last, and what budget range are you comfortable with? Clients sometimes decline to provide a budget for fear of our proposal aiming exactly for that number, but a range (even a bigger one) helps us determine how realistic your expectations and goals are.
- Support – Will you need post-launch support and maintenance, and for how long? Do you plan on having an in-house team to continue working on the app, and knowledge transfer needs to be done at some point?
- Scalability – Think about your current user base size or data volume and how much growth you expect so that the system can easily scale to meet future needs.
- Constraints – If the users that are going to be using the new app are working with limited bandwidth, intermittent internet connectivity, or the app needs to work on specific platforms (kiosk devices, Linux machines, etc.), this needs to be clearly defined and communicated.
Embracing the abovementioned steps will make you more than ready to take your first step into a custom software development project. This preparation will offer you a better understanding of your software needs, leading to realistic quotes and, ultimately, a successful product launch.