Computer Science?

I have recently looked into computer science and have a few questions about it.

  1. I haven't had any computer science classes or experience before. I know there are lots of websites, but do you guys have any recommendations on which websites to use to learn some basic coding?
  2. Do most comp sci majors have previous experience? I feel like computer science majors are those that like to code in their free time or compete in hackathons, etc.
  3. What sciences are involved in CS? I understand that there is a lot of math, but I don't really see the application of any of the core science classes like Chem or Physics in CS. Every school requires several science classes, but is it ever used in the "real world"?
  4. How is the job market? On one hand, I see articles of how computer science and tech in general is a huge market now with lots of demand. On the other hand, I read a lot about outsourcing or the tough job market for new CS grads. Is the job market really good, bad, or somewhere in the middle?

I’ll give you my take on these questions. Others may have differing opinions. My background is that of a physicist who had enough CS courses as an undergraduate to nearly complete a second degree and who has been involved in scientific programming ever since. My brother and son are also professionals in the Computer Science and Computer Engineering fields.

  1. In my experience, coding is a question of learning to think logically. If you learn one programming language, you will have an easier time with another when you have to learn it. This means that you can pretty much start with any language and there are a number of them available which have written language like syntax. If you make sure to choose one which is open source, you can even find a huge amount of documentation online. My favorite these days is Python although there are other options. You can also learn coding as part of a FIRST Robotics team (or similar).
  2. Some do but it is not absolutely necessary. What is certain is that if you have prior experience, you are likely to go into the degree program knowing that you like the programming part of it. Of course Computer Science is not simply programming. There is a lot of theory involved as well as mathematics.
  3. Mostly mathematics. Computer Science programs have minimal science requirements usually. Certainly much less than engineering. However, physics majors, who usually have at least one serious scientific programming course, will often find themselves employed in the software industry. Having the science plus coding is actually a marketable combination.
  4. The market is good right now and there is a boom in college enrollments for CS. As I said above, though, engineers and scientists also can get into the field. There is likely to be a correction at some point in the future. These things are always cyclical. Once of the big areas now is the Healthcare Information Services industry and there will certainly be jobs there for some time to come.
  1. http://cs10.org (more of an overview of CS including some programming, rather than just a programming course).
  2. Some do, some do not.
  3. CS major degree programs require CS and math courses. Sometimes they require other sciences like physics. If the CS major is in an engineering division, or is ABET-accredited, it will require some science other than CS and math. Otherwise, it may or may not. If you want to take the patent exam, you need some science other than CS and math.
  4. Job market depends on economic and industry cycles. It has been good for CS majors for the last several years, but the last industry downturn in 2001-2003 was very bad.

I am quite the outsider to the CS industry, but it sure is trendy right now to get into it. I often wonder if with the influx of CS majors will the job market/salaries dwindle over time (demand/supply)?

I also often wonder why something like Dropbox requires so many engineers? I mean, they made a solid product, and I can understand having a few maintenance engineers and few engineers working on improvements, but why so many and they are even actively hiring? [This question probably reveals my ignorance on this subject haha]

Of course a lot of the Cs guys seem to be getting into the startup scene, and we all know what the odds are of making it there. Something like “this app allows you to document your entire night out and will even generate an awesome music video the next morning” may require a lot of coding, but who in the end buys the app (this app is a true example that didnt make it).

Things like Tinder/Uber worked not just because of the coding (I heard the code is pretty easy), but also because of marketing and a bit of luck in finding the golden domino/chain effect (getting people to go “Hey you gotta try this out!”).

If you major in computer science anywhere, I can almost guarantee that the first class you take does not assume any prior programming experience. Sure, you will have classmates who already know what they are doing, thus they may set a difficult curve in the course. However, you do not need prior programming experience to consider a CS major.

You really need to know math for CS. However, if you are doing CS through an engineering school, they may make you take physics and chem simply as an engineering school requirement.

The number of CS jobs is increasing, however so is the number of CS graduates. It is pretty good right now, but it can easily be different 10 years from now. It may seem like they have high salaries, but the data does not take into account where you may be getting your job.

In a way it does, but the truth is that at present there is a very large demand for CS majors that isn’t being met as well as employers would like. Sure, people do graduate, but quality of code is in many (not all) places multiplicative, which is where you hear this “10x” rumor being spread (there are 10x programmers of course, but also 10x engineers, managers, businessmen etc). A mix of above-average working conditions and overblown favorable press has given the lion’s share of the best programmers to companies like Google and Facebook though. Many large companies could certainly use more CS people.

