There are two basic schemes for compensation - goal-based and time-based. The former one is known to humanity for ages, since the beginnings of commodity exchange. We get something and give something else in exchange. In software development, the well-known (and, surprisingly, much-hated) example