The most important single aspect of software development is to be clear about what you are trying to build.
The essence of computational complexity is to understand the limits of what can be computed efficiently.
Buying tools: Start by buying the absolute cheapest tools you can find. Upgrade the ones you use a lot. If you wind up using some tool for a job, buy the very best you can afford.