Welcome! Are you a client looking to have software developed by an agency? This software development guide is here to help you based on the most common mistakes I’ve encountered over my years of experience in building software for clients.
A bit about me: I work at an agency where we’ve developed over 50 web applications with a team of 5 skilled developers. Our projects vary in size, from small ones taking around 100 hours to larger ones exceeding 10,000 hours. We take care of everything from start to finish, from understanding our client’s requirements and business processes to advising them on the best solutions and finally building and maintaining the applications.
In this article, we’ll focus on the preparation phase – a crucial step before reaching out to software agencies for quotes. It’s also important to consider these aspects during the quotation phase with agencies.
The main focus of this guide is on business and process supporting applications, like backoffice applications. So, let’s dive in and ensure you’re well-prepared for your software development journey!
Make a list of requirements
Duh. This sounds obvious, everyone knows this, right? Unfortunately I have seen so many horrible written software development requirements. Often it’s just a few paragraphs of very vague terms of what an application should do. Think like;
“We want a self service portal for our employees. Employees must be able to upload their own information and documents and certificates. The data must be available in our existing backoffice system. We don’t really trust the employees so we need to accept changes made by employees”.
The small paragraph above is something that literally came to my desk a while ago. It’s not very uncommon to receive ‘requirements’ like that. This was one requirement of a larger system.
When I read a paragraph like above I immediately have a lot of questions;
- A self service portal. Is that a web based application where employees can log in?
- How do you define employee’s? You speak of an existing backoffice system. From the text above I can determine that the backend system has employee information. Do you define employee’s in the backend system?
- What happens after ‘creating’/’inviting’ an employee. Do you want the employee to receive an email with a link to your portal.
- When the employee is logged in, what kind of personal information does the employee need (or should be able to) add/update? Can you please provide a list, or make screenshots of the available information in the current backoffice system and mark what is required for the employee to enter.
- The employee also needs to upload documents/certificates. How do you currently request those? Do the various assignments that you put the employees on require different documents? If so, where are you going to select which documents you require for the employee? And how is the employee notified of the document request? By email?
Of course as a Client you come to the software agency for help, but the more time you put in creating decent requirements, the more accurate the quote will be.
You might be wondering. So how should I define my requirements then?
Well, there are many different ways. In my company we often like a combination of two things.
Part 1 – A process description
A textual process description is great. It doesn’t have to include every tiny bit of detail but make sure it includes more details than the example above. In order to illustrate a bit more on what we prefer to see, we will translate the bad example above to something that we can actually work with to base a quote on:
“We are looking to create a self service portal for your employees. Currently all employees have to deliver specific personal data to us, including certificates and documents. This is done over the email and then inserted in our backoffice system by one of our internal employees. We would like to streamline and automate this process.
When we invite employee’s to our self service portal, we wan’t them to receive an email with an explanation on what the portal does and why an employee is invited. This email also contains a link which the user can use to activate their account (set a password). When the user first logs in, it can see the data as described below. The data is pre filled with data we already have in the system. That means that we need to make sure that employee data in our backoffice system is made visible in the self service portal. This also means that when we make changes on our end, we need to send them to the employee portal. We would like advise on the process please.
Currently we request the following information from our employees:
– Phone primary
– Phone secondary
– First Nationality
– Second nationality
– Closest airport
– Passport number
Adresses (can be multiple)
Next of kin (can be multiple)
– Middle names
– Last names
– Phone number primary
– Phone number secondary
– Relation to empoyee (spouse, mother, father, cousin, child, etc.)
… so on
The employee must be able to update this information at all times.
We need to sync employee data with our backoffice system and review any changes before merging. We plan to use a separate page in the backoffice to track updates made by employees, view details, and approve changes. Denial won’t be immediate; adjustments will be communicated via email. We aim to implement a notification system later. The approval screen will track approvers and timestamps for full transparency.
When we approve changes. The new data can overwrite the data we have at our end. So if for example, someone’s address changed. We can overwrite the data we have at our end with the new data we just approved.
This is a great explanation of what you want the system to do and it gives us quite a clear understanding of the larger idea and what you are trying to achieve. This also allows us to provide feedback on the overall idea and process. If you want something build that consists of many parts then split the process description in various parts.
Part 2 – A visual process description
A visual representation of a larger text is always great. Also helps you as a client to get a clear idea of the process, which is really really really important ;). The visual doesn’t have to be some artistic piece, a few blocks with lines between them works most of the time.
I often use draw.io when creating a kind of visual process / flowchart. It’s free to use and very simple.
Another great idea is to complement the textual description and the visual process description with a list of requirements and prioritize them with the MosCow method.
The MoSCoW method is a prioritization technique used in management, business analysis, project management, and software development to reach a common understanding with stakeholders on the importance they place on the delivery of each requirement; it is also known as MoSCoW prioritization or MoSCoW analysis.
The term MOSCOW itself is an acronym derived from the first letter of each of four prioritization categories: M – Must have, S – Should have, C – Could have, W – Won’t have.
Internal Project Ownership: A Key to Success
Having internal project ownership adds significant value to any software development endeavor. It involves one or more people within your organization who take charge of the project, handle communication with the agency, and make crucial decisions.
You don’t necessarily need to hire an external product owner; instead, look for someone within your organization who can oversee significant aspects of the project and has the authority to make decisions independently. This approach streamlines the decision-making process and avoids the need to involve multiple stakeholders for every little detail.
Don’t underestimate the importance of this step. We’ve encountered numerous situations where a simple question took weeks to get answered because it had to go through a project team of three and then further discussions in the organization. By having a small, empowered project team, you can avoid unnecessary delays and ensure a smoother development process.
Be Transparent About Your Budget: It Pays Off!
When working with a software agency, honesty about your budget is crucial. We’ve witnessed many instances where clients were disappointed with high quotes because they didn’t communicate their budget upfront.
A reliable software agency can provide valuable advice on what is feasible within your budget. But sometimes, clients act like they have an unlimited budget or avoid disclosing their financial constraints. While that’s understandable, it can result in receiving quotes that exceed your spending capacity.
Without knowing your budget, the agency may provide quotes for all the requirements you’ve listed without considering cost-saving options or alternatives. This can lead to demotivating situations, like receiving an 80K quote when you can only allocate around 30K.
Remember, there’s often more flexibility than you might think, and a good agency will work with you to find the best solutions within your budget. So, before investing a lot of time in discussing details, have an open conversation about your budget. This will ensure that both you and the agency can focus on the most realistic and cost-effective options from the start. It saves time and leads to a smoother process for everyone involved.
Research and Selection of Agency: Finding the Right Fit
Choosing the right software agency is a critical step since it’s a significant investment and software development often spans several years. To make an informed decision, consider the following factors:
Expertise and Experience
Look for an agency with expertise in the specific technology and domain relevant to your project. Check their portfolio and past projects to assess their capabilities and the complexity of their previous work.
Request references from the agency and directly contact their past clients. This provides valuable insights into their work, communication, and overall performance. Setting up reference calls with current or previous clients can give you more information about their reputation and work methods.
Size and Team
Consider the agency’s size and development team composition. Smaller agencies may offer personalized attention, while larger ones may have more resources and expertise. Ask about turnover rates within the organization as lower turnover suggests a stable and experienced team.
Internal Work Division
Inquire how the agency divides work internally. Some agencies have separate teams for project management, requirements, and development, while others have cross-functional teams. Having a team with diverse expertise can benefit your project.
Often, when you work with a company that has the actual development done overseas, that means there are way more layers of communication. This sometimes works, but often isn’t great in a more agile approach when not everything is set in stone.
Inquire about the agency’s development process and whether they follow Agile or another project management methodology. Agile methodologies allow for more flexibility and adaptability during the development process. Always ask for an example or if they can show you how they manage work for other clients. We for example always give a demo of our Jira environment and take other clients as an example. It gives a decent view on how a company works.
Support and Maintenance
Inquire about the agency’s post-development support and maintenance services. A reliable agency will provide ongoing support to address any issues that may arise after the software is deployed.
Honestly, we are rarely ever asked about this upfront. But it’s important to have something in place if you want your software to work great for the years to come. It’s also something that many clients don’t factor in. It’s not just a one time investment and you’re done.
Security and Data Privacy
Ensure the agency follows industry best practices for security and data privacy. Look for certifications like ISO27001, which demonstrate their commitment to software development standards.
Remember, software development is not just a one-time investment; it requires ongoing support and maintenance. Take the time to find an agency that aligns with your project’s needs and offers the necessary expertise, security, and support for a successful and long-lasting software solution.
In this guide, we’ve covered essential aspects of having software developed by agencies. To ensure a successful project, proper preparation is crucial. Clearly define your requirements and provide detailed explanations to avoid misunderstandings. Consider visual representations and prioritize your needs using the MoSCoW method.
Internal project ownership plays a vital role in streamlining decision-making and preventing delays. Being transparent about your budget allows agencies to offer realistic and cost-effective solutions.
During the research and selection phase, look for agencies with relevant expertise and experience, consider their team size and work division, and inquire about their Agile methodology. Don’t forget to discuss post-development support and maintenance, as well as security and data privacy measures.
By following these guidelines, you can find the right agency, build strong partnerships, and achieve successful and enduring software solutions for your business needs. Happy software development journey!