To reduce development time it is important for developers to reuse knowledge from previous projects and leverage work done in the past. At the same time, they also have to make sure that the efforts they are putting into a project today can be reused in future projects, which may still be undefined. Given an infinite amount of time an engineer can do anything, but how much can an engineer do with the time available? And what tools does he need in order to achieve the defined goals?