Most of that thinking is probably about how to solve the current problem, or how the system should be designed, but a lot of it is about where the change goes, or where the code with the error is. This means creating and using tools to do the repetitive pieces of your work, and free your mind for the thinking part of the job. Of course, you don't want to have to write a search program every time you have to look through the code. Part of the trick to using tools effectively is to learn what tools are out there. With the right tools, and enough knowledge about how to use them, you can get the computer to do a lot of your work for you.
Most programmers know about the grep tool and use it for simple searching.
It saves us from writing that search program every time we have to look through the code. By getting familiar with grep 's options, you can use grep for more than just searching. You can use it for counting errors found in test logs, for creating, or helping to create, batch files which you can use for fixing code, or many other things. And grep is only one, simple, tool. There are many other tools out there.