|
Degree.Dispose(); //
...it's like you get your driver's license and delude yourself in believing that you are qualified for F1 race ;}
d{^__^}b - it's time to fly
modified on Tuesday, December 7, 2010 1:57 PM
|
|
|
|
|
What? Hang on a minute, you mean I'm *not* qualified to race F1?
Damn!
|
|
|
|
|
Strangely enough you could be qualified for F1 racing but not hold a standard road licence.
Get a competition licence at an early age and work your way up to the top.
I could work in some similarity with programming here, but I will leave that to your imagination.
|
|
|
|
|
It's comforting to know that I am far from the only one who writes software without a CS degree! My degree is in Molecular Biology, with some grad work in Bioengineering...
Although I did take a few CS classes, too, while in school, and did some work in bioinformatics. But, I started programming long before university, when I was 10.
For those with a CS degree, what do you think are the most valuable things you learned in the CS degree that the rest of us are missing?
|
|
|
|
|
I'd say that it depends.
Depends on the school, focus of the career and the target market you aim with your programs, at least what I see here is that people that don't have a CS have issues with basic computer things, unless you are writing in C/C++ where is a must, but still struggle somehow with it at first. On the long run I think everybody learns what they need, just that the degree could in some cases help understand the concepts quicker.
|
|
|
|
|
While I did have a class in C/C++, that was 9 years ago, and I haven't really touched it since! So, yes, I'm a little rusty. I'm using mainly C# right now. Then again, in my work I'm mainly doing Web programming, so a lot of the low-level stuff never really comes into play.
But, yes, I agree that in terms of low-level stuff, that is something where there is definite room for improvement.
Thank you for the response.
|
|
|
|
|
Something I find programmers without a CS degree are often missing is basic knowledge of algorithmics and complexity. For instance that an optimal comparison based sorting algorithm has worst case execution time of O(n*log(n)) and a hashmap has an expected operation time of O(1) and how you should take this into account when writing software.
|
|
|
|
|
Andreas Andersen wrote: Something I find programmers without a CS degree are often missing is basic knowledge of algorithmics and complexity
Yes, I've heard this before. I've had a class in discrete math, but I know that I need to learn more about algorithms. I bought a copy of Introduction to Algorithms (the Cormen book that most people seem to say is the one to have).
The only issue is finding the time to study on my own. For a little motivation, I'm thinking of following along with the MIT Open Course Ware class which is taught by one of the book's authors.
Thanks for the response.
|
|
|
|
|
MIT OCW rocks!
/ravi
|
|
|
|
|
Ravi Bhavnani wrote: MIT OCW rocks!
Yes. Yes it does! Check out http://academicearth.org/[^], besides MIT classes, they have classes from many other universities, too.
|
|
|
|
|
|
Just ordered that book from Amazon... Hope I got that cheapest copy while the rest of you weren't looking
------------------<;,><-------------------
|
|
|
|
|
Since I have to unfortunately admit I don't have the first clue what you just said; I guess I'll be on my way to the book store now.
|
|
|
|
|
I looked it up, and thought how lucky I am never having studied such junk. If I need to know I can go and learn it, but I have never needed to know.
With no degree and having been coding for the last 30+ years (I started on a ZX80) I have never felt I have been lacking, and have progressed far beyond friends with degrees and MS qualifications coming out of their ears.
|
|
|
|
|
Well most of the time you'll be fine without it, and certainly you can be very capable anyway. Compare it to someone building bridges without a degree and makings as beautiful bridges as any engineer, until someday one of his bridges collapses and he has no idea why, and an engineer will tell him: Well if you had only done the math beforehand this would never have happened.
It's one of those things you'll never know you're missing until you learn about it. There's a reason it's first year material on most CS programs - right after basic programming.
|
|
|
|
|
My point was more that you don't need a degree to be able to do the maths.
And check out The Millennium Bridge (London)[^]. My betting is high that the engineers on that project had experience and qualifications, and even knowing why it wobbled still ran into trouble.
If we are to keep in the trend of examples from other areas which are not realy relevant, my father-in-law worked in a mine detonating explosives for over fifty years, having left school at 14. When legislation insisted he have a qualification to do it (after thirty years of experience) he sat the exam with no preparation and passed instantly. Of course he knew the theory, but he never got a degree. In fact the main reason he carried on working so long was that the newly qualified people coming to do the job with the ink on their degrees still wet were still clueless in the real world.
Who are you going to trust on the job? Thirty years of experience, or a fancy piece of paper.
To use a more relevant example, I recently worked on some tax claim software with a 'SQL expert' MS qualified and masters degree. His theoreticaly based solution was fine on small data sets but ran all day on a decent amount of data. He knew the theory, but did not know how to apply it. I took one look and made it run in seconds for a huge dataset. You see, I also know the theory, even though I never got a degree, but real world experience working with huge data sets every day, and understanding the relevant tax law, was more help in writing the more efficient algorithm.
Given the choice between someone experienced, or someone qualified I would take experience every time, unless there is a legal requirement for the paperwork. You can't get experience without being capable, but you can get qualified and not have a clue.
|
|
|
|
|
You can have both paper and experience. I have both and I'm pretty sure I'm a better developer than I would have been, had I jumped straight into work life. University has taught me things, the real world never could and vice versa. Of course you don't get anything more out of an education than you put into it, and many people spend their university years drinking and partying, so obviously you can find incompetent university graduates. You can also find brilliant people who never finished university like Einstein and Bill Gates.
So my original statement was not in absolutes, but in averages. My personal experience is that CS graduates on average are better programmers. That doesn't for instance exclude you from being a way better programmer than me.
|
|
|
|
|
Covered that in Mathematics for Computing, 1st semester of the first year of my CS degree, and to a lesser degree in the data structures module.
|
|
|
|
|
I place a high value on education, but I am currently interviewing for a developer position and have interviewed several in the past and so far I'd say a CS degree is only mildly better than nothing. From my perspective, a CS degree in the right hands (someone who has a passion for software, a desire to solve problems, a desire to learn the "right way", some basic ability, AND a sense of urgency about it) is a very good thing, but without those desires, the CS degree is just a line on a resume. I really don't care if they know what O(1) means if they desire to do things the "right way" and have a sense of urgency about it.
|
|
|
|
|
Alexander DiMauro wrote: what do you think are the most valuable things you learned in the CS degree that the rest of us are missing?
In theory you get the benefit of many years' real-world experience from the teachers -- but often that doesn't pan out.
A deeper appreciation for the history and underlying technology of computing.
A broader experience with languages.
A broader experience with databases.
A broader experience with algorithms.
A broader experience with data structures.
A broader experience with development paradigms.
On the other hand, some things (like Data Structures) are now built into the framework and today's kids don't need to learn how they work.
One of the things that I wish I had learned before my first programming job was how to build large software projects. Nowadays you just use Visual Studio and it takes care of everything for you, but my education and my first jobs were on OpenVMS. We (I) never learned how to compile and link a complex application with a build tool (MMS, make, etc.). Other than VS, I still don't know how -- I just use bat files.
|
|
|
|
|
Yes, I've tried to broaden my experience, but it's tough sometimes when work requires you to stay pretty focused. I can see the advantage of having had that experience earlier in your career. I think anyone can learn a lot by 'dabbling' in various languages.
|
|
|
|
|
Yes, and the more languages you have some experience with, the easier it is to learn a new one.
|
|
|
|
|
Good question. I think the most valuable thing is the depth/breadth of knowledge you gain in a relatively short period of time. While I do learn at work, I do not learn at nearly the rate I did in school. Here are some examples of things I would not have (or have done) had I not gone to college (some of these contrast with those who have other degrees, while others contrast with those who have no degree):
- Education in things other than CS, such as math.
- Knowledge of how to program LISP (knowing how it works is what is really useful... the language itself is weird IMO).
- Created my own compiler.
- Advanced knowledge of CS topics (e.g., big-O notation and implementation of common data structures and algorithms).
- Time to work on personal projects (over the summers).
- Discipline.
Not to mention I met my best friends at college.
|
|
|
|
|
That's a good list, although the math is not particular to just CS. In my Bioengineering classes I had to take the full 3-semester Calculus + Differential Equations + Linear Algebra + Biophysics/Biochemistry classes that are quite challenging mathematically. And, I also had CS 101 + 102 + Discrete math that I took as electives.
That being said...I've never created my own compiler! Sounds like fun. Maybe some day...
If I had the time, and the money, I would probably go back and get an MS in CS. But, it's just not possible, unfortunately.
|
|
|
|
|
I've taken about the same amount of math as you (perhaps less calculus), and that's enough that I don't even remember the difference between a couple of them (e.g., discrete vs linear algebra), much less how to actually use any of it.
And, like you, I want to go back to school to get a different degree. I sometimes feel my CS degree is too general and I want to go back to school for another specialty, such as architecture, some type of biology, some type of medicine, psychology, or physics/math (which would actually be in a more general but still interesting direction). Gotta pay off all that debt first though!
|
|
|
|
|