How to solve: build from scratch or reconstruct a turnkey solution

Let's say someone asked me to create a youtube clone with a lot of settings to support a whole bunch of crazy things that they want to do.

How can I decide if it’s better to build from scratch rather than building a white label or open source product?

Because of my past work experience, I tend to build from scratch, because then I will know the intimate details of what I create. This improves post-release support and scalability. I never feel comfortable working on a turnkey solution for which none of my team has previous work experience. I'm not quite sure what I get. I have no idea if this will do everything I want to do, how well it is documented, and whether I will shoot in the head after 6 months.

There are so many shelf solutions that I have never used, how do I rate them before I decide whether to build from scratch?

What if I create this for someone on a budget, but they also expect a lot of support from me? (i.e., buying a solution matches the budget, but I worry about supporting it later)

+4
source share
10 answers

In creating a clone, it would be more convenient for me to go from scratch, because you have an excellent and proven example for work. (Final specification!) If you try to evaluate or implement any other system in accordance with an existing product, you will be much more likely to encounter serious headaches when the base code does not work towards your final goal. I also agree with all your service considerations.

In addition, evaluating systems is time consuming, not reliable. I once spent a month deciding between a third-party network, and in the end it was basically a die roll. I rated a dozen products for a month. How could I affect functionality? 5% is possible.

+1
source

Question # 1: what is the long-term plan for supporting this site?

Looking back at decades of building / buying decisions, this is the most important question to ask at the beginning.

+1
source

If you can find an open source project with license conditions that are convenient for you (for example, not the GPL, if you do not plan to release your work under the GPL), you should at least take a look at their code in order to get a general idea of ​​how some similar projects worked. Then you have to decide if the open source code is enough for what you want to do so that you can compile it. If so, collect it. If not, to give credit for the ideas that he gave, perhaps borrow a fragment from him here, and write your own (mostly) from scratch.

If the work you would build is closed source or open source, but so complex that you can never understand or change it, then you should give up your own. For me, all you need is whether you can fix the ready-made solution if something went wrong or it doesn’t do exactly what you want.

+1
source

From the posted question:

"Because of my past work experience, I tend to build from scratch because then I will find out the intimate details of what I create."

There shouldn't be any crime, but it looks like you have Inv Invented Here Syndrome . This is generally considered a "bad thing" (tm). Joel Spolsky, on the other hand, has good defense with advice:

"If this is the main business function - do it yourself, no matter what." - Joel Spolsky

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

+1
source

You do not have experience with the product on the shelf, this does not mean that he did not have experience. Look around the network, ask here, if others had a good experience with a particular product, you probably too.

And on the service side, people who spend a year in a row may not participate in the initial development at all, it does not matter to them if the code was made in the house or not, if it is well written.

+1
source

Define a list of important factors and review each product at different levels of detail: D

0
source

Gather additional information (investigation) if evaluation is not possible.

Assess the costs and benefits of both solutions, then you will have a solution, even if it is possibly not implemented at all.

Actually, evaluation / research involves finding all the things you can use.

Here's how the project starts. Good luck

0
source

You can quantify your options a bit more to help your decision.

If you make a preliminary assessment of what you would need to build and evaluate the complexity of each part, you can make an approximate guesswork about how long you will need to build. (To do this, you need to think a little about design.) Then, if you work at an hourly rate, calculate how much your workforce will be for this, increase by 1/3 to take into account unforeseen problems, and add the cost of any tools or packages that you plan integrate.

Do the finished parts exactly what you want, or will they require customization? How many settings? How long will that take? What is the cost of your labor?

Compare this cost with the purchase of finished components. Significant savings?

0
source

If you can identify a package that is about 90% of what your user wants, then go with the package, but ONLY if the user is willing to give up 10% that the package does not support. Most users are actually reasonable and will approach this option, especially since it will be far, much cheaper than conventional development. But if the user insists on 100% compliance with their needs, then go for individual development, plan and pay accordingly.

0
source

it all comes down to features, limitations, extensibility and cost

if the finished product has all three and costs less than you need to write it, then buy it.

0
source

All Articles