Whether you have just recently come up with a sh*t-hot idea or have already been around the block when it comes to getting your custom software developed, you will quickly realize that it is an extremely difficult challenge. At AppStrax, we have tried, tested, failed and succeeded at developing many software projects. This article explains the best way to manage your outsourced custom software project.
1. Find a trustworthy technical partner
Software development is vast and complicated. You can write a feature a million and one ways. You need to be able to trust that the code being written is indeed doing what it is intended to do and that it is not doing anything malicious.
In addition to intended functionality, you need to be able to trust that your technical partner will be transparent and truthful when it comes to delays in your software project.
With the vast amount of companies and agencies available for hire, this is an incredibly difficult task. You want to vet their past projects, talk to companies that have worked with them before and build relationships with your technical partners. They are, after all, people.
2. Know exactly what it is that you want developed
This is probably the hardest part of the software development process. Software developers can build anything technically possible, given enough time. Therefore, it is crucial to be clear about what it is exactly you want developed. This is not the role of the programmer, this is your role as the product owner/business person.
Once you know exactly what it is you want to have developed, you need to be able to clearly communicate that to the software development team.
The best way to communicate what it is you want is to focus on the end goal and the behavior of the software user. This is also called a user story. Instead of trying to tell the software developers how to do something, rather tell them what the goal of the user is, for example: "As a user, I would like to be able to log in to the website and view a list of all of my account statements."
3. Learn and understand the software development life cycle
As with most software development efforts, there are a million and one ways to skin a cat. The same goes with managing the life cycle of software development. There is no one-size-fits-all. Sometimes a project succeeds by handing over a large specification document and returning to the team once it's done. This form of waterfall project management rarely succeeds in a rapidly changing business environment. There needs to be room for flexibility.
Whether you and your technical partner decide to use agile, or the waterfall method or something else, just be clear that both sides understand the process. There are tons of articles and resources on managing projects through the agile manifesto, Kanban and many others.
At AppStrax, we like to find a middle ground by identifying higher-level goals that can be broken down into as few sprints as possible. Both parties agree on a price and term for the sprints and work together to try and achieve that goal. Once the goal is achieved, you as the client can choose to carry on with further goals/ milestones/ sprints or end the development agreement. This allows for flexibility and reduction in risk as the cost remains known while there is room for flexibility between goals as the software development iteration continues alongside the ever-changing business landscape.
4. Test often
It is important to test your software as often as possible. This needs to firstly be done by the software developers before a task is marked as completed. The sooner you test out the resulted functionality, the sooner you will be able to iterate and improve on said functionality.
There is sometimes a thin line between a bug and a change request. This ties into the first few sections of the article. Sometimes you may have intended for the functionality to work in a certain way and perhaps didn't clarify or communicate that to the team sufficiently. Other times, the software developers misunderstood the requirements. Whichever is the case, as a team, learn from those challenges and continue to improve the iteration process by going back to knowing and understanding exactly what it is you want developed and communicating that as best as possible. It may feel like a never ending loop but that is the iteration process of software development, as long as there is continuous progress.
5. Get user feedback often
In addition to testing the functionality, you also need to test out the functionality against your users, i.e. have you developed a solution to your end-user's problems? You want to involve end-users into the software development process as much as possible in order to iterate and reach the solution sooner.
The functionality might work as specified, but it may completely miss the ball when it comes to end-user requirements. This step usually also precedes the software development life cycle, where you could also test desired functionality in the form of a design prototype before software development begins. In both cases, test with user feedback as much as possible, as often as possible.