> programming without having a solid understanding of CS background and how computers work it would make me just a code monkey, able just to do what I saw in tutorials and copy pasting SO answers without understanding them
Other people genuinely want to understand how things work, and getting a CS degree is not the only way to get there.
Yes, except ...
University courses are always going to have a mixture of people with different motives. One of those motives is going to be a desire to go into research, while another is going to be earning credentials to prove they have an understanding of their field before they embark upon their career. Then there are the people who take the courses with a pure desire to learn how things either in a structured environment or to learn along with like-minded people, without pursuing it as a career path. That runs the gamut from needing university credentials, to the credentials being nice to have, to not needing the credentials at all. Yet, in each case, the desire to learn is genuine.
Then there are the people who are cheating the system by treating the university as a credential mill, the means to an end, where the end has little to do with furthering their understanding. Some of them are upfront about this. I remember one of my high school peers saying they chose their discipline based upon how much money they would earn and how well they would perform. Some choose to deceive themselves about this, largely by griping about how poor instruction is or how irrelevant the course material is while putting little effort into the courses. Whichever way you look at it, these people are problematic when they step over the line by cheating. They go from being passive leeches on the system to actively destructive forces.
There are genuine advantages to learning in a university environment. For some it is structure. For some it is being able to work with their peers. For some, it is having access to professionals in their chosen field. All of these can contribute to understanding, if the learner chooses to do so. I have known very few professors who would turn away someone who was genuinely interested in learning. For the most part, they were more inclined to side with the students who would benefit from learning in a university environment, but were struggling to keep up with the demands of those who would not!
Is this really an issue? I eventually feel into that bucket. Went to university for EE since I figured I could teach myself CS easily, whereas learning EE without a lab would be harder. I quickly realized I hate a very large portion of EE (anything outside semiconductors) and for most of my courses I did the bare minimum to get an A with minimal understanding.
> They go from being passive leeches on the system to actively destructive forces.
I really don't see how that makes me a passive leech. I agree that cheating is actively harmful to the peers that don't cheat, but someone that doesn't engage is a net gain to the others in my book. By not attending any optional tutorials/office hours it gives other peers more focus time with the professor/TA.
The people I worked with typically wanted to see students succeed. It went well beyond the mechanics of delivering instruction and assessing work. They considered what they were doing and put time into modifying their practices when students did not appear to be engaged. For a handful of students, it would be successful. In the vast majority of students, it would flop since the disinterested ones were rarely receptive. Some cases may have been similar to yours, where it sounds like you were focusing on other subjects. Some students appeared to be, ahem, more interested in the non-academic merits of university life. It is difficult to tell what the breakdown is since those students were always the most distant. But either way those passive students were a drain. They simply weren't as much of a drain as the cheaters.
Teachers need to design their programs around actual learning principles like: Deep Processing, Chunking, Building Associations, Dual Coding, Deliberate Practice.
Genuine interest is a requirement, a degree isn't. Anyone wanting to measure knowledge is even more fucked than we assume.
It's not the only way, but it is certainly a good way (at least for some).
In my case, I didn't really know what I didn't know. Before studying CS, I had this vague idea of programming as an activity I liked, but it never really "clicked" in the larger sense, as it was woven with magic that I didn't understand at the time. We make programs using Code::Blocks? Well, who made Code::Blocks, and how did they make Code::Blocks without using Code::Blocks?
After studying CS, it just felt like all those mysteries disappeared. Everything made sense, connected into a coherent whole by various mathematical links.
Of course, there's still a lot of things I don't know, and even more that I don't know I don't know. Every now and then, I run into a new concept that teaches me things that I've kinda wondered about, but couldn't put properly into words. Reading about such topics, and seeing the journey unravel, that another person took in order to discover what I'm getting on a silver platter, is one of the most rewarding things in the world.
Even in medicine, the first triage will probably be done by a nurse, then a doctor, finally a specialist.
You don't need a CS PhD for most of the work done with computers and it would be unrealistic and uneconomical to require such a high standard everywhere.
People make a good living customizing WordPress sites and the buyers get good value from it.
Then why require long time in school and residency for doctors? A boot camp should be enough.
>You don't need a CS PhD for most of the work done with computers and it would be unrealistic and uneconomical to require such a high standard everywhere.
No, you don't need any degree to use Excel or MS Word or modifying WordPress themes. But you should need a batchelor degree if if you want to be a high level specialist, programmer or architect.
>People make a good living customizing WordPress sites and the buyers get good value from it.
Likewise, you need a proper education to be a civil engineer or an architect. You do not need a degree to lay bricks or pour concrete.
I am asking for degrees for the higher levels of IT field, not for the people who modify WordPress themes, whom I am sure do a great job and are highly needed but are not exactly exponents of high level work in this field.
I'd like to ask, how are any of these specialties technically related to a bachelors degree?
One does not learn how to be a successful software architect in a semester or two of university. Neither does a bachelors degree make you anything more than a beginner in any specialized topic. While the definition of what's a "good" programmer is up for discussion, universities definitely do not produce them in any dependable capacity.
From my personal experience, at this point in time, major part of the students that complete a bachelors degree are in it just because programming is viewed as a well paying job and are about as worthless as a person that completed a 6 month bootcamp. The only difference being that the person with bootcamp experience might actually end up with an exact match of knowledge an employer wants, which hasn't had time to slowly evaporate over 4 years of "study".
Lastly to bring up another one of your points, I'd argue that learning from YouTube videos is not the same as going to a bootcamp. I do not view either highly, but I'd say that learning on your own deserves some level of commendation as it's the most crucial skill in a field that's constantly shifting and changing.
"We train you for the last job you'll ever have, not the first."
The intent of a well-rounded bachelor's education isn't to be able to walk through the JavaScript library du jour from memory, but to have at least a base level of understanding how everything adjacent to the thing you're doing works.
That's a bit funny for Computer Science since, even though I don't have numbers, I expect the average graduate now to work until they're 65+, and the vast majority will probably be out of the field of direct software development by the time they're 45 (burnout, people management, program management, project management, executive suite, etc).
That's entirely true. But if you din waste your time in school, you know fundamentals, you have the necessary background to proceed further and become good or excellent.
> that learning on your own deserves some level of commendation as it's the most crucial skill in a field that's constantly shifting and changing
I agree. You have to continously learn. But having a solid grasp of the fundamentals and understanding how things work will just help you on your path of future learning.
In University you still learn by yourself, but under supervision.
Nurses don't go though the same system, what they go through is closer to a bootcamp.
> No, you don't need any degree to use Excel or MS Word
Yes you do, because if all I want is someone who can write Word documents, I don't need that person to understand computer architectures, see:
https://www.reed.co.uk/career-advice/what-is-ecdl/
> I am asking for degrees for the higher levels of IT field, not for the people who modify WordPress themes, whom I am sure do a great job and are highly needed but are not exactly exponents of high level work in this field.
The IT field is multi dimensional, a person who is building a 3D engine is not the same person who is going to set up the backend system for your bank or write your kernel drivers. If put everything in one hat you are either going to teach too much or not enough in the field that the student will end up pursuing.
Why do you believe the education sector would be a worse place if we would have 3D engineering, backend engineering, mobile engineering and Wordpress theme development as separate fields? I would enjoy it when hiring people if there would be more specific credentials to the role I want to hire for.
3D engineering and backend engineering are very different, but backend engineering is generally easier than 3D engineering. Meanwhile, mobile engineering and backend engineering are far closer related. If one argues mobile engineering and backend engineering are different enough to warrant separate majors, you might as well argue "console/pc game development" and "mobile game development" do the same. You end up with so many ways to split hairs you're really just appeasing hiring managers being lazy.
To put into perspective the absolute insanity, if it were up to hiring managers, we'd have a university trajectory "Bachelor Java backend developer", "Bachelor .NET backend developer", "Master of Microservices", etc. which are obsolete within 2 years and catching up is left entirely to the individual. The field changes way too rapidly while also denying the similarities between different aspects and the ability to learn most things as long as someone can function as a specialist (and most places have a specialist already). Current courses may be too generalist, but at the very least they acknowledge almost every field in CS is effectively still data creation, modification and storage, while strategizing around physical limitations.
I do believe that we could create specializations that are not too specific yet useful, the main goal is to get rid of subjects that the student likely never encounter, I mean, we can start teaching history in Computer Science because maybe you'll program the next Age of Empires, yet we agree that the likelihood of that is so small, we can round it down to 0, my issue is that we don't check this for all the current subjects so that we don't waste people's time teaching them stuff they will never use.
> To put into perspective the absolute insanity, if it were up to hiring managers, we'd have a university trajectory "Bachelor Java backend developer", "Bachelor .NET backend developer", "Master of Microservices", etc.
You don't need "Bachelor .NET backend developer", you just need "Backend Developer", someone who has a good knowledge of one stack can easily migrate to another in the same field.
> which are obsolete within 2 years and catching up is left entirely to the individual
- MVC was invented in the 70s, still useful, it's been over 50 years and counting
- SQL also appeared around the 70s
- OOP appeared in the 50s, that's over 70 years and counting
If you know MVC, you can do MVVM.
If you can handle MySQL it's doubtful that you will have trouble with MongoDB.
I'm not implying that there were no changes and you don't need to keep yourself up to date, I'm saying that there are technologies and concepts that have longevity.
I think that for a Batchelor degree, things are good as they are. Students are better learning CS fundamentals.
Learning the framework or the language du jour, is easy to do by yourself. Frameworks, libraries, tools, languages come and go. Fundamental concepts will stay.
I did a master in Web Development, so there is some specialization. Others did masters in Data Mining, Machine Learning, Database Technology, Bioinformatics.
I plan to do a PhD related to using ML in Web applications, so there can be even more specialization.
There are plenty of credentials out there. You just mostly don't get them from universities because universities are not in general in the business of granting trade credentials.
alternatively, I have seen people with long CS degrees but who cant code for their life. degrees are just papers.
Someone else answered the question: Nurses do not require a long time. In some (mnany?) states you can become a nurse with a 2 year associate's degree, and career outcome/pay is correlated with experience, not the degree.
And nurses aren't even at the end of the spectrum. You have LPNs, etc.
But the reason I commented: This notion that it takes so many years of school + residency is mostly a US/Canada thing. In many/most countries, you go to medical school right after high school - it is typically a 5 year program.
For very basic rote queries most pharmacy assistants (who are really just retail staff) will be able to guide you in the right direction too.
> I studied because I wanted to genuinely understand how things work
I don’t think you do.
Genuine curiosity forged in one’s own mind. It is not something that can be bounded, repackaged as a curriculum, and sold in university. It’s like ether, it’s everywhere and can be captured by anyone, through multiple means.
University degrees for any professions are useless. Even in medicine! There are shit doctors and good doctors. Most people here would’ve run through a couple of them before picking one. I’ve been with my current doctor for 10 years now, because they are really good, empathic, and teach me rather than just pushing pills.
Software in my humble opinion works the same way. I care more about what someone does with the tools they have, rather than them being made of wood or metal or gold
I think there is a fundamental distinction between the professions of medicine and law, in that they have licensing boards that are a means of ensuring a standardized minimum amount of competency. Computer science does not.
Despite the fact that many call themselves "software engineers", they are not engineers in the legal sense of the word in US, unless they also have an engineering license. The point of these licenses is, in part, to protect society in professions where they are expected to ethically serve in the public good. One of the problems with CS degrees in the past is that there is no standardized curriculum, so one CS student may have had zero semesters of calculus and another required to take 4. The standardization is what helps pull structure from the ether. That structure is compromised when people cheat.
You might want to read the transcript of this This American Life episode:
https://www.thisamericanlife.org/719/trust-me-im-a-doctor
The summary: Licensing boards do a really poor job in maintaining quality. You can do extremely bad things as a doctor and still keep your license.
The boards are to provide society comfort, but they enforce as you, said the minimum. Something just cannot be measured. This is very true in medicine as it contains a human aspect, as well as ethics aspect (I make more money if I see more people and give each less time).
When I was a teenager, I was losing hair due to Alopecia. My doctor at the time, who barely made sense (both of us were ESL) decided to put me on a course of prescription Iron pills. I was pooping black haha. Only later, I was told that I shouldn’t be taking it and that it was prescribed to me by accident by her because she had the file of another patient. Their last name was my first name, and they were pregnant female, I am a male.
The same doctor injected my mom with some drug and as she did, she said “oh shit” and “OMG” and decided not to tell my mom what it was. She tossed the bottle in hazardous waste box so my mom could not find out what it was. My dad was furious and made a scene as he and my mom naturally got worried. We went to this board and they said they did nothing wrong, and my parents were making a scene, and that we should find another doctor. So much for protecting my best interests and holding a bar.
These boards are mafia; another high profile thread about this is in HN right now. The boards are there to provide a facade of credibility.
> The point of these licenses is, in part, to protect society in professions where they are expected to ethically serve in the public good.
I don’t want to be called an engineer and opted out of license because I think most of engineers are doing the exact opposite. Working at companies that knowingly continue operating when we know it’s causing depression? Collecting data for users without them knowing?
Regarding equality of curriculum and standardization, I hear you. None of this is stuff we can ONLY get in school. I think the interview questions we all conduct at our jobs, or give when applying are doing just that. Checking minimum competency; tangentially I much prefer take home tests or something of that nature.
After this, I tend to think learning should be like gardening. Not all gardens are the same and they have different needs. You may need to learn more calculus if you are in robotics, but not if you are working on something really far from that. Another example, you might really need to learn about algorithms and databases if your job/interests require it.
I think I agree with your gardening analogy. It seems to me that the issue is often rooted in the hiring process. If a company was able to adequately assess the skills, they wouldn't need to rely on credentials, period. I think credentials become a lazy shortcut in many ways. Sometimes I think this is borne from the fact that many hiring decisions are made by people who are too far removed from the work being hired for, and thus need some pragmatic shortcut. It's easier for HR to say "you don't have the right degree" than for them to read and understand your resume to conclude "you don't have the right skills". The first is binary, the latter requires a lot of nuance.
I started the process at one point in mechanical engineering (engineer in training exam) but moved on to a different type of job so there was never a reason to get the certification.
I'm not a big fan of credentials, but I understand when credentials become a proxy for something valuable. In some cases, the value of a PE is accountability and the legal authority for a PE to push back when they are being asked to do something unethical/unprofessional. I think one of the central issues of this thread is that the credential of a college degree has become so watered down that it has lost a lot of value.
I doubt it, but I downvoted you for saying that. No comment anywhere has ever been improved by adding "I know I will get downvoted for saying this, but". Please don't do it.
There are very _few_ reasons why you should downvote a comment. I found parent's comment great, so I upvoted it to counter your unfair downvote.
The "I know I'm going to get downvoted for this, but ..." thing is annoyingly common, and unfortunately it's common for a reason: a lot of the time it works: it lets you frame yourself as a victim without ever needing to be victimized.
And, strictly as a matter of fact, it's almost always false. I just did a search for HN comments saying "I know I|this will get|be downvoted" and checked out the first ten I found. Only one of them was net downvoted (which that particular one richly deserved), even though several of them claimed not just to know they would be downvoted but to know that they would be downvoted "into oblivion" or some such phrasing.
So, why do I care? Because (1) these things just add noise and (2) I think that on net they get unfairly upvoted; I want to discourage #1 and compensate for #2. (Also, most of the time comments that say "I know I'll get downvoted..." are in fact bad ones, but that isn't the point here. In this case, the comment itself was pretty reasonable. It just would have been better without the look-how-brave-I-am posturing.)
Every comment that has that line can be improved by leaving it out.
People say "you'll probably disagree" as a defense mechanism. They preemptively expect a rejection, and make it known, in order to make it hurt less. Works in a similar way as self-deprecating humor. "You can't hurt me, if i hurt myself first." "You can't reject me, if I reject myself/you first."
I myself, got triggered by this thread and it's display of emotionally immaturity, because I have some of it myself, and I dislike it with a passion.
I've noted that HN is a forum full of emotionally immature people that are usually polite in the way they show it. This little thread is a perfect example of it. Very off putting, still the threads are sometimes interesting, if we can accept this fact and try to look at the discussion itself.
I think you're projecting something here. I'm not triggered by his insecurity and don't see it in myself. I just think begging for votes doesn't belong here, and begging for votes through reverse-psychology doesn't either. Let the content of your comment stand on its own merits.
That led to my grades ending up exactly average, but also at one point I challenged myself and got the highest marks in the most difficult course in my degree. Everyone, specially those who were normally top of the class, were like "WTF did you do??" lol
We can argue this about any other field.
>For example you’re likely not getting a job straight after college without facing the company’s interview process.
We should have a bare minimum standard, not a maximum.
But colleges and universities should be good enough that graduating one means you are in a proper position and have proper knowledge and abilities to start a career. Since that is not always the case, companies do still organize their own processes.
By not graduating some recognized form of higher education in the field, you don't prove to your future employers that you might be good at what they need. You just prove that you weren't willing to do the work for a few years and that you might not have the knowledge. Some won't care as their work is simple enough and they might train you on the job, some will test you harder and some will not get you past screenings.
Another option is that the candidate has relevant work experience instead of a university degree. This is the case for a lot of candidates I’ve seen. There are a lot of factors that make Software easier to get into. For example, in physics you need to have foundational knowledge that was created 100+ years ago. Whereas software frameworks go out of fashion every 10 years or so. Of course there are many important CS foundations and design patterns, but I believe those can be absorbed by working along other experienced engineers
Incompetent doctor? People die. Incompetent chemist? People die, or at least there's substantial material damage.
When it comes to mathematicians and physicists they only ever have any real impact when they roll up their sleeves, open matlab or R and turn their theoretical work into something practical. Does that make them programmers? Probably I guess.
Anyway as for us programmers there are very few jobs where a poorly written program will cause anyone any harm especially since it can be reviewed, tested, and corrected before being used for real, unlike a doctor who must use their skills on the fly and get it right first time, every time. So the bar for entry is obviously much lower and lowering standards doesn't do much to increase harm.
Many, many doctors are completely incompetent, as in, they don't know anything. Yet not all of their patients die.
I have been a "standardized patient" at medical schools; students at the end of their education (after 6-8 years of learning) still don't know shit. And most pass. Maybe they learn on the job... but I doubt it.
I talked to one of their IT people who told me what a good place it was to work. And had multiple nurses say the same, one going on a 5 minute rant about what a good place it was to work. So that could be a significant factor.
Yeah, it's an exaggeration. They certainly know some things, and some of them know a lot of things. But, they all had big holes in their knowledge (huge, gaping holes) and
1/ They weren't aware of it
2/ They were trained to hide them and appear to know everything about everything, because they're the experts. That's the scary part IMHO.
You've got to realize that we can't really train healthcare workers to admit failure. Culturally, it's not admitted in any society I ever lived in. People get really angry really fast if you don't hide the gaps, as they feel you're subpar and they're being swindled.
> They weren't aware of it
I recently taught an undergrad course, and I must admit I was baffled by the lack of knowledge of the students, and also how little effort they put into their studies. Doctors who don't read books. That's _much_ more worrying, IMO. Grade inflation, and all that...
That's as true for any scientific or engineer field, for architects, pianists, lawyers, painters end economists as is for people designing and writing software.
And yet, all those occupations are generally practiced by people with a degree, who did a lot of study and practice. No watching YouTube videos, no 3 week boot camp will lend you a job as a physicist, concert piano player, economist or architect.
Is not that we don't have a high bar in this field, is that we don't have any bar at all. A programmer is a person who calls himself a programmer. Even car mechanics and construction workers are held at much higher standards than this.
This is not universally true. Many of the best blue collar wokers I've worked with had no formal training or certification, some have. A few trained and certified blue collar workers I've known have been mediocore at best.
The alumni of certifications, official training, and schools are only as good as the integrity of the institution and of the alum.
Car mechanics went through the same shift where learning how to fix cars was an on the job thing and many still don’t have a relevant degree. Construction work is an old profession, but still mostly an on the job thing outside of heavy equipment.
Put in this way, the more software there is, the better programmers we want. But the cost itself is typically externalized over the consumer base and amortized over the lifecycle of these products. Further, the perception of software developers being a cost centre first and foremost is sustained. You surpass these problems by being skilled.
Yet real doctors actually believe the bullshit they get from medical reps when it comes to prescribing actual drugs that goes in patients bodies. I will let you ponder how successful that strategy is.
The truth is, is that programming languages themselves have evolved far enough that knowing exactly what's running underneath the hood isn't needed anymore, outside of niche specialist cases. Most people don't even need to worry about seeing a single 'index out of range' issue, or worry about CPU cycles. And it's only going to become easier and easier.
I'd compare it to bricklaying. Yes, you need to use the correct formula for the cement you use, but figuring out that formula has already happened. For niche cases that require special cement, you go to the cement specialists that know the ins and outs of it.
Specialists in, for example, psychiatry don't need to understand how mitosis works, etc...
The same is also true in finance. People who do model equity index volatility don't remember at all how to derive the equation for put-call parity.
In each of these fields there are people who study each of the fundamentals, and then there are people who do more routine "code monkey" work in a narrow area - think chiropractor or vanilla stock trade execution.
Programming is not unique.
A psychiatrist has to obtain an MD degree before they can start to study their chosen specialty. There's a reason for that: before you can treat a psychiatric illness, you have to be able to eliminate all other possible causes for the condition. I for one would not want to be treated by a psychiatrist that couldn't distinguish bipolar disorder from brain cancer.
I'm not sure that this example is making the point you wanted to make. There's a reason we have Docotors/Pharmacists/Physios and don't reply on Chiropractory / Homeopathy. It's because we want to get better.
I got serious doubts about this. It seems we are constantly changing the cement formula.
> but *figuring out that formula* has already happened.
Me
> It seems we are *constantly changing* the cement formula.
You
> doesn't change anything
Really?
OP makes the classic error to assume that A) physical engineering isn't changing; B) computer world is analogous to physical.
When issues do arise during the project, an expert is brought in/consulted. Standard cement formula's might change over time, for varied reasons, but it's not the bricklayers that keep themselves busy with that.
The same hold true for most IT projects.
Definitely not my experience. Even if you say choose Spring Boot the architecture and somewhat lower level constantly change.
The issue is that modifying a Wordpress theme is just as much of a job as optimizing a low level 3D rendering pipeline or writing facial recognition software. One of these is not like the others and the issue is that universities fail to realise this and just try to teach everything.
In my mind we would need to abolish the idea of a general programmer and move towards specialization.
It doesn't, a good programmer is self evident to good peers.
And schooling isn't the only way to get there. I know plenty of academically educated CS grads that aren't a great programmer not because they didn't do well in school (I have no way of knowing but I assume they did well), but because they lacked curiosity and interest into programming.
While there are times where a piece of code failure or poorly worded instructions can cause injury to others, those are exceptions to the rule. Generally speaking- the cost of failure for writing and software is lower than it is medicine, and it makes sense not to gatekeep these industries behind theory, and rather just let results speak for themselves.
I studied because I wanted to genuinely understand how things work and how I can solve problems and how, beginning with one ideea I can extend it or come up with an entirely different idea.
And I know I will get downvoted for saying this, but for me, programming without having a solid understanding of CS background and how computers work it would make me just a code monkey, able just to do what I saw in tutorials and copy pasting SO answers without understanding them. Which can be fine, lower level work is ok and highly needed. But wouldn't make me as good as someone who knows his stuff from a to z.
I hate it when I hear someone considering himself a programmer after he modified a WordPress theme or did a 3 weeks boot camp.
Why should this field be hold to much lower standards than medicine, physics, math, chemistry?
I never heard someone bragging that he is a doctor after watching YouTube videos, which happens often with writing and architecting software.