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.
Make your own website, get a job working for a firm as an intern. I went to school for computer science and learned a hell of a lot more 'in the field'.
Some people die at 25 and aren't buried until 75. -Benjamin Franklin
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.
Web development can be found in the art & interactive design programs, not computer science program.
*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)
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.
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.
As a Professor at a top ranked Engineering University, I thought I could give you a little bit of perspective. If you find CS not challenging enough or not on target enough, you might want to get a degree in another engineering discipline like Electrical Engineering or Mechanical Engineering. Countless superb programmers come from another engineering discipline such as Electrical Engineering, Mechanical, Aerospace, etc. The reasoning for this is that if you find that you don't like programming 60 hours a week, you will have in demand skills in another sub-field to fall back on. Also, typically with majors such as Electrical Engineering, you can take courses that cross over into CS liberally, but also understand how computers work down to the Silicon. So my advice is stick it out and finish a degree as that is something that will never go away.
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.
Translation : I'm a retarded web monkey "programmer" (actually just a glorified scripter) and am too dumb to see the benefits of learning CS since it's hard and stuff. Halp me!
I've got a very classical kind of algorithmics and math-heavy CS degree and work as a web-based business application developer. My academic education has nothing to do with what I do daily, except perhaps has served as some kind of a demonstration that I am capable of critical thought, which is quite important in my every day job, making sure that customers' systems don't totally screw up their businesses.
I want to play Free Market with a drowning Libertarian.
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!
Look, I have seen people who know how to drag and drop in Dreamweaver call themselves "web developer".
But really, if you are on CS level development its just the same as regular development. Sure your choice of core languages will be somewhat more limited, but make no mistake. Webdevelopment for large sites is very complex, CS level complex. Most apps today require a good level of networking, and most websites are more and more just regular apps.
I work for one of the largest websites where you can buy stuff (yeah that one) and most our developers are just that, CS majors, with an occasional math and or fysics major.
You are in the right school, just do some extra curriculum interwebby stuff if you want too.
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
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.
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.
Easy Online Role Playing Campaign Management
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.
Just because you are in a CS program, (which has never been a "vocational" degree program), does not prevent you from picking up whatever other skills you desire. As you pointed out, the CS program puts you in the "programmer mindset"; you've keyed on to the actual purpose of a CS program, which is NOT teaching you the "language of the month." They are trying to give you the skills you need to be able to pick up the language of the month on your own far more rapidly than you might be able to otherwise.
Just like a vet would be well served by obtaining a zoology degree prior to entering veterinary school, many people find that a CS degree well-serves their educational goals in addition to the constant "self-education" that is a fundamental part of any computer career.
"Web development" is a rather vague job description. If it's about graphics design, web page layout, UI look & feel etc, then yes it's more "art". Tacking a CS degree onto that seems waste of time.
If it's about programming PHP, JavaScript (or whatever the popular web programming language is this month), database backends etc, then a CS degree doesn't seem out of place. But perhaps original poster could do better by taking targeted courses in the direction / languages he wants to add to his skill set.
Went to a trade school for graphic design, taught myself programming. I have a BA, not a CS, but I spent nearly all my free time working in code and banging my head against the wall over the kinds of problems that are simple to me now, and worked as a programmer while still in school for my BA. I worked for really cheap, but experience got me a better job, where I worked with better programmers and in turn learned to be a better programmer. And that's how everyone I know got into programming. I don't know anyone who knew they wanted to be a programmer before they went to school and decided a CS degree would help them. You have to have a talent and enjoyment for problem solving, and a need that programming can solve. That's about it. Read books, teach yourself, and learn from others. Rinse, repeat. (Oh yeah, almost forgot. A programmer's education is never over. You will constantly teach yourself new tricks or become a manager.)
When I was in school (the latter '90's) my Programming Languages professor deliberately chose a textbook that was issued in 1985. He did this not because it was his book and he wanted the money (it wasn't his book, and only used copies were available), or because he had some particular fondness for the languages presented therein. (Pseudo Machine Language/Assembler, FORTRAN, COBOL, Ada, Smalltalk, and PROLOG, IIRC.) He used an outdated textbook because he wanted us concentrating on the actual point of the course, which was to learn to be able to analyze any computer language, suss out what was important to look for, and thereby learn any computer language with reasonable skill in a very short period of time, along with spotting the strengths and weaknesses of the language.
That would have been considerably more difficult if he had used a language (such as C) with which a reasonable number of the students would already be familiar.
1) "Web Developer" can cover a rather broad spectrum.
If you want to do architecture for large sites then stay where you are; you will want the theory.
OTOH, the multidisciplinary thing could make sense. Maybe you want to get an Arts major (web design / graphic layout) or a Psych major (Human Factors / Ergonomics / User Interface design) and a computer minor?
Then again, don't overrate college. One of the smartest programmers I ever worked with never went to college. One of the best object oriented developers I worked with was an English Major. I guess I would ask if you want a degree to get you resume past Human Resources or whether you actually want to learn?
I have two questions about what you said here:
The fact is that web development has taken huge bounds in the last few years, and sadly most universities haven't caught up.
1) What giant leaps in state of the art are you talking about here?
2) Is it possible you're new to this and are mistaking the normal fast-paced evolution of computers, tools, and ecosystems as a one-time isolated event? (If so, give it another 5 years; things will be moving just as fast (if not faster) in 2018.)
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.
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
First off, there's a lot of stupidly bad advice here. The OP states that his intention is to become a web developer and feels his current 2 years of CS is useless. Naturally everyone becomes polarized and offers their bad advice. On the same token, most bad programmers will do the exact same thing when a customer comes to them and asks for a solution to a problem. The correct advice should first identify the problem correctly, then offer the right insight to lead the OP to the correct solution for his unique situation.
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.
Why do you think you'll become irrelevant? Because the technology you learn today will be deprecated for next year's flavor of the month technology? And if that's the case, why do you think learning that particular technology will grant you anymore longevity?
Consider this: technology will always become obsolete. If you accept that, then you will continuously be forced to learn new things regardless of how you learn it.
Secondly, why do you want to start your career right now? Is it out of envy? A feeling of wasting time?
I would be lying if I didn't say I wanted to graduate 4-5 years earlier. After my first year in college, the internet bubble burst. I was entering CS with older peers landing rock star programmer jobs with little effort. And that all quickly changed.
At the same time, the core fundamentals of computer science are allowing me to stay relevant today. I started with the web, went on to complete my 4 year CS degree and now I've been able to learn the Android SDK on my own time without the aid of classes. What little I remember of my advanced game programming course (I didn't stay in it) and linear algebra has allowed me to work at the 2D level canvas without ripping my hair out.
When you understand and correctly apply the theory, you are able to digest much more complicated things much more quickly. You know a bad algorithm when you see it. You know how to correctly optimize rather than wasting your time with trial and error. But if you sit through class thinking "I don't see the direct connection" well consider trying to do algebra without knowing how addition works. That's what you're up against.
Now despite that, that doesn't mean that school is best for everyone. If you feel you are capable of learning things on your own, no matter how complex or how convoluted, then school may actually slow you down. But if you still feel you can't correctly teach yourself, then school is a good option.
If you feel you can go faster, then do so. By that I don't just mean stopping school. You can actually accelerate your school if you have the desire. I had the option of actually graduating a quarter early, but I chose not to in order to explore other topics the school offered (one was the game programming course). Looking back, graduating in 3 years is actually do able with summer courses and maxing your units per semester/quarter.
Finally don't discount the trade-offs. Starting work early is good for those that want to be entrepreneurs. Those that simply want a desk job for the rest of their lives, it is probably a really bad idea. Never again will you be surrounded by people of the exact same age and never again will you have culturally "approved" time to actually just sit down an learn whatever you want. That includes studying abroad on educational loans and studying seemingly useless topics. At my age, people around me find more interest in these sorts of topics than their own specialty simply because they're hired and forced to work on their specialty for at least 8 hours a day. As a student I thought I could sit in front of the computer all day, today I look for things to get me away from the computer.
This may be the last best chance you get to learn what you can in a college setting. Take it for all its worth, you could end up getting to the market place and finding out how un-interested you are in your past passion. Or find that you actually could use a lot of CS knowledge for web "insert fad here".
Good leaders run toward problems, bad leaders hide from them.
Nice troll.
To have a right to do a thing is not at all the same as to be right in doing it