Every developer has an awesome project in mind. Such projects can take some time, depending on ambitions, skill, resources. Let’s consider someone planning to implement his own in 5 years, by working daily, assuming he will not use immediately the keyboard to avoid endless debugging. At this point, a first study over several months would save at least one or two years of refactoring, bringing the project to approximately 4 years. Then, it would be wise to choose a few abstractions, to increase productivity. In all cases, the time for learning and benchmarking those would be amortized during development.