Slashdot Mirror


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?"

23 of 347 comments (clear)

  1. Canonical? by serviscope_minor · · Score: 5, Funny

    Try the Mint or Arch computer science degree. Much better than the Canonical one.

    --
    SJW n. One who posts facts.
  2. More like... by Anonymous Coward · · Score: 4, Insightful

    More like going to veterinary school to work at a pet food store...

    1. Re:More like... by Dr.+Tom · · Score: 5, Insightful

      this

      if you drop out because you think a good education is standing in the way of you making money, then I'd like to tell you, yes, I'd like fries with that

    2. Re:More like... by bsDaemon · · Score: 4, Insightful

      Or, to bring out a car analogy, it's like studying automotive and mechanical engineering, but then rather than applying to work at BMW or Porsche, you then go and sign up to work at Jiffy Lube. But some day, you might get to be assistant manager!

    3. Re:More like... by Intrepid+imaginaut · · Score: 5, Insightful

      I think web development has a bit of a bad rap these days in terms of complexity. Things have moved on a lot from the 90s when anyone could hack together a bit of HTML and your biggest worry was making it work in internet exploder.

      Nowadays a web dev needs a firm grasp on SQL databases and what you can and can't do on them, ever more complex stylesheets, a scripting language like PHP, Javascript plus interpretations like JQuery or AJAX, HTML, XML, the graphics packages used to produce the look of the websites, plus a whole host of subsidiary technologies including networks and Linux if you want to set up your own server as well as email, flash development and actionscripting, and on and on. And things are only going to get more involved now that we're getting into decentralised networks via WebRTC and mobile integration. And you do need artistic chops.

      Yes the depth mightn't be as focused as C or whatever, but the breadth is impressive and growing more so. If a C++ dev was sat down and told to make a fully dynamic website from scratch, aestheticalIy pleasing and with all the bells and whistles, they might be surprised at how much is happening behind the scenes. I agree with the subby that traditional schools aren't going to cut it anymore, you do not need high end maths for web development, maybe something vocational to get a good grounding and understanding of the concepts before just doing it yourself.

    4. Re:More like... by papa248 · · Score: 5, Insightful

      Agreed. There is a lot more to a college degree than "career development."

      --


      The higher, the fewer.
    5. Re:More like... by arendjr · · Score: 5, Informative

      It's getting a stupid meme, but again: this.

      I got a job as a web developer (though the job title is actually Senior Software Engineer). I did a Bachelor's in Computer Science and a Master's in Software Engineering, and it sure paid off. Of course going to college didn't teach me how to do PHP or HTML or CSS, but it did teach me about time complexity, algorithms, data structures, and all the stuff needed to solve scalability problems. It taught me database design, which you better firmly grasp before even thinking about using a NoSQL solution. It taught me about testability, software processes and design patterns, all stuff which any developer should know, web or not.

      I remember when I was young and just about to start going to college. I was a self-taught programmer, was working as a programmer part-time already, and I still had the arrogance to even doubt if college could still teach me anything useful. Boy, am I glad I finished my studies anyway.

    6. Re:More like... by tooyoung · · Score: 4, Insightful

      Agreed. If the submitter is looking only to do very basic web pages and not more complex web applications, then, yeah, they probably don't need any further education. Just create a portfolio of content and shop it around.

      However, if the submitter is looking to do advanced web applications, possibly for a large company, and get paid over $75K, I would suggest a CS degree. As the parent states, web development goes well beyond HTML and CSS. An understanding of CS concepts is very important for creating a large interactive web application.

      Also, are you willing to bank that web development will stay as it is for your entire career? Having a background in a wide range of CS concepts can be very helpful as the sands shift in the future.

      Lastly, I'll comment that 80% of people who label themselves as web developers and proficient with JS and CSS only have the most basic understandings of the capabilities. Often, I see people who have taken courses in Java, and then saw that JS looks syntacticly similar on the surface. They code JS as if it is Java, resulting in extremely bloated and error prone code. My favorite statement from one such developer was "If only JavaScript had the concept of a hashtable, this would be so much easier to do".

  3. Pick an Emphasis On or Interdisciplinary Degree by eldavojohn · · Score: 5, Insightful
    I think a lot of colleges offer degrees where you do "Computer Science with an Emphasis on X" but looking at one of my alma maters I see that it's moved to a kind of "flavor of the month" thing (game environments?). This usually leaves room for you to pick other courses. Another thing is that sometimes they offer interdisciplinary courses but you really have to be worth your salt to cut it in these areas (I guess they're close to a double major) so for example I can pull up MIT's page and see "Bachelor of Science in Computer Science and Molecular Biology".

    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 ... so you know, there's something to be said about breadth and figuring out what you want to do.

    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.

    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 :-) That can all go on your resume, you know.

    --
    My work here is dung.
    1. Re:Pick an Emphasis On or Interdisciplinary Degree by martok · · Score: 4, Insightful

      Agree with parent here. I would add that as you are finished your first two years, you have jumped through the hoops which cause most people to drop. First year maths, stats etc. In years 3 and 4, things get much more interesting. Stick it out and you'll be a better programmer as a result. Yes, web developer == programmer.

  4. A degree is worth about 30-50% of your paycheck by Anonymous Coward · · Score: 4, Informative

    *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)

  5. Wrong by YodasEvilTwin · · Score: 5, Insightful

    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.

    1. Re:Wrong by dmiller1984 · · Score: 5, Informative

      I can't agree with this any more. I had some similar thoughts when I was getting my CS degree, but I now consider the things I learned in college invaluable. Most online tutorials don't teach you about reliability and efficiency and it's good to have the theory you learned in college to back up the programming you'll do as a web developer.

    2. Re:Wrong by GodfatherofSoul · · Score: 4, Informative

      I second this comment. The "college is a waste of time" mindset seems to be popular on Slashdot and couldn't be further from the truth. If you can't understand how some of the formal learning you're getting in college doesn't help you as a developer, you're not thinking hard enough about what you're being taught. College isn't about teaching you to write a web page for a specific job. Formal education is teaching the best way to tackle fundamental problems the most efficiently.

      I just completed a degree after about 14 years in the field and I took A LOT from my curriculum (and I mean in EVERY class).

      --
      I swear to God...I swear to God! That is NOT how you treat your human!
  6. Simple by angryfirelord · · Score: 5, Insightful

    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.

  7. Hang in there by jamessnell · · Score: 4, Insightful

    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!

  8. Web development will always be far ahead of class by wytcld · · Score: 5, Insightful

    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
  9. Re:Work by fermion · · Score: 4, Insightful
    Absolutely. Start making websites. If you can't find a job, then find a non-profit and volunteer. This is what I did. I was other there coding for production sites when I was 17. It was simple stuff, but it got me in the games. My degree is in science, so most of the computer stuff I learned I learned in high school, with just a few college courses. By the way, I wish I had more computer science courses because it would have taught me the jargon of computer development. Such shorthand is used quite a bit in communications for large projects, and my lack of it is an impediment.

    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
  10. Re:You want an art education by vlm · · Score: 4, Funny

    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
  11. Re:I call troll by AwesomeMcgee · · Score: 5, Insightful

    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.

  12. Re:Work by Anonymous Coward · · Score: 5, Insightful

    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.

  13. Re:Work by vilanye · · Score: 5, Insightful

    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.

  14. Re:Work by Zmobie · · Score: 4, Insightful

    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).