1
$\begingroup$

As I am headed into a Computer Science major wishing to eventually become a software developer, I wonder this: should I immerse myself in computer science theory and knowledge (data structures, algorithms, how computers work).

I think today many developers can just get by knowing their own tools and technologies depending on their jobs, perhaps without having to worry about theory or anything else.

But I don't want to be a mediocre programmer. I want to know, to understand what I am writing and what it is doing. Am I right in thinking I should take Comp Sci very seriously?

$\endgroup$
1
  • $\begingroup$ That, too, depends on how exactly you interpret programmer: pray tell! There's coder (from detailed design to whatever gets taken care of by machines), there's software developer (from creating a specification in cooperation with a customer to acceptance test and maintenance), and I guess a dozen other characterisations with a good measure of ones I'd frown upon or reject. (And there's development during one's professional life - both in personal abilities and state of the craft.) (And software engineer /engineering - different in my book.) $\endgroup$
    – greybeard
    Jul 7 at 4:50
1
$\begingroup$

Short answer

learning CS (computer science) won't make you a better programmer. But, it will give you important theoretical tools, and more importantly - it will teach you how to think. There are other options, mostly from the engineering world, that can directly teach you coding instead - if this is what you want.


Long answer

If your ultimate goal is practical code-writing software engineer, then probably learning software engineering from an engineering department - is the best go-to.

Computer science is purely theoretical. Yes, there are a lot of useful practical things you can learn in computer science, but I doubt that you won't learn them in an engineering major.

That being said, I'm majoring Computer science (and only computer science), so I don't know how accurate the above information is, as it is based on the basic knowledge that I have on the engineering faculty in my university, when I am in the exact sciences faculty.

In my opinion, there is a big benefit of to majoring computer science. I think it teaches well how to think and how to solve problems in ways that might seem very unintuitive at the start (also, it will actually teach you what we can't do. Its also important to know if the problem we want to solve actually has a solution, before we try to find it...). This generally allows you to construct better algorithms to solve problems, and also algorithms for seemingly really hard questions. For example, say you have a geometrical space and a polygon in it. How do you think we can know if a certain input point is in that polygon? This question has many practical usages, and is answered in a computational geometry course - that you can learn in a CS degree. That being said, there are a bunch of other problems you will probably never need to use, such as algorithms in NP that use an all-powerful prover.

Personally, I like to describe computer science as a special branch of mathematics that deals with "computational" problems. In this sense, CS is like Physics or Mathematics or even Chemistry. While coding, I would describe as some sort of combination, or weird mix between CS, and other less "exact" or less "science-ish" subjects.

If you strive for something that is more "high-level" than just writing programs, or maybe you just like theory in general, then CS is a very good choice for you. It will give you a wide range of tools that you can use pretty much everywhere.

Once again, this is only my opinion. It could be much different than other's opinions, so please ask more people. Maybe people you know that learned CS, maybe people you know from the industry. Ask a wide range of people, and try to understand for yourself what CS means and whether it suits you.

$\endgroup$
1
$\begingroup$

It seems like the really high end developers have a strong computer science background. They patent new algorithms and things like that. They make 7 figure salaries working for Silicon Valley companies.

I work with more normal developers and they are great but I think it would help them to know a little more computer science. It helps to understand b trees and hashing and in general how operating systems, compilers, graphics, etc. works.

I find that having a computer science background helps me in my database administrator job because it helps me solve difficult problems with either performance problems or weird behavior and bugs.

So, short answer is yes. Get all the comp. sci. you can afford and have aptitude for in my opinion.

Bobby

$\endgroup$
0
$\begingroup$

Should you be a good physicist to become a great aeronautical engineer? Should you be a good chemist to become a great chemical engineer?

The answer to all of these questions is "no", if by "good" you mean research-level. But ultimately, engineers build things out of the results of science, and you need to understand the science to a reasonable level to do the job well.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.