Live data from Hacker News

A CS degree is better than teaching yourself how to code?

zeroequalsfalse.com

301–310 of 330 posts

Re: A CS degree is better than teaching yourself how to code?

#301
post #222

I work with a team of people who mostly have "Software Engineering" degrees. I am one of the few with CS. In short: IN GENERAL - Those with SE degrees (or other non-CS degree, or no degree) can be excellent developers (good code style, good unit test coverage, aggressive PR reviewers, etc). However, the art of computer programming - or computer system design -- is often in formally defining the problem at hand using…

I would make the observation that mere "dozens-to-hundreds of hours agonizing" over theoretical topics leaves one very far from qualified to design critical complex systems. At best, it gives one a shallow understanding of the domain but no expertise in the theoretical design of operational systems. Every CS grad knows how to design a database engine -- a very poor and naive database engine that has little resemblanc…

I positively agree with you. You are not going to walk out of a course or two in automata theory and group theory building critical complex systems. But that coursework does provide a lot of exposure toward the "primitives" in which these complex formal systems are defined. They are the first step of many steps.

I am reminded of PGs famous example of the "Blub"[0] programming language .Here's the relevant quote:

> As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.

In the above, the "Weird Language" can also be a formal modeling of the problem domain and solution.

(Note: He should not be presuming the developer is "he")

[0] http://www.paulgraham.com/avg.html

Re: A CS degree is better than teaching yourself how to code?

#302
post #162

Earlier quoted context omitted.

The purpose of a university is research. They teach undergraduate courses so they can get more researchers to further academia. The university isn't interested in anything else. If your goal is to maximize your earning potential, there's far more effective ways of spending 3-4 years.

If the goal of a university was research it wouldn’t have any undergraduate students and it probably wouldn’t teach Master’s students either. Some external organization would educate future researchers and then they’d hire them. So you’d either have a graduate studies only university, like the European University Institute in Florence or Rockefeller University or a research institute like the Max Planck Gesellschaft,…

> If the goal of a university was research it wouldn’t have any undergraduate students and it probably wouldn’t teach Master’s students either. Some external organization would educate future researchers and then they’d hire them.

What makes you think that the best way of training future researchers isn't having the current researchers train them? This is the model currently used across most universities I think. As part of my degree, I was taught entirely by people who are active researchers in their fields.

> For the huge majority of university students that means they’re at university because they need a degree to get a job.

Yes, and I'd argue this is a negative trait. People should be going to university because they want to learn a thing, not because it's a necessary hoop to jump through to work in a field (unless that field is academia). Fields that require specialist education (law/medicine/etc) already have specialist institutions that do this vocational training.

> The median college graduate might be capable of doing a Master’s degree but there is no way more than 10% of those who matriculates as university students are capable of becoming researchers if that.

But how does the university find that 10%? You presumably can't select effectively, so what better way than to run a 3-4 year program for those who are interested to see if they remain interested enough and are good enough to become a researcher. It doesn't have to have a high conversion rate to be effective.

Re: A CS degree is better than teaching yourself how to code?

#303
post #222

I work with a team of people who mostly have "Software Engineering" degrees. I am one of the few with CS. In short: IN GENERAL - Those with SE degrees (or other non-CS degree, or no degree) can be excellent developers (good code style, good unit test coverage, aggressive PR reviewers, etc). However, the art of computer programming - or computer system design -- is often in formally defining the problem at hand using…

I agree with you in theory, but here's your problem. You assume people without degrees in Computer Science cannot learn those concepts and those with them automatically understand them. A lot of CS people I've met pass a 15 week course in Finite Automata and could not explain one thing they've learned from it. I can go buy a book on Amazon and watch YouTube videos and become more of an expert on it than they ever wil…

No, that isn't my assumption. I don't think anyone believes that there's some institution or degree program that spoon feeds everyone everything they should know and guarantees a high level of performance. Obviously, the scope of my consideration are people with a high degree of initiative, creativity, and experience. A CS degree in and of itself is neither necessary nor sufficient.

Re: A CS degree is better than teaching yourself how to code?

#304
post #222

I work with a team of people who mostly have "Software Engineering" degrees. I am one of the few with CS. In short: IN GENERAL - Those with SE degrees (or other non-CS degree, or no degree) can be excellent developers (good code style, good unit test coverage, aggressive PR reviewers, etc). However, the art of computer programming - or computer system design -- is often in formally defining the problem at hand using…

I'd say that there's something to what you are saying. But the flip side is that where there isn't a well studied problem lurking underneath, and the CRUD app is just a CRUD app, formally educated computer scientists are more likely to find a mirage of one and end up way overcomplicating the solution. While a good manager should be slotting the right people into the right projects, an important meta-skill for all pro…

