   Does programming improve your problem solving skill
  Hi I'm Bow, a hobbyist programmer. Ive been thinking about this question for a long time. Does programming make you a better problem solver??I mean, since we're dealing with algorithms (steps to solve a problem), maybe we're growing our problem solving skill too. But, I want to know about your experience,are you a better problem solver now than you were when you just started programming??If it is not, do you know any other way to be a good problem solver?? Thx a lot for reading   
Hi I'm Bow, a hobbyist programmer. Ive been thinking about this question for a long time. Does programming make you a better problem solver??I mean, since we're dealing with algorithms (steps to solve a problem), maybe we're growing our problem solving skill too. But, I want to know about your experience,are you a better problem solver now than you were when you just started programming??If it is not, do you know any other way to be a good problem solver?? Thx a lot for readingDefinitely helps being a programmer but I think it's mainly related to what you are born with... For instance I remember reading about how it's near impossible to improve an IQ score. I assume it's pretty much the same for general problem solving. However, you will definitely improve on any problems that involve programming.   ;  In my opinion, the act of programming contributes very little to actual problem solving.  It's biggest surviving contribution is that you are forced to break apart macro problems into a collection of micro problems each of which brings you closer to a macro solution.You have to go a level above programming to find problem solving boons.  In order to program a solution to a problem, you have either engaged in some problem solving practice OR you have hacked it together through trial and error. Some could say this "numerical approximation" of problem solving is still problem solving.  However, If you are looking to improve on how you think about problems, I think it is a poor substitute. Programming gives you a convenient and rewarding "game" to practice your problem solving skills, but you have to chose to do it that way.   ;In my opinion, the act of programming contributes very little to actual problem solving.  It's biggest surviving contribution is that you are forced to break apart macro problems into a collection of micro problems each of which brings you closer to a macro solution.You have to go a level above programming to find problem solving boons.  In order to program a solution to a problem, you have either engaged in some problem solving practice OR you have hacked it together through trial and error. Some could say this "numerical approximation" of problem solving is still problem solving.  However, If you are looking to improve on how you think about problems, I think it is a poor substitute. Programming gives you a convenient and rewarding "game" to practice your problem solving skills, but you have to chose to do it that way.For the same reasons you give I have to disagree. Software engineering is almost constant problem solving. Just by virtue of problem solving the whole time you are doing it you should get better at problem solving. Just like anything else practice will make you better at it. Programming is also interesting in that often it forces you to translate problems into different problems, which is a very useful skill to have as there are so many problems with optimal solutions already.   ;  Id say so. When im solving non-programming related puzzly-problems, I find that I draw heavily on brain-modules honed by programming effort; trying to decompose my actions into algorithmic steps, and so on.Even my writing has been strongly influenced by programming; I find myself looking for reusability, putting in forward declarations in the right spots, and even think about proper identation . If it leads to better writing I dont know, but programming certainly influences my thinking outside of programming..   ;  The benefit I get from programming is confidence. I feel more and more confident every time I made an algorithm for my program. I used to be a very shy person. I'm still now, but now I feel more confident than I used to be   ;  "Problem solving" sounds too generic. To me, it cannot simply be reduced to one unique skill.And even if you limit it to algorithm/puzzles, programming, as I have experienced it so far, is much more about organizing code than getting things done. You could call that problem solving, but that's a kind of problems very specific to programming.   ;For the same reasons you give I have to disagree. Software engineering is almost constant problem solving. Just by virtue of problem solving the whole time you are doing it you should get better at problem solving. Just like anything else practice will make you better at it. Programming is also interesting in that often it forces you to translate problems into different problems, which is a very useful skill to have as there are so many problems with optimal solutions already.I was hoping that the post would be read as mostly agreeing, but placing caveats on some of the finer points.  I admit, it was too literal of me, but "Programming" from the OP is not "Software Engineering".  It is possible that the original post was referring to what I would have called Software Engineering.Not all programmers are software engineers, which is why I said not all programming is good problem solving practice.  I chose to divorce the very low level programming activity from the higher level engineering tasks.Not all problems solving is "good practice" either and we've all been in a situation where we used little hacks.  If that happens too often, then you end up practicing bad habits and become worse at problem solving in general.People develop bad habits all the time.  The phrase "practice makes perfect" is flawed in that it is incomplete.  "perfect practice makes perfect" would be better, but still flawed because its too idealistic.  Perhaps, "good practice makes you gooder" is the best (owing mostly to its delicious irony).   ;Not all programmers are software engineers, which is why I said not all programming is good problem solving practice.  I chose to divorce the very low level programming activity from the higher level engineering tasks.Even implementing other people's designs has a lot of problem solving in it.Not all problems solving is "good practice" either and we've all been in a situation where we used little hacks.  If that happens too often, then you end up practicing bad habits and become worse at problem solving in general.People develop bad habits all the time.  The phrase "practice makes perfect" is flawed in that it is incomplete.  "perfect practice makes perfect" would be better, but still flawed because its too idealistic.  Perhaps, "good practice makes you gooder" is the best (owing mostly to its delicious irony).[/quote]Using your "little hacks" example, while they are bad, they aren't necessarily bad problem solving, you are just evaluating it with a subset of the problem. A "little hack" is often evaluated against it's implementation effects on the project as well as it's effect on the project timeline. Do I want to rewrite the whole system to deal with an unexpected edge case over the next two weeks, or do I just want to check for the edge case and handle it in 10 minutes? You just learned a little more about weighing pros and cons. Say you end up making the wrong choice in that decision; as long as you are eventually made conscious of the fact that you made the wrong choice, you just learned a little more about accurately evaluating your pros and cons.I still think that doing something every day, even if you do it wrong, will give you take aways that will make you better than you were previously. Will you see gains as high as if you practiced perfectly? Probably no. Will you reach diminishing returns faster? Probably. But you will still be better than you were.;  I would say that programming just massively pumps up your ability to see things as a representation, or as symbols.Which can be useful for some types of problem solving(math, logistics, modeling), but a real bane for others if you over train/under train other things(social simulation, intuition, intangibles)   