Click here to Skip to main content
15,887,267 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
I don't know if I'm asking a right question but I would like to give a try.

Is there a correlation between good/professional computer programmers and courses in math (Linear Algebra, Single Variable Calculus, numerical Methods etc). In other words, high skills programmer have taken courses in math at university?

Thank you!
Posted

That's quite a broad question for this forum, but one of the possible answers could be, if you have difficulties to cope with mathematical concepts, chances are that you will also have a hard time figuring out algorithmic ones.
 
Share this answer
 
It always shocks me how many "programmers" can't even use a search engine, or read documentation, never mind do calculus or algebra!

Maths is only important for a limited number of programming fields. Eg if you wanted to right an index engine, or advanced data analysis, neural networks etc. There are some computing problems where the code is a secondary concern, it's understanding the theory and maths that is the problem. So if you want a job at google you'll probably need to be good at maths, but for 99% of coding tasks you don't really need advanced maths skills.
 
Share this answer
 
In my schooldays, programming and math was always put in close relation.
I never felt that this has any fundamental relation.

Some people may argue that designing an implementing an algorithm needs mathematical skills. I'd say, expressing your thoughts is at least as important to describe an algorithm, so the natural conclusion would be: take (natural) language courses!

Talented programmers are good in several areas:
- speak the language of the customer (can talk on the customer's level)
- understand the problems at hand (the customer wants to have solved some problem)
- can distill the core questions to be answered
- have a certain "tool box" of skills and plain tools that suits his craft
- don't get lost in the details
- can communicate thoughts and document them nicely and crisp
- focus on the problem solution and do not get distracted by niceties
- view their job as a craft and not as art (allows for criticism and discussions on alternative solutions)
- have an affinity to testing ("untested code is broken code")
- etc.

Programming is providing effective economical solutions to given problems.
There are many skills involved that have nothing to do with math, but rather with the capability to fulfill expectations like providing what is needed in a good enough quality and time to the costs a customer is willing to pay.

Cheers
Andi
 
Share this answer
 
Comments
deelll 28-Jun-15 8:14am    
Thank you and I have a question.


Your explaination sounds like Programmer + consultant = computer programering consultant?

Thanks!
Andreas Gieriet 28-Jun-15 8:29am    
You can view your "customer" as your team leader/manager/... who assigns you a certain problem domain.
If you want to excel, you need these skills on every level.
E.g. if your solution is not covering the required function, or if it takes you too long to implement it in reasonable quality, you quickly get out of the game (e.g. in your team). Or if your solutions are "over engineered", you quickly get out of the game for the important and interesting tasks, etc. If your boss ("customer") does not understand what you are talking about (tech slang, not aware of the real problems, do a big fuss about details while being ignorant on the main problem question, etc.) you will have difficulties in your job.

Keep in mind: your (future) employer hires you assuming you are "worth the money". In that view, you need to meet at least the expectations, e.g. give at least the impression that you provide good enough, in time, economic solution. ;-)

Cheers
Andi
To understand more complex mathematical concepts you have to have some kind of thinking that also essential for programming - it sometimes called 'analytical mind' or 'analytical skill'...
So even you will not use mathematics in your daily work as a developer, if you do not understand math it is very likely you will not survive as developer...
(and yes - at least in my time - we learned a lot of math)
 
Share this answer
 
In my opinion the answer is yes you don't have to hate the math, missing analytical approach, as already said by Peter, makes very difficult to write down algorithms.
You must be good at logic, or you'll go nowhere. :)
But you have also be eclectic, and broken the rules sometime, to find new ways. The creativity is also very important to a programmer. It not only make you create new things, but push you to look, check and implement new versions of apps, algorithms, tools, ... ;)
I don't believe to the mystique that has been raised around characters as Steve Jobs, Bill Gates, etc. They are much more human than divine ('Pirates of Silicon Valley' is a good portrait), and as businessmen they have been much better than as programmers, but also this is required to make you a good programmer. Will help to take a decision on a piece of code that consumed a lot of time to appear elegant (quick'nd dirty and go market!).
It's difficult to be a real man, it's even worse to be a good programmer... ;P
 
Share this answer
 
Comments
deelll 28-Jun-15 8:10am    
Thank you and I have some questions for you.

1.
"You must be good at logic, or you'll go nowhere."
Any solution how to improve the skills of logic?


2.
"The creativity is also very important to a programmer. "
Can you explain it more? Any concret example?


3.
"But you have also be eclectic,"
I don't understand.

Thanks!
Frankie-C 28-Jun-15 8:39am    
1. Read a lot, be open mind, logic is philosophy. Don't believe your eyes, but your mind, or at least just believe on what is valid for both. (Yes follow also your heart, but we are talking of programming...)

2. Everybody are good to criticize and modify pre-existent work. But when you have nothing but the customer request and need to start from scratch, and there is no previous art nor experience, then ... you need creativity! Collect data and requirements, analyze, create, deploy.

3. Be eclectic as opposed to rigid. Don't keep stocked to common ideas or experience, but be open to explore new methods and new approaches without any preclusion. Read this for a better explanation https://en.wikipedia.org/wiki/Eclecticism

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900