Before you commence work on a solution, you need to create it, and then you can choose your tools. When you create a solution, the tools you need will become apparent.

First, you must create the solution without the tools in mind. This is done through analysis and discussion about what the product must do – the end result the customer pays for.

Second, when the solution has been agreed upon, the tools will appear. Not by magic, but you’ll have a clear definition of what your product or service will do, and the tools that fit it.

Programmers (myself included) can become so biased about a particular language, that we forget that we could likely apply the same solution in different languages and tools, while still achieving the same (or better) result.

Don’t get hung up on a particular tool: get addicted to creating the solution first, and then find the tools that fit the job.