If you are from a software “Product” company, this is for you…
Let’s begin with an example;
I want my own house; I have my ideas of how it should be. If I am happy with the existing house structures I would probably buy one but I want it to be different so I decided to buy a plot of land and build my own house.
Now here’s the point, as I want to build a house should I buy cement, bricks, wood, metal and build it with professional support or should I make the cement, bricks and cut woods, melt the metals and do it all by myself?
Who would do that right? Its completely a needless effort to make cement when I could just drive downtown and buy many bags as needed in just a couple of hours maybe. Well, unless I want to have my own cement factory that’s a different story. What I want here is a house and not a cement factory.
Why haven’t we really thought through this in the products we build in the world of software solutions? Why do we always want to build everything from scratch? Why is there no trust in other supportive solutions that has been built, tested and published already? Have you yourself had a perfect working software with zero slip-up rate?
I am going to discuss 4 key reasons why we should seriously consider Re-Use over Re-write (because its already written by someone out there!) to be more efficient and effective as an organization and to also support others who are striving just as you are.
If you are from a product company, then you must concentrate on reducing the work and to reuse existing solutions. Why?
Every time you encounter a new feature that needs to be incorporated in the product, ask yourself “Is this my product’s FOCUS?”. “Is my product or the business going to be around that?”, “Is it worth building it from scratch and to maintain one of our own when I could easily purchase an existing solution out there which is developed, tested, published and used by many others in similar capacity?”. Simply allow your product manager to do their job, if you don’t have one its high time you hire one.
Answering these questions with the help of stakeholders and product managers will make way for the best decision. If we are to develop every aspect of the product all by ourselves, the company will lose focus on the main product itself. If you are worried about the cost well, there are many open-source solutions available out there so go search and explore those.
The focus is distributed and a high level of maintenance is required if you want to do everything by yourself. You pay less attention to grow the core product by making way for distractions, yes in such situations I would call it a Distraction. Are you ready to face that situation, and can you afford it?
Always monetize everything. Obviously you aren’t a charity worker or a Not-for-Profit organization if you are making software products.
If your organization has time and money, you may explore new additions to the product, at least try and you can afford to fail and trash the solution. This wouldn’t make a huge impact to the organization. <You got to be Google or Amazon to do that ;)>
If your organization has no time and no money, then you got to roll up your sleeves and do a thorough research.
Always compare end to end. If you are to develop this in-house how many engineers its going to cost to develop and then to maintain it thereafter. Compare this cost with existing solutions out there, see if it costs less. In most cases yes it will cost much lesser as they have plenty of resources who already have the expertise in the selected product area. To develop this in-house is going to cost you extra time, now that’s the next thing to discuss.
3. Save Time >> Time to Market
In the present days of software products, it matters a lot to get something fast as possible to the market for 2 reasons:
- Competition- Your competitors are going to beat you if you are late. So you have to act smart to reduce the amount of development to be able to release it to the market as fast as you can.
- To see the acceptance and performance of the product- Until its out there you won’t know if your product idea is going to be successful or not. If you are going to wait till the whole product is completed, you’re taking a huge risk here.
The whole purpose of agile methodologies is to enable an organization to release products to the market quickly, reduced development and of course accept changes.
There are many supporting tools out there, make use of them to enable the minor functionalities that happen within the software. It has been done and tested already so you could save time in developing that again. Hence, saves time and give you a chance to release it fast.
4. Encourage- Give Help, Get Help
We live in a very competitive world. There are many start-up organizations striving to survive even with the best solutions. Seek partnerships with them to help them grow along with your success. There are many open-source solutions that has been contributed by generous development communities, this wouldn’t cost you anything, you could also contribute in return so the others would benefit too. You could find support for these open-source products in many forums where you could Help them, support them, just as you need it from the rest of the world.
The only way moving forward in this competitive world is to support by making use of the other Software tools and products, which will eventually build a healthy culture where we help each other to be successful in our own chosen path.
Hope you are convinced enough to Reduce the needless extra work, Re-Use existing solutions than to Re-write (now you know why I say that) which will mostly cost you a lot of money and time.
If you are expanding your business and want to build all your own products; no problem, go ahead and good luck to you!
Overall we need to build a very supportive community in the world of evolving technology, be a helping hand and it will be returned to you.
Let me hear your thoughts by adding a comment below :)