Ask Slashdot: Best Alternative To the Canonical Computer Science Degree?
connorblack writes "I want to be a web developer, and everyday I ask myself the same question: why am I wasting my time getting a computer science degree? I feel like I'm trapped- most of the courses I spend all my time on are far removed from the skills I need to succeed as a web developer. But on the other hand, I can't imagine another degree that would allow me to stay in a programming mindset. The fact is that web development has taken huge bounds in the last few years, and sadly most universities haven't caught up. Computer science is a field that overlaps with web development, but getting a computer science degree to become a web developer is like getting a zoology degree to become a veterinarian. Close, but no cigar. So here's the deal: I'm in my second year of a computer science degree, and the thought of wasting two more years, getting left in the dust, and becoming irrelevant has me horrified. I want to start my web development career now. Or at least as soon as possible. I can drop out and devote 6 months to teaching myself, but I want something more structured. Something that has the benefits of a classroom and an authority figure, but which teaches me exactly what I need to know to do what I want to do. Any suggestions?"
Try the Mint or Arch computer science degree. Much better than the Canonical one.
SJW n. One who posts facts.
More like going to veterinary school to work at a pet food store...
Honestly if I could go back I would seriously consider dumping the "Emphasis on Artificial Intelligence" and switch from Computer Science to Computer Engineering. However, I also heard that your whole schedule is often picked for you in that degree so I never would have been able to take the two semesters of music theory or extra calc and physics courses
Now to directly address your questions:
I want to be a web developer, and everyday I ask myself the same question: why am I wasting my time getting a computer science degree?
Because someday when your server is hacked and you're doing a post-morten on a Linux machine you'll be glad your professor beat it into your head how that operating system works? Because JavaScript is really easy to write but for some reason it's killing mobile batteries when people visit your site and you need to understand what O(n^3) means on the client side? Because at the end of the day it's just math and logic that you're coding and that's the basis for a computer science degree? Because if you can't communicate clearly, your coding skills won't mean shit in a team environment? Etc.
I want to start my web development career now. Or at least as soon as possible. I can drop out and devote 6 months to teaching myself, but I want something more structured. Something that has the benefits of a classroom and an authority figure, but which teaches me exactly what I need to know to do what I want to do. Any suggestions?
This is kind of like a Catch-22, yeah? You don't want to stagnate yet you want to be taught in a form that naturally stagnates? Dude, the libraries like node.js and backbone.js are moving too fast to solidify into a course. You just got to suck it up and absorb an autodidactic methodology from college and move forward with that, ready for anything that gets thrown at you.
:-) That can all go on your resume, you know.
Also, not to be a dick but if you're bursting at the seams with talent, get on github, rip open an account on Heroku or buy a cheap VPS for $50/year and show us what's up. We're waiting to be blinded by your brilliance
My work here is dung.
*Degree == Paper(employers want to know you can stick it out)
*Comp Sci teaches you fundamentals
*The first two years usually don't focus too finely on the specific area of the degree(you'll learn the more pertinent info towards the end)
Technologies and tools are easy to pick up. You do not need to be taught them in a formal setting. What you do need is knowledge of core software engineering and computer science basics and principles so that you can create quality shit what whatever tools or technologies you end up using. Algorithms and data structures, software architecture, optimization, concurrency, etc. are generally much easier to learn and learn well in a formal setting and will set you up to be a good developer, not another interchangeable hack that never makes anything worthwhile.
You don't go to college to learn a trade. You go to college to learn the fundamentals and become a well-rounded individual. There's certainly an argument that college is overpriced, but it will certainly help you in the long run. As someone once said, an employer may not care that you have a degree, but they will care if you don't have one.
Plus, the web development field is rather saturated as everyone else thinks they can make web pages. If you want to be a freelancer, you'd better be a good salesman (or woman) too.
I have CS degree and develop web apps. I've worked on web apps since before starting university too, so it's something I do because I enjoy it. I suggest you stick it out. I was fairly jaded many times in the content of my CS program, as I expected a lot more. Since graduating a few years ago, I'm realizing that there was more value than I thought in those courses. Often it wasn't entirely captured in the technical details of the course, but rather the process of getting stuff done in that field. Web apps are continuing to gain traction and unless you want to work on "brosure" websites, you'll probably end up using fairly extensive CS concepts to make your web apps awesome. That said, if you love something, a formal education isn't always necessary. However, if you want to get WORK in that subject, you may find customers/employers bizarrely more receptive to the degree. It's stupid. It's reality. Take care friend!
The valuable web developers are those who are inventing what's next — or riding that wave as others are inventing it — creating the trend or solidifying it. Then there are all the people a few years behind using standard content management systems and standard design sensibilities.
So you've either got to get yourself to someplace where the trends are alive, and get to the front of that. Or if your aspirations are more modest and you just want to follow a few years behind the vanguard, learn some other business entirely while studing one of the content management systems and taking a few design courses, or at least hanging out in museums to absorb some design sensibility. Anyone can use a CMS to create a good-enough site. It's knowing some other business that will allow you to communicate with people in that business, to build sites for them. It's not web skills that are in shortage. It's people with decent web skills who can understand the needs and vocabularies of particular niches.
Unless you're brilliant enough to invent something better than the current standard CMS platforms, for some particular niche. But it's still knowing the niche that's important. If it's a brand-new niche, all the better. No course can teach you to create that, though. If you need to follow authority, get a degree in something totally remote from computers. Then code up the web advances that particular area needs, using standard tools that, frankly in themselves don't require much in the way of education or intelligence.
"with their freedom lost all virtue lose" - Milton
Let me add one more thing, which you college professors may have already told you. College is not there to prepare you for your first job, but for your last job. To put it more starkly, a college graduate may be more likely to have a well paying job into retirement than someone without. This is because you are trained to learn and so can a number of different jobs.
Here is an example. In the late 70's if you have an a math degree and a knowledge fo Frotran and the IMSL library, you could get a high paying job immediately. That was because Fortran was really hard to write and debug(error messages had little to do with the actual error). However, 15 years later if you still expected to make money writing Fortran, you were not so lucky. Flash forward to 2000 and much of the code we need to run the world had already been written, and there was not a lot of money to be made just reimplementing old code. If one is not versatile, one did not have a job.
Today with the web and major sharing of code, there is not an opportunity to rewrite a product from scratch as there was 20 years ago. We do not have 10 different word processors. Most of the web browsers run on one of four engines. Very little web development is done hand coding HTML like I did many years ago. Five years ago there was no App market and coding for tiny screens did not exists. Just imagine what they world is going to be like when you are mid carrer?
So apply the skills you have now. Many of us made a pretty penny in college not by waiting tables or working at a shop. but doing what we loved. The advantage was that we learned a skill and got paid to do it. However remember it is easy for a young person to get a job, not so easy for an older person with responsibilities.
"She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
Web development can be found in the art & interactive design programs, not computer science program.
Not just "web development", but "women" also.
Not trying to make a value judgement or insinuate anything, that's just the facts.
"Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
How did this even make the frontpage of slashdot? This guy's an idiot. He thinks he's being left in the dust learning the fundamentals, but thinks learning a single application framework to develop web-pages with won't mean he's left in the dust when it goes away and he doesn't know the fundamentals well enough to transfer to different technology with all his skills in tact. The fundamentals mean when you go from one language to another you aren't starting from square one in any of them. The fundamentals mean in any given technology old or new you can reason about appropriate ways to do things without having to go read endless descriptions of idiomatic techniques for the language which you then use haphazardly because you have no reasoning skills to correctly compose them.
Seriously the dude who wrote this question just needs to hear: You're wrong. Just wrong. So wrong. Keep on keeping on because you don't see what value it has to you, but it's significantly more than you clearly have any idea. You're wrong, the end.
I have no degree, I had to study so bloody hard to get these fundamentals over so many years that I wish to death I had just got the stupid loans and done the stupid CS degree. I screwed the pooch and made up for it the hard way, don't make the same mistakes.
I went to school for computer science and learned a hell of a lot more 'in the field'
Either you werent paying attention or your classes were bad. From the few CS classes I took, I know that there is a lot more to programming than just belting out code; theres a whole lot of theory behind coding decision that transcend the particulars of the language you are using.
I mean, if you dont care about code speed (O(N^2) vs O(2^N)? Whats the difference!) or maintainability ( Structure? Variable naming? Who cares!), or of understanding the difference between C++ and what your compiler actually spits out, sure go for it. Your code will actually solve some problems-- just perhaps not terribly well, and woe betide the next person to inherit your code.
There are a lot of people in the IT field as well who cram for their CCNA and A+ and Net+, and can do some basic Cisco router config. Everything is well until something breaks, and then actually understanding network theory is really really important. Dont downplay the degree / theory side of things; experience is much more valuable once it is backed up by solid theory.
Wrong, you think that because you are under-educated. Any 4 or 5 year CS program is going to miss lots of topics, but ya know what? A properly grounded CS grad can learn anything on his own. My CS program didn't require any GUI class, but that somehow didn't stop me from learning multiple UI libraries using multiple programming languages on my own. A self-trained monkey might be able to learn how to effectively use one, but will struggle learning a second in a different language. Another difference is that I can actually write my own GUI libraries if I ever need to. Just like I could create a custom tree or linked list that is optimized for the task at hand and will perform better than the generic off the shelf implementations that ship with languages. Self trained people rarely can drill down that deeply, very rarely. People like you are the ones stuck because all you know is Java or whatever, but the people you sneer at can get hired anywhere and pick up whatever language and area they will be working in quickly because they have the theoretical background. A huge red flag when hiring is if the applicant says "I am a programmer". No, they are an API monkey and not hired.
This. This. A million times this. So many people do not see the value of the degree until after they are at least mostly done with it. Half of the 'drop-outs' and 'self-taught' people are just not patient enough to get the degree and start using cope out arguments. Don't get me wrong, some people can pull off self teaching and what not and be effective software developers, but there is a reason we have a massive shortage of GOOD software engineers in the US and elsewhere. Yes, you will sit through some boring and mostly useless classes, but most of them are not that. A CS degree is teaching the fundamentals and then gets into the advanced more specialized topics later.
The OP is only 2 years in and has not reached the advanced point yet. When I graduated my last year and a half was focused almost exclusively on the much more advanced and specialized classes that people want immediately but have no business in before they have the proper foundation. I took courses focusing on software development, high level security and cryptography, mobile development (the entire world of it, not just how to write applications), and I even took advanced programming languages (learned a lot about functional and logic programming, while I am not the best at it, the class gave me a start and great perspective on OO, imperative, and declarative languages I already knew). They even offered courses focusing on web development like what the OP is talking about(mostly PHP, we didn't mess a lot with .NET or anything else).
Sticking out for the degree is important because you WILL learn those high level concepts and be much better prepared for generally abstracting the concepts to move between things. I mean, basically the way the programs should (and usually do at good schools) is directly akin to proper programming in that you don't hard code and specialize things, you keep it general and abstract such that the individual instances (students) can apply that knowledge effectively in their chosen specialization.
What is important is to supplement your course work with your own more specialized interests. I did plenty of research on languages and programming styles much different than what the university taught me, and I even did a lot of IT and hardware work as just a general hobby (helped me grasp a lot of things later on and make me into a more well-rounded software engineer).