I’ve been to devpressed a few times and it’s sort of uplifting that I’m not alone in this.
I suffered from depression/anxiety for a while, I’ve actually felt fine for the past year and a few months.
I’ve started attending a university where I study Applied IT (it’s not a hard university by any means)
What I struggle with is that when I’m unable to solve something in a split of second i get this “barrier” and I spiral down to thinking that I’m not good enough at problem solving, math etc. realising these are all the qualities that any aspiring programmer should have.
It gets to me the most especially when there is someone that figures out the problem quicker or in a more sophisticated way.
As an example:
It was the second lesson on programming when our professor asked us how to change values between to variables without the use of a third one. I was able to think about this for like 3 minutes before i went to stack overflow because the solution didn’t come up.
I never had much of math in my high school, I have some experience of programming though I don’t consider any of my little projects as anything significant, usually just some basic conditions, loops, arrays etc. I only started with OOP recently which doesn’t seem that much confusing.
I have anxiety attacks from the fear of not being a good enough problem solver, that my mind just isn’t for this sort of stuff, sometimes I can solve problems sometimes I struggle with such simple stuff that it’s unbelieveable.
Does this improve with practice in math and programming or am i doomed?
Programmers always seem focused on coming up with solutions with super quick speed. That doesn’t work for me at all - so I sympathise I know how not being up to that speed can be depressing and your confidence can take a hit. However, I think that’s one of the problems with the industry - this need for speed . I don’t have maths - I came into IT from a completely non-mathematical non-scientific background. I need to think about solutions - but that’s what makes me a good analyst - not just in the field of IT but in a lot of different subject areas. If people spent a little more time thinking out their solutions before implementing half baked ones then there wouldn’t be so much time and money wasted on IT projects. You’ll get quicker with the code as you go and the same problems and solutions come up time after time so you’ll be able to use past experience in helping solve future problems. Try not to get too caught up by the speed thing - I need to assure myself of that a lot as well. You don’t need to be as great as some of the others you’ll see around you - try focusing on being your own best - that’s good enough.
Thanks for the words of encouragement, it actually motivates me to keep on learning and evolving.
My problem is that if i don’t come up with a solution in a matter of seconds/minutes i usually just google it, patience isn’t really my strong suit…
I do agree that solutions come up and I can use the past experience however what if I somehow find myself working in projects that are so specific and I just won’t be able to do it.
But it’s good to hear that there are programmers that don’t come from math/science background that are actually working in the industry
Most of the programming tasks these days don’t require any math knowledge. I’ve focussed my whole education on becoming a developer, but even at higher education math wasn’t part of the curriculum. Only when your problem space is math related, math knowledge will be more important. Of course, when you start optimizing algorithms and such, you’ll be challenged for your math skills, but that’s why we have online courses these days like provided by coursera.org
Developing software professionally for about 10 years now, still doing fine with basic math and some free coursera courses on data structures and algorithms.
And (hopefully) you’ll work in a team, every team member has her stronger and weaker points. The team should be balanced to have team members who complement eachother. Together you’ll get to the best solutions, even if some solutions take longer to think off as wanted. And then there’s always the www, there’s probably someone who already solved the same problem
Everything improves with practise. For quick practise you can start doing code kata’s (see http://devpressed.com/t/im-supposedly-a-senior-software-engineer-but-i-dont-feel-like-it/483/9?u=pvdissel for links). Another good way is to read alot of code. Read the code of your favorite projects to learn how they solved their problems or read books about different patterns. Some links:
The more you learn how others do it, the more ideas you will have to use and combine
I’m a programmer and have successfully completed projects in quite a few different languages over the years. You need to get to know the functionalities provided by the frameworks you are using. I honestly can’t remember requiring any advanced maths for anything I worked on - basic arithmetic - remembering BODMAS and Modulus has been fine (hey even building a scientific calculator didn’t require any knowledge that I wasn’t able to get my hands on).
Don’t worry about having to google solutions - it’s one of the tools of the trade - that’s what we are paid to do smile
Programming is so much more than maths - Computing Science Courses or Sectors where you’re required to work with complex algorithms yes you’ll need maths - but the breadth of core business that development covers - you don’t need it.
As long as you make good use of methodologies , can break things down, think logically - software dev is a process - use the methodologies to lead you to build good solutions. You need to be able to conceptualise abstract ideas - personally I find modelling techniques useful. I worked in telecommunications for 10 years without needing maths. If you are struggling because your course has a high mathematical content take a class outwith your course - if you don’t know maths it doesn’t mean you can’t learn it if you feel you need to.
There are also lots of IT post graduate courses out there designed specifically for people from non-computing / mathematical backgrounds. I imagine there are plenty of working dev out there who get along fine without it. Hope this helps.
I’m a beginner, so I’m very sympathetic to your struggles. I was never a “math” person so to speak, so I don’t get these kinds of problems very quickly either.
I would agree with the first replier that it is not all about speed; I would also give advice to not be fatalistic about your abilities. If you are always comparing yourself to someone else, there will always be 1 person out of 7 billion that is better than you at something. There is no way to win with that kind of thinking. Instead, you should practice, practice, practice, because practice does make you better! As you get better, you’ll get more confidence in yourself:)
Also, don’t be afraid to fail! You don’t always have to get everything perfect on the first try, and turn to Stackoverflow for the perfect answer. Try writing a crappy program that does the minimum. The others have listed great programming resources so I only have to add two math-related resources:
1.) Khan Academy has great videos to brush up on your math: https://www.khanacademy.org/
2.) Project Euler is a series of programming challenges that are math problems, great for practice: https://projecteuler.net/
I know this is opening older thread but anyway:
So at my uni we’ve got an assignment to sort an array of negative integers, zeros and positive integers from negative to zero and to positive.
Long story short: I struggle with problem solving, especially when I can’t firgure it out ( usually if it takes me more than 5 minutes I panic and think that I’m just not smart enough etc.)
Now I didn’t even know this thing had a name until i gave up and googled it, after like 20 minutes of trying.
Should I just give up programming? Is there anything I can do to improve my problem solving or am I just flat out dumb?
My problem is that i can’t seem to invest enough time but i just think that no matter how much time i would invest i wouldnt’ be able to solve it.
Most of the time, the guys who answer too quickly would already have practiced the problem before. Else they are familiar with normal swapping and something just clicked over there. But I can assure you that it really took them more than 5 mins to solve that problem. You are discounting all the hard work they put in at home.
I’m told I’m a talented programmer… The best in my college (don’t worry it’s not that great) and everyone around me tells me I’m smart and talented. That’s an easy way to give up for them. I would have spent maybe 1000-2000 hours programming… Frequently, I had considered myself inferior cause someone else would know more languages or a better framework yadda yadda… I couldn’t solve many problems even though I solved the 2 variable swapping one… I’ve been to countless tutorial sites and stack overflow so many times its borderline crazy… Today, If I’m “smart and talented” it’s cause of my hardwork.
To answer your question in simpler terms… You are asking me “how can I learn to ride a bike?”… My answer is “ride a bike”. Make mistakes… Fall often… Cry often… Never stop learning!!
Finally, imagine if you wanted to learn Spanish… You wouldn’t assume you should already know the grammar, vocabulary etc. Solving a problem with programming is like learning a language and then trying to explain an abstract concept with a language you just learnt - a horrible confidence builder.
Most of your work in programming will be to maintain or fix code… Solving new problems doesn’t come up so often. If they do… They want a very good solution… One likely to take more than 20 mins! Hard work will get you to more places than “talent”… You have design patterns and processes in place already for nearly all types of problems (if not entire frameworks). Learning how to use them… All the best ways you can use them will surely help you beat the smartest programmer
P.S. Sorry for the bad English… Typing on the phone in the middle of the night
Don’t worry. You’re not alone. I know I had that problem with math and a lot of other subjects. Though I’m still struggling with computer science and programming, I did become much better with math and the other subjects. I guess it’s a working process, and that process will definitely take time. Just know that you’re not alone, and there are people who overcame what you’re experiencing.