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)
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.
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.
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.
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?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With