Overall supply of graduates is increasing, but so is demand. Both have to do with the state of the economy and more specifically the CS economy (which has its ups and downs).

There is a fair bit of engineering work to be done with offering the kind of cloud service that they do. Dropbox specifically does blow a lot of money on hiring that they don’t need to, but they made a lot of funny money on the stock market and they have the money to do so, and they do have a product to sell (which is valuable but severely overvalued at the moment).

[This is pretty true.](https://michaelochurch.■■■■■■■■■■■■■/2012/07/08/dont-waste-your-time-in-crappy-startup-jobs/) Startups have more deficiencies than most would give them credit for. Personally my own experience with startups has been significantly below average compared to the baseline of large, established companies.

Yes, this is true. A lot of them are less so “technology” startups (i.e. feats of programming) than “marketing experiments using technology.” They come with a lot of the type of buzz and hype generally put forward by business majors, except it’s disguised as computer science. Once you see it, it’s sort of obvious what’s going on there.

Just finished the startups article. That guy seriously went guns blazing at startups haha.

Yea Ive been using Dropbox for years and I see no noticeable change. Unlike other more dynamic ones like Facebook which is rolling out changes regularly.

I seriously just dont get silicon valley.

I have a few former coworkers who work at or created startups. The whole point of many startups is to be bought out by some Google or Microsoft type entity, not to offer a competitive product or service.

This has been the case since the first dot com days.

Also one of the dirty secrets about this “hope to be acquired” phenomenon is that the companies aren’t stupid. They know the businesses in question generally aren’t worth money. They buy it because someone owes someone a favor and a certain party owner in question has vested interest in seeing the startup succeed so that their own reputation does not suffer for investing in bad businesses.

You will find that many people are quite unaware of just how unviable most of SV is.

Not just Silicon Valley. My wife worked on a couple such ventures here in the rust belt. One received a few millions from the state, built a new shiny HQ on a prominent business park, and was acquired and shuttered six months later. The other failed when money ran out. But that was dot com v1, everything went.

To answer the original poster, computer science is great if you have the talent for it. It’s more or less like architecture. You can go thru the motions and become a decent coder or architect, but the talented ones are so good it’s not even funny. Academic success overall is not all that important. I’ve known straight 4.0 High School kids who could not program their way out of a paper bag in AP Comp Science, and kids with marginal GPA’s that could code circles around many grownups. The math and science part is useful as background and problem solving.

Mostly it’s a way of thinking, what I have described as ‘seeing the forest and the trees at the same time, and being able to zoom in or out as needed’.

Evaluate jobs at startups just like any other job. I.e. based on career development (what will you learn and gain experience doing?), compensation (pay and benefits, not including stock-based compensation at non-public companies), and other convenience factors (e.g. location and commuting). Stock-based compensation at non-public companies should be seen as extremely speculative at best.

Lots of startup companies go bust, but big companies have layoffs also. Do not expect a high level of job security from any company. Your “job security” depends on maintaining and growing your skills so that you are desirable to hire by other companies (obviously, it means being willing to live and work in places where there are companies to find jobs at). Obviously, living below your means and having enough savings to live through an extended job search in an industry downturn helps.

I cannot emphasize the above comment about learning enough. 30+ years ago a whole bunch of us graduated from grad school and hit the job market. In some cases one had to trade location for skills - I moved to Detroit where I spent a few years writing parts of a compiler and graphics software development environment under the watchful eye of a couple PhD’s. Meanwhile my friends in Silicon Valley were bouncing from job to job, doing largely meaningless tasks, or, if they were really lucky, ended up as ‘Systems Engineers’ for the defense industry where they ‘qualified’ Duracell batteries (true story) and so on. My success 30 years later as a coder is really because of that first job.

Now things are different, and your friendly PhD supervisor is not likely to mentor you, but you get the idea. Look for growth opportunities, the right tools / technologies, and the right environment.

In truth, startups aren’t a good place to work unless you have something to offer them and therefore have leverage in negotiations. A fresh out of college grad is just cheap labor and you will be compensated accordingly in both money and career development.

Larger companies have brand name and a lot of rules that are helpful to the long-term development of younger engineers/programmers.