The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
Knowledge gets outdated...the syllabus should be updated with time...if people stopped getting degrees and doing research America would not be in this unique position it was in the world arena .Considering the way its going for profit only and screwing its own country men with job losses and student loans and debt... well its up to trump to make America great again and save the world from another disaster.
"Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long
I don't think the knowledge I gained in my degree course back in 1988 was fantastically useful however there'e the degree and there's going to university and the two are not always separate.
I would say that going to university can be useful - in my case my third year was spent working as a COBOL programmer so it was my first real job and I got a sense of what I didn't want to do.
I think if I had not gone to university I would not have gained to confidence to take on perhaps more demanding job roles.
On the specific topic of degrees - I think if one wants to become a developer it's probably better to spend the money educating yourself for three years as well as participating in online communities and writing and publishing software. I don't think degrees necessarily prepare people for the work environment.
“That which can be asserted without evidence, can be dismissed without evidence.”
Getting a degree is worth it for 2 reasons.
1. You learn to learn, that alone is a huge boon.
2. Stuff like how a linked list or a B+-tree works internally never gets old. Those theoretical concepts are still very much relevant today. You should either refrain from learning too-particular things (that was my prof's aporach) or distill the essense out of particular knowledge to apply it to other things running on the same principles. Example: While we can agree that a modern CPU is orders of magnitude more complex, than the venerable 8080, the basic concepts are still the same.
I personally am a fan of learning actually (at that time) useful things as learning theory without any grounding in reality isn't the way my brain works, but distill the essense to apply it to new fields. And let's be real, truly new fields are few far and between. The most progress computer science has been having for half a century is old wine in new (way fancier and bigger) bottles.
Getting a degree is worth it for 2 reasons.
1. You learn to learn, that alone is a huge boon.
2. Stuff like how a linked list or a B+-tree works internally never gets old.
Spot on! Lack of knowledge of how and why things work is a detriment in any field.
As others have mentioned, it matters which degree one gets. I work in private industry and government as a contractor and later FTE -- have an AAS in CS and BS in CS/Mathmetics. The "learning how to learn" and general background have benefited me throughout my career.
The things I did as recently as 10 years ago have no direct relevance to my current job. Everything changes, often too rapidly, so we keep on learning and building upon what we already know.
A PhD would have done nothing for me. I sort of regret not getting a MS, but focused on learning new technologies and getting relevant certifications. My career might have been different with a MS, but I can't say that it would be better -- just different.
Personally, certifications have done absolutely nothing in terms of making me better at anything -- BUT -- as others have mentioned, it's a checkbox. Ya got the right certs, ya get picked for interviews.
Please note that certifications made me REALLY good at successfully taking tests.
The classical way of learning a craft was to become an apprentice, after a few years passing a practical test to be entitled a Journeyman, and maybe some years later demonstrating that you can manage a complete work task where you have do demonstrate a large number of skills, to become a Master.
In modern Norwegian education, that is still the way to become a craftsman, but the practical training is now interspersed with classroom lessons where you learn not only what to do, but why to do it. Theory with a very practical orientation. And, knowing both what to do and why is a very good combination. Those who have done all of their learning in a classroom may know the "why"s better, but may be clueless about the "what".
Lately, the tradidional classroom teaching of computer science has, here in Norway, been supplemented with a program similar to the old crafts learning: You are hired at a software house as an apprentice, working with a skilled programmer, but spending a few hours every week taking classes at a local college to learn the necessary "why"s. After a few years, you may go through a public exam to become a "bachelor" - the old "journeyman" term is not used any more, but that's just another name for the same thing. This kind of education is so new that I am not sure if anyone has gone further to become a Master though practical work (supplemented by practical theory).
I am very much in favor of this educational system. We may need purely theoretical education as well, but as a supplement to that (and a major one!), I think it is very valuable.
your ? is a Degree worth it or should we use an Apprentice system.
My answer is YES.
Degrees can be worth it. But keep in mind someone with a two year degree at a cheap community college and then the following 2-3 years at a cheaper 4 year school will earn as much as a person with a degree from an expensive 4(5 probably) year school.
Also, a person with a 2 year degree who then goes and works in the industry for 3 years will be making as much if not more than the person with the 4 year degree right out of school. and probably be more productive at that time. In 3-6 months it(production) won't matter one whit.
I also know of a person who did a code camp and got a job and is doing fairly well for themselves.
But, there are foundational things that can only be learned by taking the time to study them. These are important people.
So Yes. We should depending upon the person. My three children. one I would recommend a code camp too. She would be a great programmer. The other I would only recommend a 4 year degree. She is awesome and would be a great business analyst in the long run. My youngest. a 2 year degree and get to work boy. HE would be an amazing DBA. Alas. They have their own ideas. But that is how they would work best. The best solution fits the person it is aimed at.
To err is human to really mess up you need a computer
I happen to be a self taught person, but I have had the good fortune to work for companies that have let me explore not only technology, but also business operations, from people who really understood what they were doing.
As I've gone through my career, I had started working for larger and larger companies and observed that the largest companies tend to employ very few people that understand how business and technology work, and especially how they work together.
I tend to believe that we have too many people getting into technology and/or business without the proper aptitude. People seem to think that just anyone can get into tech, but it's much more nuanced than that.
I think that CS education still has its place, but not like it used to. People still need to know theory because we still need to more computing technology forward. What is missing is an education track for business developers. CS graduates shouldn't want to make an application, they should want to make the next operating system to run it. They shouldn't want to make a web page or web application, they should be wanting to write the actual web server. There should be a business software track that focuses on line of business application development, since that's the majority of what businesses are looking for. People who understand the general technology and put it to use for business purposes.
Whether we like it or not, the majority of software that needs written is for accounting or business operations, not the "next big thing." It's our job as developers to make the business more efficient and to give value. It's like the difference between a doctor and a nurse, or an accounting and a bookkeeper. Both are needed, but in different quantities and for different things.
I have a MS, I graduated 4-5 years ago. The MS was pretty much useless almost nothing I learned there transferred in to the real world other than the extra experience I got writing programs for my professor and some web design that went with it. However a lot of the people who I took classes with did take a lot into their jobs but they were already working at a lab and being paid to get their MS. They were already doing research for work and just transferred that to be their thesis.
However doing my undergraduate work I feel was very useful, I learned how to learn to program in any language. They taught us Python C C++ and Java which gave us a pretty good base to start from but they focused on the design of programs instead of the languages themselves.
College is an institutionalized apprenticeship. The system was adopted because not every tradesman has an ability to pass skills to an apprentice, and if the apprentice has chosen a bad master, his life is doomed to failure. By institutionalizing the process, colleges gain reputations for how well their faculty pass skills to students, thus the apprentice can choose a college that has some proficiency in what he wishes to do. Sadly, other factors contribute to a good reputation where such may not be deserved: research by faculty (which in no way reflects teaching ability), size, and, of course, athletics.
I do tend to believe colleges also provide an overall perspective for students. A respect for other disciplines, perhaps especially the arts, are a necessary part of college life. This "renaissance" way of thinking creates a more respectful and tolerant individual who knows there is much more to life than coding twelve hours a day then going home and either coding for pleasure or playing video games for numbing one's mind.
It is perhaps odd that a man with a Bachelors in Mathematics, Computer Science and Physics, followed up with a Masters in Computer Science, would have such a high opinion of the arts; however, I have found that history is mostly cyclical, and that science moves us forward while creating other problems that must be further solved by more science. The arts provide us with a different perspective to occasionally break that cycle.
Do I believe in college? I proudly sent my sons off to college. Their choices differed from my choice at that age: they have different interests, so I didn't push my school on them as some parents do. Expensive? Oh, oh, yeah. Will it give them advantages when going to get jobs? Maybe, but probably not: they did not attend Ivy League or top ten universities. Do I believe it was worth it? Absolutely; I can see it every time they solve any situation of their lives. Given all of that, would I do it again? In a heartbeat!
Getting a degree usually serves at least one of the following:
1 - Satisfy HR folks who have no idea what qualifications are involved, and would not understand them if you tried to explain.
2 - Serves as an indicator (of questionable efficacy) of basic knowledge and sticking to a task to the end.
3 - Is a great way to gain knowledge and experience IFF the student actively seeks to gain knowledge and experience. Just getting by to get a degree is not a way to gain knowledge and (useful) experience.
4 - Offset initial cultural impressions. **
** With my Southern (US) upbringing and accent, the assumption in engineering is usually that I would not be smart enough, and any accomplishments I had in the past (such as graduating Naval Nuclear Power School, qualified to operate nuclear power plants) were either accidents or lies. So, I took the Mensa test and joined Mensa and Intertel, then finished my BS degree and got my MBA. Those little milestones, believe it or not, make a difference when offsetting the impression of my accent and upbringing. Go figure.
I think the degree is absolutely worth it. From my point of view, the specific information will rapidly become useless much as the carburetor knowledge, but the base knowledge what does it do, how does it function, how to troubleshoot it, how to dismantle it still remains relevant permanently. There are certain things you get from an education that you simply can't get anywhere else.
The largest problem I run into on the job is that many, many, people I work with simply cannot reason out how to fix a problem. I learned how to troubleshoot in school when I was about 10, learned to apply it to cars at 15, learned to apply it electronics in my 20's, learned to use it on tanks in the military in my mid 20's, and finally applied it to computers and software in my 30's. The steps are all the same just the thing you are working on is different. If everybody could learn that the world would be better. What I already knew was reinforced in my computer science courses. Many of the much younger students were just learning it. That is just one example.
I currently can program in about a dozen languages proficiently. I have forgotten how to program in at least 4 simply because I don't use them and would have to relearn them. I was only taught 2 languages in school, but because my education worked through the basics and taught me how to read them, I learned I just applied that to a new language and I could learn it in just a few days. Without that, I would have to struggle for much longer.
The reality is there are just basic fundamentals that you get in school that you can learn on the job but school, if you push it, can be done in 3 and a half or four years. If you try to learn everything on the job it will take at least twice that. I have known a lot of developers that are self taught that can program extremely well but if you have them say design a database, they botch it horribly because they never learned database principles. With all of that being said, if I had to take a programmer fresh out of school with a masters degree, roughly six years, or a self taught programmer with six years of experience, I would have to really think about it. There is a lot to be said for experience. If I had to take a new developer out of school or a developer who is going to coding boot camps and trying to teach himself, I would go with the new graduate. They come with basic fundamentals and can learn faster in my belief.
As for the debt, the boredom and all of the arguments against school. Stop already, that is just stupid. There was study done about 10 years ago, I wish I could find the link, but it should be locatable still, that compared the lifetime earnings of people without degrees, people with a bachelor's, masters and doctorates. People without a degree compared to people with a bachelors show that, regardless of field or occupation, the person with a bachelor's earned one million more dollars over a lifetime, on average, than people with no degree. So even if school costs 200,000 dollars that is still an overall earning of 800,000 more than a person without a degree. People need to stop making excuses about being lazy and get a degree. They need to choose carefully to make sure there are jobs and they can work, but still they need to go to school.
It depends on the direction the student wants to take. If she just wants to be a programmer, then some kind of schooling, maybe a two-year community college or vocational school with courses that teach the basics, the theory behind programming and databases, etc., followed by an apprentice system, makes the most sense. There's too much theory needed for an apprenticeship, but no school can teach what you really do on the job for that to suffice.
If she wants to teach or do research in computer science, then keep the BS, MS and PhD tracks. It seems to me that a PhD is overkill for just a programming job.
If you think 'goto' is evil, try writing an Assembly program without JMP.
I too have a BMath(CompSci) from the late 70's, and I disagree: what I learned then seems to be reinvented (slightly worse) about every 15-20 years thereafter. I got: a solid exposure to algorithms and how to find/make more; widely different programming tools (APL, Prolog, Pop2, C, ...); interface design aimed at function, consistency and an ability for the USER to automate --- rather than animations, complex menus, endless repetitive mouse-clicks, and making this year's super PC's too slow for next year's software, by design. I *really* value having had courses from people who were bona fide researchers.
I agree, American students are being exploited through impossible tuition, and declining instruction --- contract lecturers whose only job is to lecture and grade. But it wasn't like that, not long ago; and doesn't have to be.
Unless it has changed much in the last 10 years since when I went to uni. University Computer Science courses are Academic in nature.
4 week - 12 week code courses that appear to have sprung up in the last decade have a more focus to getting people business ready. Recently sat in on a talk from Code Nation which explained they have "Junior Software developers" not "students" and they have to complete time sheets as the likely hood a number of them will go into contract/agency work which will require that.
That so far is not to say University degrees offer something. For me, the basic ground work of maths, algorithms, hardware, history of the field, I think will allow for a greenfield development area versus coding as a job.
What I mean by this is look at Car Machanic:
Apprentice root: learn in 6 months how to be a car machanic, get a job at a car repairs place, diagnose issues you have not seen before and fix the issue.
University root: learn engineering, what a combustion engine is, other types of engines, how to build from scratch, metallurgy. Then get a job a one of the top 10 car companies design and building the next model.
The difference there - getting a "day job" (hopefully you like it as well) vs a
back to Computer Science/Software Development/Engineering:
India invested heavily on coders. Look at what companies have the most software developers, multiple Indian companies, more then Google/Facebook/Microsoft.
Similar issue with USA wanting to being factory work back state side. Lack of mid-level workers. To many over educated - degree required posting.
The job shortage in the west: I think more on the Coding side not development. These code schools will fill that market. But business needs to realise the University grads will not fill it, so asking for a degree is not helpful.
Ternary operators as if they were on sale, variables named as if each keystroke deduced money from paycheck, logic packed deeply inside the graphic, a handful of comments every thousand of lines of code.