I hear you, but I've also been around the block enough times in my career to see the awful consequences of designing some feature, breaking it into a few Agile "stories", coding it up, then unlocking an enormous reservoir of down stream complexity that only becomes apparent later... And no degree of making new stories or bugs can put a lid on it because there's no model underneath it -- its just an increasing amount of ad hoc code (however well-programmed: unit tested, peer reviewed, CI/CD-ed).

In almost all these cases, developing a simple model grounded in some kind of common CS formalism, playing with the idea, and then explicitly constructing the system around that model would have made the application much more understandable, with a lot fewer mysteries, and reliably used by the customer in much less time. Even small systems containing simple logic, with a few input and outputs, can yield extremely complex emergent behavior (Game of Life being first obvious example).

Re: A CS degree is better than teaching yourself how to code?

#305
post #184
post #162

Earlier quoted context omitted.

The purpose of a university is research. They teach undergraduate courses so they can get more researchers to further academia. The university isn't interested in anything else. If your goal is to maximize your earning potential, there's far more effective ways of spending 3-4 years.

> The purpose of a university is research. They teach undergraduate courses so they can get more researchers to further academia. The university isn't interested in anything else. Sorry, but this assertion is so incredibly wrong. At Warwick, where I did my undergraduate degree, 95% of students in my CS cohort were in a professional job 6 months after finishing the course - they're not staying around to do research! T…

> Sorry, but this assertion is so incredibly wrong. At Warwick, where I did my undergraduate degree, 95% of students in my CS cohort were in a professional job 6 months after finishing the course - they're not staying around to do research! The courses are marketed based on earnings potential after graduation. Research grant income is dwarfed by tuition fee income. That's just how it is.

This is in no way contradictory to my original assertion. Of course universities recognize that they're going to lose people after their undergraduate course is finished. But more good quality people applying means more good quality people on the course, which ultimately means better researches. Obviously they'll market based post-degree earning potential, because that attracts better people.

Given a choice between an undergrad leaving for the real world and staying to do a postgrad, they'd always prefer the latter. Warwick would love that 95% figure to be 90%, or lower. An undergrad course where 100% of people left academia after they had completed it would not survive long.

> It's just laughable to suggest that universities aren't interested in teaching.

I worded this badly, but this is not what I suggested. Teaching is a core part of research, because teaching is how you get better researchers. My point is that universities are not interested in furnishing software companies with better quality developers.

Re: A CS degree is better than teaching yourself how to code?

#306
The path of my career took a rather unorthodox route, so I can see both sides of the argument here. I’m a graphic design dropout (completed two different tech schools and took art, fashion marketing, business and philosophy courses at a local community college, before going to a proper university at 21, completed a year, moved home when my father got cancer and started freelancing) who never intended to become a developer, but a developer I am (have built and managed a large-ish team of other developers and designers [~60 or so globally] and have done fairly well for myself). I can see the value of a university education, but can also see the validity of those who go a different route (whether by choice or circumstance).

What I thoroughly enjoyed about college was the depth of study with dedicated time to go into foundational principles, and meeting and working with people far more talented than I am. But would I pay for that privilege if I had to foot the bill? Probably not, or I’d choose much more frugally.

I get the feeling from a lot of the “school is unnecessary” arguments here is that to some degree we fashion ourselves as Good Will Hunting’s who can make it just fine. And there probably are actually quite a few here.

There’s a quote I love, “Money makes happy people happier and unhappy people unhappier”. I feel like the same could be said about a college education. A passionate learner will find it rewarding in ways that the average student wouldn’t, or even a bored student may squander but feel entitled to a position in life because they got a degree, but I think a passionate and humble learner will probably end up doing well no matter the route they take.

For me, the reason I even got into developing was because, ultimately, it's the act of creation and building that I enjoy, and both design and software engineering allow me to accomplish that in a way I find rewarding.

I've known folks who graduated with either a BA in graphic design or a BS in computer science, and with some of them, my self learning, both on a fundamental principle learning level and on an execution level surpasses them. But of course, I know many who are passionate about their field and just blow me out of the water. And I've known autodidacts that also blow me out of the water creatively and on a skill level. So I believe ultimately, the final mix is really a result of raw talent, hard work, and a passion for what you're learning.

I also think some of the "you must get a degree" arguments miss the value of just pure, raw dogged persistence. I've had people with masters degrees in CS tell me I'm a genius simply because I banged my head against a problem until it cracked (the problem, and my head to some degree ;). I don't say that egotistically, because I know that had I had a more formal and dedicated education, those problems would have probably resulted in less time with me banging my head against them, and the scope of problems I could apply that persistence to would be greater. But if you choose to go for a shorter route, you will have to work harder in the end, both to compensate in the eyes of those hiring, and doing your own study and learning to actually get to the level you want, and even then, being self taught really only gets you so far.

Ultimately, it really comes down to, what do you want out of this life?

