Live data from Hacker News

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

zeroequalsfalse.com

131–140 of 330 posts

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

#131

To those who self study: how or where did you learn the design patterns for good code? Anyone can learn how to write text book programs in any language but working on a team and diving into a paradigm say MVCC or something doesn’t seem as easy at least for me

From blogs, conferences, meetups or on the job.

Also, universities have traditionally been terrible at teaching those concepts.

I haven't worked with CS graduates for a few years, but usually they were terrible at designing anything, totally misunderstood OOP, etc. Because lecturers were terrible at teaching it, often because lecturers had no experience actually programming professionally. Maybe it's changed now.

For example lecturers loved talking about polymorphism, even though you almost never should use it.

I remember a project I inherited from a graduate where he'd gone absolutely crazy on inheritance, where an industry professional would have used just a select few interfaces. Nightmare code.

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

#132

Self-taught programmer here, in industry for 10 years now. > Deadlines I have these at work. > Teamwork I have this at work. > Communication I do this at work. > Prestige I have this from doing a good job at work. > Networking I do this at work. Sounds like I'll be fine without a CS degree.

Well someone has to write shovelware and preach about how code documentation and design patterns are a waste of time.

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

#133

All the points mentioned in the article are not specific to CS, and they are mostly about living normal adult life (socializing, deadlines, etc.) I don't think that going to college is necessary or detrimental. It's probably good that people from 18 to 21 stay somewhere safe and learn something out of their parent's home. That said, there is very little that a CS course can teach you that is both practically useful o…

logic, computational complexity, algorithms, best practices and patterns one can learn on its own but it's _rare_ to find a self taught coder that has had exposure to these topics. there are great developer that are self taught and self sufficient, sure, but the majority end up coding small potatoes or cogs within a soul crushing enterprise with zero agency and while most cs grad have little coding skill they have th…

I don't have any statistics, but at a personal level, I find that logic, complexity, algorithms, etc. are trivial subjects that I learned in large part by myself during high school. I'm pretty sure this is year one stuff at a CS course.

All the rest that you are saying applies equally to any college student or merely to any intelligent, learned person who constantly improves their intellectual skills.

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

#134

Earlier quoted context omitted.

In my experience, self-taught engineers are self-taught because engineering is a passion and they spend their lives doing it. I can see the "I want to earn more money" boot-camp types having holes in their knowledge, but those who read engineering books and stay up all night coding always seem to have the deepest understanding of all because they live for it.

It'll get complicated talking about age too, because we don't want to pretend older people are "better", or risk turning into an agism-in-technology rant, but it has to be said that the older self-taught people probably started with 8-bit home-computers back in the early 80s. At that time there was no formal courses, and their knowledge probably covers everything from assembly language all the way up - because most p…

This is exactly me.

In 1984, when the Mac came out, I was a starving artist in Denver. I had a lot of college at that point, but no degree. I had foolishly wanted to learn everything interesting, so I had a year of art school and three years of coursework in biology, physics, and mathematics, but I was working in labs and retail by day, and by night as part of a songwriting partnership that ultimately went nowhere.

I was fascinated by MacPaint and wanted to learn how to do that. I had some FORTRAN and some BASIC from coursework, and a little FORTH from a friend, but they hadn't captured my imagination. MacPaint did.

I couldn't afford a Mac. They were 2500 dollars. In 1984 that was half of my annual income. (Yes, I realize that's unbelievably low. Starving artist.)

With help from the woman who became my first wife, I got hold of a Commodore 128. I started by typing in BASIC programs from Compute magazine. One of them was an assembler, and that's where things got really interesting.

I did end up writing an absolutely terrible paint program, but what really obsessed me for months was writing variations of Conway's life. The one I spent a lot of time on was a version that ran multiple sets of rules on the same field at the same time.

The color of a live cell was determined by the set of rules that governed it. Live cells of different colors could see each other for the purposes of liveness analysis, which is how the rulesets interacted. They were otherwise independent of each other. I spent countless hours poring over whatever references I could find about how to make things faster and more comprehensible, and tweaking the rulesets to see what happened. I would leave a program running overnight to see what it looked like in the morning. Often it was a boring disappointment. Sometimes it was spectacular. The rush of the spectacular ones kept me going.

