Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to decide: build from scratch or reverse engineer off the shelf solution

Tags:

estimation

Let's say someone asked me to build them a youtube clone with a lot of customizations to support a whole bunch of wacky things they want to do.

How do I decide if it's better for me to build from scratch vs. build off a white label or open source product?

Because of my past work experience, I am biased to build from scratch because then I will know the intimate details of what I'm building. This lends to better post-release support and scalability. I never feel comfortable working on off-the-shelf solution for which no one on my team has prior experience working with. I'm not quite sure what I'm getting. I have no idea if it will do all I want to do, how well documented it is, and whether I'll shoot myself in the head 6 months down the road.

There are so many off the shelf solutions I've never used, how do I evaluate them all before I decide whether it's a good idea to build from scratch?

What if I'm building this for someone on a tight budget, but they also expect a lot of support from me down the road? (ie. buying a solution fits the budget, but i'm worried about supporting it afterwards)

like image 242
John Avatar asked Dec 09 '09 16:12

John


People also ask

Under what conditions do you think the use of reverse engineering is an acceptable business practice?

Reverse engineering can be used when a system is required to interface to another system and how both systems would negotiate is to be established. Such requirements typically exist for interoperability. Military or commercial espionage.

When would you use reverse and forward engineering?

Forward engineering helps in making changes in a system and its subjects during the process of reconstruction. On the other hand, the sole purpose of reverse engineering is the examination of a system so that one can obtain a more abstract form of its design.


2 Answers

In building a clone i would be more comfortable going from scratch because you have a great and proven example to work towards. (The ultimate spec!) If you try to eval/implement some other system to match an existing product you'll be much more likely to run into serious headaches when the base code doesn't work towards your end goal. i also agree with all of your maintenance considerations.

Also, evaluating systems is time consuming and not foolproof. i once spent a month deciding between a 3rd party grid and in the end it was basically a roll of the dice. i evaluated a dozen products for a month. How how much functionality could i possibly touch? 5% maybe.

like image 54
Paul Sasik Avatar answered Oct 04 '22 15:10

Paul Sasik


From the posted question:

"Because of my past work experience, I am biased to build from scratch because then I will know the intimate details of what I'm building."

No offence intended, but it sounds like you have Not Invented Here Syndrome. This is considered generally "bad thing"(tm). On the other hand Joel Spolsky has a nice defense with a piece of advice:

"If it's a core business function -- do it yourself, no matter what." -- Joel Spolsky

So, is it your core business to make wacky youtube clones?

like image 43
catchmeifyoutry Avatar answered Oct 04 '22 15:10

catchmeifyoutry