I honestly can't see myself being content with only doing software engineering or design. That's both a strength and a definite weakness that I am constantly battling with.

There are some other soft aspects not really mentioned in this article or the comments that I do feel you miss when you're self taught.

One for sure is that not having a degree feeds into Imposter Syndrome. You can honestly far exceed others with dedicated degrees but no passion, yet some part of you and your experience will eat away at those accomplishments (of course, this could be purely personal, but anecdotally, I've heard it from other self-starters).

Another is that there is a danger, until you get amongst people who knock your socks off, that you'll feed into your own Dunning-Kruger effect. It's incredibly easy to absorb knowledge on your own and assume you're God's gift to insert skill here until you are surrounded by people who excel in ways that you don't and struggle in ways that you don't. But the autodidact is very often surrounded by people who aren't in their chosen field and so it's very easy to seem far more competent. I would say that this definitely is addressed by learning on the job, provided you luck out and learn on the job from truly brilliant people.

These things are definitely not solved by having a degree (I think the internet and open source have really been a boon to many in addressing the second downside as well).

The other soft skills mentioned in the article are just flat out not true inherently. I've known people with varying levels of degrees who are atrocious communicators and their spelling and writing skills are ridiculously bad, and had them literally use the fact that they have a degree as a proof that they're a-ok in those regards. Being able to communicate clearly, being able to communicate expectations and meet deadlines and promises (or summing it up, clarity of communication and integrity) are things that most colleges definitely don't require in order to pass.

Like the other comments here, this is all purely anecdotal and going off of my own experience, so if I could sum it up in a way of how would I advise a family member to go forward, in general terms? I'd tell them to get the degree, hands down, if that's an option for them.

But there are so many other factors that for them specifically, I may recommend skipping the degree altogether and get to work on building something they love.

I honestly think there is value in either course that you don't get with the other.

Re: A CS degree is better than teaching yourself how to code?

#307
post #171

Earlier quoted context omitted.

> Devil's advocate: did you ask them to solve graph traversals or complex string algorithms rather than fizzbuzz ? Getting someone to regurgitate something they've been explicitly taught and memorized instead of trying to solve a problem they haven't been (does any CS course explicitly teach fizzbuzz) does not seem like good job selection criteria. > I recently had a technical test, which I failed because I was depre…

Getting someone to regurgitate something they've been explicitly taught and memorized instead of trying to solve a problem they haven't been (does any CS course explicitly teach fizzbuzz) does not seem like good job selection criteria. And how is that different than getting someone to regurgitate problems thet learned by studying leetCode? If you can’t code fizzbuzz even after being told about the mod operator, how c…

> And how is that different than getting someone to regurgitate problems thet learned by studying leetCode?

It isn't. Which is why the trick is to find a problem that the person hasn't heard of and ask them that.

> If you can’t code fizzbuzz even after being told about the mod operator, how can you be expected to solve harder business problems once given the requirements?

I'm frankly bored of interviewing CS graduates who can give me a perfect definition of modulus but can't do fizzbuzz.

Re: A CS degree is better than teaching yourself how to code?

#308

Earlier quoted context omitted.

Totally agree with your last statement. I've fired more CS degree programmers than self learners.

yeah, I was going to pound this home a bit more, but was seeing some other people already did. Coming back to this, one of the defenses I've had from CS people who couldn't do day to day development all that well is "well... that's not what CS is for - it's really for diving deep in to the theories behind problems... " - or some other relative claptrap. On its own - yeah, there's a class of problems that are served w…

Agreed. The main point is that a CS degree is not a proxy for success in all things that require code. I like to keep in mind that a BS in CS only demonstrates the ability to study, memorize and be quized on your memory. Using a set of axioms to build something unique is totally different.

Re: A CS degree is better than teaching yourself how to code?

#309

Teaching yourself to code while getting a CS degree is best IMO. Just teaching yourself you'll likely miss lots of topics and not challenge yourself as much. Conversely I've met plenty of students that don't really care about the topic and are just taking the class to get a job. So do both! Take the class and teach yourself. In other words pursue your hobbies and use code where those hobbies match. Learn the things y…

Indeed, or teach yourself to code while getting a degree in virtually anything interesting. If you've committed yourself to attending college and getting a 4 year degree for reasons good or bad, why does it have to be CS? How about physics, or math, or poetry? Use the 4 years to get "domain knowledge" or even just to develop a rewarding hobby that gets you through the days when programming seems like the pits. I lear…

Thank you for articulating this in ways in which I cannot.

A lot of people (though not everyone) have the opportunity to go to university (typically only once in their lifetime), to learn more about the mysteries of the universe, or about complex humanities, or about our history, art and anthropology, all of it from the leading experts in those fields. The fact that so many people seem to end up doing their subject because they think that's what they need to get a job to start a career they may or may not even have 10 years down the line seems a little sad to me.

Post reply on HN