I wrote other programs, too, trying to understand how window and graphics systems and compilers and interpreters worked. I worked in bookstores and read everything I could get my hands on about programming. In those days, retail bookstores paid crap wages, but allowed the staff to borrow all the books they wanted. It was a good deal, from my point of view.

In the fall of 1987, my mother sent me an ad that Apple Computer ran in the Mensa Bulletin, looking for hires. I applied and, to my utter astonishment, Apple hired me, and that started my profession as a programmer and a technical writer.

The way I got the job prepared me well to take advantage of Apple for learning more. I came into the company ravenous to learn all I could about programming. The company had three institutions perfectly designed for an autodidact like me.

First was the corporate technical library, a huge collection of technical books available for employees to borrow. Their policy was that if you wanted to borrow a technical book and they didn't have it, they would order two copies: one to lend, and one for you to keep. I got a lot of expensive technical books for free.

Second was the software library. They wouldn't give you a copy to keep, but they would order software that you wanted to check out, and they would let you renew the checkout for as long as you needed. They also maintained copies of basically every piece of software Apple had ever developed, released or not. My first hands-on exposure to Smalltalk was a check-out copy of Apple's implementation of Smalltalk-80.

The final pillar of my self-education was Apple's competitive intelligence lab. It was essentially a hardware library with instances of more or less every interesting hardware architecture you could imagine. They had a Cray Y-MP. I learned Lisp and emacs on Unicos running on the Cray. I used to sign up for time on the Xerox machines to play with Smalltalk and Interlisp and the Star Office system.

I agree with those who say that teaching yourself leaves holes. I've been identifying and filling in those holes ever since 1987. On the other hand, I can't say I regret how my natural curiosity ended up leading me into what became my profession. Undoubtedly, I would have been better prepared if I had taken a disciplined approach to learning programming from the beginning.

On the other hand, if I'd had that kind of discipline in the 1980s, then I probably never would have discovered that I liked programming in the first place.

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

#135
post #16
post #7

Why teaching yourself to code is better than a CS degree * Far cheaper, no debt accumulated * Follow your bliss in learning what you want, but still with the option to absorb the best of the CS textbooks. * Not compelled to learn languages and platforms behind the curve. * Less able to lean on teammates, you learn to solve problems more independently. * There's no illusion that your education has an end date, and tha…

You missed a few: * Poster candidate for Dunning-Kruger * Cheap and fast but low quality * Single pointed focus. More likely to be a one-language savant * Degrees are for chumps: this is a delusion.

>Cheap and fast but low quality

He didnt say fast, he said cheaper.

Purchasing book written by somebody who has 10 15 20 years of XP in industry may, indeed have higher quality.

>More likely to be a one-language savant

Languages aren't like like pokemons, so you dont have to "catch them all"

Knowing more langugages outside the most mainstream like python js java and so on, of course may help you, but it ain't requirement if you want to be good at CS / SE.

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

#138
Both.

A CS degree is learning and not just a bit of paper. It will give fundamentals and breadth, but not necessarily depth because they have to cover so much ground. It doesn't teach how to code, they teach how the systems work.

Self learning can give you the depth in an area that interests you, and provide the experience to debug and live with code you produce or to take on existing systems by contributing or interacting with OSS.

They are not mutually exclusive... If a CS degree is available to you, do both.

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

#139

To those who self study: how or where did you learn the design patterns for good code? Anyone can learn how to write text book programs in any language but working on a team and diving into a paradigm say MVCC or something doesn’t seem as easy at least for me

From blogs, conferences, meetups or on the job. Also, universities have traditionally been terrible at teaching those concepts. I haven't worked with CS graduates for a few years, but usually they were terrible at designing anything, totally misunderstood OOP, etc. Because lecturers were terrible at teaching it, often because lecturers had no experience actually programming professionally. Maybe it's changed now. For…

"For example lecturers loved talking about polymorphism, even though you almost never should use it."

Well, that makes me feel better after having a terrible time making heads or tails of a codebase with many, many levels of inheritance. I think I am getting there but my head hurts trying to unravel it to do things.

Post reply on HN