Programmers need to work with information in different forms: they need to analyze information themselves and they need to write programs which also work with information. A number of skills from critical thinking are useful to work with information, so these skills can help programmers to do their job better. Some dispositions can also help.
Programmers and developers often need to look for different solutions, sometimes for something novel for them. Actively open-minded thinking can help here, because people with this disposition can look for support in unusual sources and they tend not to discard new solutions if these solutions look unfamiliar and strange. This disposition can make a person more versatile and help to learn about new technologies. Critical thinking also provides different tools and approaches on analyzing information, these tools can be used to filter incoming information and selecting pieces which are the more useful.
Critical thinking offers a number of skills for better decision making and all of them can be helpful for programmers because they need to make different decisions while working on their software. Here are some examples: what tool, library, algorithm should be used? What task should I work on first? While a programmer can find some answers from rules and practices in his company, he also needs to make decisions without distinct guidelines or heuristics.
Programs often follow some logical rules, more or less complicated. For example conditional operators can be used to yield different results depending on their input. In cases like these logic can help to understand different outcomes from a program which has a number of conditional operators. Logic can also help to create and use algorithms in a program, to find issues and errors in a program. Simple algorithms may require reasoning like this: “the cause can be either A or B, I eliminated A, therefore it is B.” More complicated programs may need more steps to make a conclusion like this, in cases like this knowledge of logic can help.
Another useful skill for programmers is an ability to simulate possible outcomes in their heads. With this a programmer can imagine a possible outcome then compare it with a real result of running a program. It can also be applied to any working process and any software or tool: it can help to find errors and problems with software and other non-computer related processes.
And if you have mastered skills I mentioned while working as a programmer, you also have improved your critical thinking. You probably need to practice these skills in other areas, but you have done the first step already. Thus programming can lead to improving your critical thinking, if you think about it and use some metacognition to understand your own skills and capabilities.