I try to find the problems first before I find solutions. Reading other academic papers and finding ways to improve those methods is a direct way, but I often enjoy applying intelligent algorithms to new applications.
In terms of tools--I never reinvent the wheel, and I prioritize speed in both execution and development. Python provides a great backbone for most problems in this space, but C and C++ libraries often improve speed drastically.