Many employers are looking for candidates with computer science degrees or N years experience in the industry with a list of buzzwords, or both, which suggests that a lot of time and effort needs to be put in to enter the field. So what is the reality? How hard is it really?
It depends on the person, but in general, yes, CS and Software Development is difficult. It comes easier to others just like other subjects. At its core, it is logical problem-solving using math and computers. In order to have a true understanding, you need the CS degree or a lot of self-studying and experience. All employers care about is what you can do.
What’s the context for the question? It’s hard to be helpful with such a general question.
@PengsPhils I’m considering to major in CS, but I’m concerned since I have no CS experience like programming. Also, what is the level of math I need to know?
In my experience, the people who truly enjoy developing software are the best at it. Since you have no programming experience yet, maybe you should try it and see it it clicks for you. Take a programming class or take a couple of weekends and teach yourself Python (numerous self-study web resources available). If you enjoy it, major in CS!
Look at the math requirement for your target colleges. Generally it’s similar to engineering – the calculus sequence + differential equations.
For CS you generally need the full Calc sequence, Diff Eq, Intro Linear Alg, Discrete Math, and usually some sort of Stats. Also the upper division theory courses will be somewhat similar to mathematical logic.
Seconding the suggestion to take a class first - you will only know if you like CS by trying it, Majoring it in if you don’t will be miserable, let alone a career in it.
If you’re past freshman year, you may not be able to realistically finish the degree in 4 years, which should be a financial consideration as well.
Math requirements vary but the list provided is comprehensive, and many colleges require slightly less. You’d have to check your specific college. While math is underlying a lot of CS, it won’t be a daily use as much as say a mechanical engineer. I wouldn’t even worry about the math until you take a CS class, which you should do ASAP, starting in spring if possible.
@PengsPhils thanks for the advice! I will take some CS classes as soon as they open. BTW why do CS majors need to take calculus when they usually use basic math like (addition, subtraction, etc.) and algebra in the workforce? I am not sure if I’m right because I read it from some article.
That is generally correct. A lot of more complex tasks utilize the higher level math. Linear algebra is very important to graphics work and some special algorithms. Calculus is probably more generally used but is still rare. Discrete math is very used, but not usually considered an advanced math.
Mathematical skills also apply to computer science skills. It’s like requiring a creative writing class for a journalism major. No, it’s not their everyday task, but it still can have a subtle impact on their daily work.
Not everyone who majors in CS is cut out for doing actual software development. The best way to know for sure is to take some classes, and if you like them work hard to find internship opportunities. Getting a first job can be difficult without any real-world experience such as an internship provides.
I often wonder if some of the math requirements are a holdover from days long past (like when I was in college) where CS was not a stand-alone major but instead was part of the Math department at many schools (I had to double-major in CS and Math). While you do need a certain level of math, most folks I’ve worked with typically don’t need as much as is required for the degree.
As was mentioned above, to be a good software developer it takes not only knowing how to code, but having a certain ability to reason through problems and stick with it until you find solutions. Some of the best coders I know will tell you they’re not the smartest people in the room, but they can see through a problem and come up with creative solutions that others might not think of. They also research to figure things out on their own rather than relying on being taught everything they need to know. It also takes someone who wants to constantly be challenged and learning new skills, since the marketplace changes so drastically year after year.
And, if like me, you work in software development for a few years and realize it isn’t for you long-term, there are so many different careers that benefit from a coding background - software architect, systems analyst, software sales engineer - the president of my company started as a coder!
Just one example of when calc comes in handy is signal processing. Also if you decide to do mathematical modeling or physical simulations you need at least a working knowledge of diff eq.
Seems that a rising percentage of journalism these days is infused with creative writing.
Doh. Bad example
I’d guess 80% of programming jobs can be done with nothing more than high school math.
I’d also guess only about 2% of programming jobs would need anything beyond one semester of calculus, one semester of linear algebra, and one semester of statistics.
I find that computer science is difficult because of the content and how it’s sometimes presented. However, there are many people who successfully write and execute their own projects by writing their own code.
Another thing to keep in mind is while success in a compsci program is important, such as comprehending abstract concepts, gaining good to above average coding skills, and earning a high gpa (above 3.5), success in the workplace is even more important. I’ve seen people who graduated with a 3.8 and then didn’t do well in a workplace environment because of the culture, the way the work was presented, or terribly written legacy code that wasn’t left with comments or documentation.
The best thing a person can do to master, or be on the path to mastering compsci concepts and skills, is to have a strong grasp of higher-level languages and abstract coding principles. I’ll just say this-- if a programmer has a strong understanding of classes, and can demonstrate it through their code writing, they are on the right track.