A while ago I realized that in order to be a good programmer, you need, to some degree, be lazy. Actually I think this might apply to all engineering jobs. It is not a negative lazy that I’m talking about, you actually do need to be driven and willing to do what it takes to finish the job. What I’m talking about is being unwilling to do unnecessary work, or to do the same work twice. Being too lazy to write similar functionality a second time really helps keeping your code DRY.