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

26 of 347 comments (clear)

  1. 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 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".

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

    2. Re:Pick an Emphasis On or Interdisciplinary Degree by talexb · · Score: 3, Insightful

      +1

      Find a college in your area that offers something more practical, if what you're going to be doing is web development.

      Then again, if you are interested in dealing with more complex issues such as schema design, business intelligence, user experience, and operational issues like proxying, high availability, replication, then staying in computer science might be a better call.

    3. Re:Pick an Emphasis On or Interdisciplinary Degree by Wovel · · Score: 3, Insightful

      You hit the nail on the head. If he wants training to use current tools and concepts he needs a trade school. The university program is design to provide the theoretical framework you need to do more advanced work in the field. If the OP sees himself only being a web programmer than maybe the trade school route is the way to go. However, technology and tools change, a solid base in theory will be more valuable in 10 years than the current FOTM in web development.

    4. Re:Pick an Emphasis On or Interdisciplinary Degree by AwesomeMcgee · · Score: 3, Insightful

      I am so torn on this issue. We all know every fresh CS grad that walks into a junior role on our team knows basically nothing and needs significant mentoring to really have any useful skills. Yet there are so many important things they teach in the schools around data structures, computational analysis, and how to generally apply formal math to programming to achieve correctness as well as efficiency.

      I just don't understand it I guess, how does one go from studying such important concepts to being completely incapable of applying them in the real world. I think the study of them is ever important so he should complete his CS degree, but he's not wrong in that he will still be useless when he walks out of the door with his diploma in hand and will need to be trained up from scratch all over again in the first 2 years in the real world.

      My suggestion though: Finish your degree and create a portfolio of random crap and do everything you can to get recruited by MS/Apple/Google as you will get guaranteed training in proper skills at any of them (yes even MS, I did a 1 year contract stent there and half the people I worked with had CS Phds and were smart as can be, I learned a lot from that gig, there's plenty of notables who worked up through MS as well even if you don't like their products)

  3. Stay in school by jones_supa · · Score: 3, Insightful

    If you are doing fine in school (passing courses etc.) why not just complete it? Two years will go really fast and a degree is always a nice addition to your experience. At the same time you can prepare your web development career.

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

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

  6. Not entirely by Murdoch5 · · Score: 1, Insightful

    Well I don't have a solution but I can tell you that you should stop your computer science degree asap. Computer Science doesn't really teach anything, you get a little bit of a lot of subjects with no structure, use or even good information. All the really bad programmers I know took Computer Science in school and I want to strangle them 3/4 of the time. They don't understand good code structure, they have no concept of a useful comment and they think managed languages run the world. If you want to learn good web programming do it on your own, buy a domain and just start coding a web page, you learn more through actually doing it then you ever will by hearing about it.

  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. Human Resources doesn't care what you know. by CaptainNerdCave · · Score: 3, Insightful

    Seriously, HR doesn't care that you dropped out of college to get better with your web developing, all they see is "incomplete". The purpose of a degree (for capable people) isn't to teach you anything, it's to get past the incapable HR drones.

    Get the degree AND teach yourself; it's the only way to both be on top of the game, and get a job.

  10. Wrong degree by ClayDowling · · Score: 3, Insightful

    There is nothing about designing a pretty website that requires a computer science degree. For that, you want a design degree.

    On the other hand, designing a good user interface is not about making a pretty web site. It's serious science, highly technical, and you'll need to understand not only computer science, to make the guts of it work, but other disciplines to understand how humans and computers interact.

    Web design technology has changed a lot in the last decade. The fundamentals of computer science and logic have not. Learning the latest in web technology will help you get an entry level job, and as long as you race to learn the next new technology six months from now, you'll be well stocked on entry level jobs for the rest of your life. Or at least as long as you can keep up with that particular rat race.

    If you learn computer science, and the fundamentals of why things work and how to get things done, you'll be in a good position to have a career. That doesn't guarantee you a job. But it does mean you'll have a lot easier time translating an entry level job to a sustainable career. Maybe that doesn't seem important right now, but once you get things like a mortgage and a family, that is way more important than being perfectly equipped for the sort of job posting that is just a list of the tools they're using right now.

  11. 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
  12. CS - not CIS by Anonymous Coward · · Score: 3, Insightful

    I think you got confused with the X-IS degrees out there (MIS, CIS etc). Computer Science is a S-C-I-E-N-C-E covering the nuts and bolts of how computing works both in abstract and MULTIPLE-applied environments. It is HARD CORE SCIENCE. You don't learn one language. You learn lots. You don't learn one OS. You learn many. And how all of these are built.

    The "I love a managed language" people you are referring to, are the one's taking a "Java class". Some colleges mix and match CS with CIS and don't differentiate.

    CS courses are things like: Finite State Automata, Algorithms and Data Structures, Relatational-Database Engine design, Compiler design and optimization, Operating systems design, Discrete Math, Graphics Architecture and Mathematical Transformations, OOD/OOP, Structured Programming, Software Engineering. (Notice there is no "language" course listed).

    Anyway. My two cents.

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

  14. There are several answers by medcalf · · Score: 3, Insightful

    First, what is the purpose of your degree, to you? If it's to enable getting a job, then you should know that the order in which résumés are generally evaluated, all other factors being equal, is people with an advanced degree, then people with a bachelor's degree in the field (in the case of IT, that could be IT, MIS, computer engineering or any given engineering), then people with a bachelor's degree relevant to the core business of the company, then people without a degree but with a lot of relevant experience, then anyone else. Generally, the last category is never even looked at, except in the most desparate job markets, or where you know someone. So, again with all things being equal, the closer you are to the front of that queue, the more likely you are to not be overlooked before getting an interview. Some jobs will become unavailable to you with each step further to the right. Those that disappear are not always the best quality jobs, but remember that this point is predicated on your intent being to use your degree to get a job.

    If on the other hand, your purpose in getting a degree is to learn as much as possible about your chosen field, then you don't need to worry much about the degree. Take a bunch of classes that interest you, and I do not mean just in computers (Steve Jobs famously attributed his design sense to a calligraphy class he audited), and then when you have nearly the requisite number of hours for a degree, go see a counselor about how to get a degree (any degree) with what you've done. Most likely, you'll have to take a few filler classes (math and economics are likely, because you should end up pretty close to a math or business degree, depending on your interests) to make up the difference and get the degree at that point.

    If, instead, your purpose is to get a good education, switch to liberal arts (if necessary, switch colleges) with an emphasis on classical learning, languages and literature. Avoid schools whose idea of liberal arts is grievance studies, and whose idea of Western culture is an unbroken trail of oppression, and look for one that really grounds you in Western culture. The most salient benefit of such a course of study is that you will learn how to learn on your own, as well as how to express yourself well, how to set and obtain goals, how to lead and how to maintain a balanced and well-lived life. Unless your goal is a profession (by which I mean the real ones: law, medicine, engineering), this will give you the basis to do anything at all you are good at with the rest of your life, and do it well. And if your goal is one of the professions, this is an excellent basis for a graduate degree in said profession.

    Second, assuming that you've decided you do want a degree, for any of the above reasons, I fail to see how that should stand in your way. Whether or not you are getting a degree, it is useful to have a job. It's experience for after college, money for now. So why not build up a website on a topic of interest to you, and make it the best you can? (I have a colleague who built a website about touring motorcycles to learn how to administer databases, for example.) Being interesting to you will keep you focused and improve the quality of what you produce. Once you've got the site the way you want it, use it plus your being enrolled in college to get either an internship or part-time web job (if you want to work in corporate settings) or small contracts (if you want to do contracting). This will build up your ésumé as you study, and will give you something to stay interested in while you're taking courses that you don't yet see a use for. (Who knew that taking linear algebra or structures and properties of materials would help me be a better system architect? Which is not to say every course will prove useful for every person, but you'd be surprised at what comes up decades after college.)

    Finally, having decided on a degree path and having gotten a job that you want to do, the best advice I can offer is

    --
    -- Two men say they're Jesus. One of them must be wrong. - Dire Straits
  15. 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.

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

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