Turning a Software Project into a Product
Thoughts and guidelines about turning software projects into software products.
Many software companies are started with a single (validated!) idea that immediately goes to market, but consultancy can also be a rich source of ideas - there is a good chance that something you're paid to build for one company could also be useful to other companies. You don't necesarily have to productise all your projects but over time it can make your work more repeatble (automated?), meaning less work for you while still delivering the same results.
I've been lucky in that a number of projects that I've built for a single client initially have subsequently become products in their own right. Here are some guidelines I've learned along the way.
Getting the project right first
Starting up a project with a new client? Great! While it's good to keep an open mind about a project turning into a product, the primary focus has to be delivering an excellent project for your current customer! You should be focusing on, among other things:
- Identifying the problem to be solved (not just what the customer says it is, ask questions to see if that is actually the underlying issue). This is important as the problem a client says they have might be unique to them, but the underlying problem might a very common issue (or vice-versa!)
- Mocking up a solution and iteratively getting feedback while working through the project to make sure you're on the right path.
- Keeping track of the scope of the project - deliver what you agreed with the client (and get that in writing!).
Project Analysis
Once you've finished the project(s), it's the perfect time to do some analysis or retrospective on how it went. Questions worth asking include:
- What parts of the project took the longest/was the most difficult part? Is there anything I can do to improve/change that?
- What was custom work in this project that other customers might not need? What were the core parts that other customers would need?
- Was there anything else the customer loved (or hated) that I should consider for my next project/product?
- What could be added or enhanced to turn this into a product?
- Can I automate all (or just parts) of the project? How much time would that save 0r allow me to serve more customers simultaneously?
- Is there an ongoing post-project contract that I can add with this customer- for example, monthly data updates?
- Can I charge differently based on any of the above for my next project/customer?
Technical Analysis
The easiest way to 'productise' your software project is through automating some of your work, which is where technical analysis of your projects comes into play. If you have a plan of the different stages of a project with how long they took, then you can start examining ways of automating certain parts of the plan, or outsourcing that part to someone/something else.
To give another example, I worked on data capture system for researchers running scientific studies, replacing Excel (which is prone to errors, resulting in inaccurate data). The project took approximately 4 months from first meeting to delivery of the software, with our own development time accounting for most of that.
A post-project analysis showed 3 parts of the software development that took 1 month each and could be automated to some extent. Automating these parts reduced the development time for subsequent projects to a few hours, allowing us to add many customers simultaneously which would not have been possible previously.
Just remember that it may not be possible to automate everything straight away, but doing the analysis is key in figuring that out - perhaps you can automate pieces of your process while you grow your company?
Look for other companies that may need your solution
After you've successfully completed that first project, you should also look for other companies who may benefit from a similar solution. Don't jump immediately into automating everything - it is worth doing a similar project for 4/5 more clients to get a better idea of what a product might need before making the effort of automating everything.
To give another example, I worked on consultancy project for a company who spent money advertising on Facebook/Google/Bing and on various devices (desktop/mobile/tablet) but had no idea which ads brought in the most revenue or best return on investment (ROI) - e.g. did Facebook ads shown on mobile perform better than the same ads shown on a tablet or desktop, or on Bing Mobile?
We completed the project but quickly realised that this is an issue that many companies have, and planned to turn it into a product. However, we had many more clients before we started automating a complete end-to-end product. Had we started productising immediately, I think we would have not had a full understanding what was needed in a product for this market, and the significant amount of customisation needed. It would have created many more problems than it solved.
How do you find those potential customers? It can be done in a number of ways - look at competitors or similar companies who may have the same issues. Perhaps you can get referrals from previous clients or look on sites live Upwork for companies searching for a solution.
Research the current market for similar products
Researching the current market for similar products is another important step to take before turning a project into a product. You need to know what competitors offer, why your (potential) customers don't use it (maybe they don't know about it, it's too expensive, doesn't fit their needs?). It also helps you position yourself in terms of pricing and what you can offer to potential clients.
Taking the time to do this thorough research lets you understand your competitive environment and also helps you refine your own project significantly in advance of creating a fully-fledged product.
Most of the guidelines above seem self-explanatory, but many people rush straight into automating everything without testing if anyone actually wants what they're building. That's why consultancy is a good way to start - you know someone will pay for a solution, the question is how many others will pay for the same thing! Once you have identified a clear market, then you can start automating all the things!