I feel like if you are bad at solving problems, you'd struggle in programming
Posted by AwareMachine9971@reddit | learnprogramming | View on Reddit | 16 comments
Since I believe programming is just problem-solving in disguise, if you can't solve problems then you would definitely struggle..
But how does one become good at problem-solving?
People will say "practice" but
What if they end up encountering a problem they've never seen before?
Since our brains always rely on past information, how would you create a solution for something new that requires something that your brain never knew?
This also tells me that, to get a career in any STEM field, you truly need to be either above-average or genius.
Those people can come up with unique and creative solution to problems they've never solved before, hence they are in the STEM field.
While an average person would be like "I didn't know you could solve it like that"
I don't understand why people say IQ does not matter and all you need is the ability to learn. Does that mean that we'll "learn" our way in any problems we can't solve?
Yeah sure, we learned a lot of principles and applying them is a way to solve problems, but there's a chance a person wouldn't know that you can do X to solve Y
ValentineBlacker@reddit
IDK what to tell you, program or don't.
aqua_regis@reddit
Very few people are inherently good at solving programming problems. It is a trained and acquired skill.
Contrary to AI, this is perfectly common for us humans. We are adapted to solve problems that we have never encountered before as we do it all our lives.
You are just seeking excuses for not investing effort.
AwareMachine9971@reddit (OP)
I'm not making any excuses here, I am just being aware of my capabilities and realistic. For some, programming may not be for them.
aqua_regis@reddit
How much time and actual effort have you invested?
EsShayuki@reddit
Human brains are capable of simulating hypothetical futures, even if we've never encountered the specific problem in question, by drawing from related problems. This is something that AI, for example, is still extremely bad at in comparison.
So you don't need to have encountered that particular problem before. You can still hypothesize solutions, test, and iterate.
Maybe. But no one is there from the get go. You can begin being below average, then practice and become above average. Anyone can do it.
So why didn't you try whether it could be solved like that? What stopped you? More than likely, it's the fact that you gave up before you gave yourself the time to learn the solution.
Yes. "Growth mindset" is what you could call it. Even if you're bad right now, you can become good through practice. But if you give up while being bad, you will never be good.
The smart person probably didn't know either. Just hypothesized it might work, tested it, and noticed that it indeed does work.
If it's about not knowing the possibilities(for example, not knowing that a language has pointers), then mindset isn't going to help, and you need to actually learn about the language. But other than that, it's as simple as giving yourself the permission to be wrong, and to try different things out and see what works and what does not. Down the line, you will get much quicker at this process, and can arrive at the correct implementation for a solution without having to test alternatives at all.
SeventhDisaster@reddit
> Does that mean that we'll "learn" our way in any problems we can't solve?
Yes. Learning is how you become better at problem solving.
> Those people can come up with unique and creative solution to problems they've never solved before,
You'll find that developers don't "come up" with solutions, but "find" solutions.
The programming world is an insanely vast ocean of problems and solutions worked out by millions of people. The chance you encounter a brand new problem nobody has ever solved before is extremely small.
If you have a problem you have never encountered before, you start asking questions.
You dig into the problems, you learn from others who have encountered similar problems before you
Once you've learned it, you now know how to fix it, and you'll probably also forget it again.
I've seen seniors with 20+ years of experience look up how to center text in a box on a website
Ministrelle@reddit
I don't agree entirely with you, because to me the act of problem solving is a very methodic and clear cut activity that doesn't really require much thought.
Whenever there's a problem you need to solve, there's two pieces of information you immediately have:
Graph these on a piece of paper with the solution on one end and your resources on the other. Now all that's left is to get from one end to the other.
Eventually, you end up building a kind of tree structure between both ends, that clearly outlines how to get from what you have to what you want and what you have to do. All that's left is to implement it.
The more "resources" you have, the easier it becomes, and Knowledge is a resource trained by Practice.
TheMinistryOfAwesome@reddit
Problem solving basically is practice. And problems in STEM can be solved in any number of ways.
But here's the thing, problem solving builds on the problems that have been solved before that.
As for programming - the core ability is indeed "creating solutions/solving problems in a formal way". And actually to do that better does require practice.
IQ is obviously related to how well people can do in life, in general but it's not the only thing that matters.
Another important function, for example is "industriousness" - meaning generally how hard people work. I feel that this is the bigger factor in most sitauttions. As quite often people would rather muse about their opinions and meta-talk about topics rather than sit down and spend a 40hr week working through a C++ development session to finally finish their first project and "master C++".
Take from that what you will.
Feisty_Outcome9992@reddit
Not all programming is problem solving, a basic API call doesn't require any problem solving just reading documentation and sending a to get b back.
kirkevole@reddit
The whole process is a combination of your genetic predisposition, how much you do for it. You could say each of these two elements plays a key role, how much importance each of them has is highly questionable and it will differ person to person, situation to situation. You can definitely outrun a deficit in one regard by being above average in another. You can be a below average programmer and still able to be satisfied and bringing value to the employer.
The question is just if you want to try it and how much you want to give into it before you finally decide to leave or stay in it. Programming is complex for sure, so you can't judge it unless you spent at least couple of months doing it, you definitely can't say if anyone will be able to do it beforehand (unless they have very low IQ).
Moikle@reddit
Programming isn't about "writing code" it IS problem solving.
Problem solving is an inherently human trait, anyone can learn it, it just requires practice, like any other skill.
chaotic_thought@reddit
In programming, in my experience, the "secret" or the "key method" to solve any problem is to break something down into simpler-to-solve problems.
It is not really about being "above-average" in my opinion. Everyone will have his/her particular skills that can be below average, average, or above average. In a real proramming team, for example, some people are better at optimizing code. Some people are better at finding and fixing bugs. Some are better at documentation, etc. To create an "excellent" program you need to combine all of those skills. Even if you are good at all of them, you cannot focus on all of them at once.
Another underrated skill is knowing when something is "good enough". Sometimes you don't need the "best" solution. In fact, probably 90% of the time, "good enough" is more than what you need. But for the 10% of time when you really need the best, when everything has to be very correct, very safe, well-tested and so on, you need to know and practice the processes for how to do that part, as well.
bo_felden@reddit
"I feel like if you are bad at solving problems, you'd struggle in programming"
It doesn't matter. You're alive, you'll have to solve problems anyway constantly. So try, experiment, search the manual, watch the video and don't give af how X or Y solves the problem a lot faster or better than you. That is non of your business.
tb5841@reddit
'Intelligence' and 'the ability to learn' are basically the same thing. If you're good at learning, you're smart.
typehinting@reddit
Along with what others have mentioned, and will mention, about practice improving your ability to tackle new problems, I just wanted to emphasise that IQ is a dumb metric. Similar to programming, you can actually improve your "IQ" by practising the sorts of questions they ask you.
But yes, practice quite literally is the answer. If you're finding that practice isn't helping, it's likely because you haven't practised enough - it takes longer to get better than you might think.
I hope you are able to overcome your defeatist mindset too, because I'm sure that's not helping either.
Soft-Butterfly7532@reddit
Yes, that's exactly what it means.
Practising doesn't just mean learning to solve the same problems. It actively improves your ability to solve new ones.