Live data from Hacker News

What skills do self-taught programmers commonly lack?

quora.com

81–90 of 161 posts

Re: What skills do self-taught programmers commonly lack?

#81
I am self taught with no degree :( and think that the key is in being curious and exploring. A constant pressure/feeling of greater ignorance also helps drive that. I learned to program cause I wanted to make games so from there I picked up C, a tiny bit of numerical methods, pointers and finite state machines. Self teaching C++ was horrible so I quit computers for a couple of years. However, I came back to it but wanted a language as different as possible from C++. I tried python but my short term memory is terrible, I could not get my head around dynamic types. I tried scheme but was too dumb to get the syntax. I had an interest in pure maths so was drawn to haskell and ML. Simply being interested in haskell you get thrown in the deep end and get introduced to a bunch of theoretical stuff which I perused for a couple of years, including from the list:

Data Structures, Programming Languages (http://www.cis.upenn.edu/~bcpierce/tapl/), Code-as-Data, Patterns (mostly in the guise of how pattern Y is an inferior version of feature X oh & monads are super patterns), Functional Programming, Object Composition, Recursion, Lambda Calculus, Type Systems, Category Theory

Each of the above expands and leads to its own world. As a self learner you just have to keep exploring. For example with category theory, you pick up type theory and learn how they and sets all relate. From sites like this one you learn about the importance of unit testing and version control. From lambda calculus you can rewind to Frege, unrewind to zermelo and learn about first order logic and trace a line from Haskell to Weierstrass program - taken to its absurd conclusion with Bourbaki - to rigorize Calculus (along the way you may learn of infinitesimals and the hyperreals formulation of Calculus by robinson which I found more intuitive).

After a while I realized that I was really into Artificial intelligence, Graph theory and Subjective Probability theory. The latter two, I think will be the Calculus of the future[1]. This led me through Machine Learning, more much more numerical methods and brings me to today. I don't know much about search or compilers or a great understanding of system internals but I can pick it up if it interests me or I need it.

The downside to self learning is that with no teacher everything is harder. With no teacher you can't double check your model so really understanding takes longer. There is no need to test yourself so you are in danger of jumping around without having properly learned anything.

My solution is to read voraciously to index and just work on what I want so that if I need a concept, knowing of its existence allows me to know that I should learn more on that topic. at the least I can make that connection. Revisiting is key, if you don't understand something now move on but be sure to come back later. Relate/Analogize/search for treatments that most suit you. Good with programming and learning differentiation? Then derivatives as higher order functions paired with Euler's notation makes it way easier and makes expanding to higher dimensions more straightforward. Learning hard things gets easier if you keep at it and you continually expand your base. Its all very slow going though and knowing when to Explore and Exploit your current knowledge is tricky. Till recently I leaned too much towards explore but if you want to get stuff done you need to exploit with what you got. I doubt this approach would have been viable 15 years ago. Or before Google and Wikipedia citations. Finally, I hate academic papers behind paywalls.

[1]As the corner stone of techniques. I see the concept of entropy appearing everywhere and find the idea of quantum mechanics as a complex probability theory just incredible.

Re: What skills do self-taught programmers commonly lack?

#82
post #10
post #9

I grew up on computers, and am exclusively self-taught, yet I have an in-depth knowledge of how computers actually work from spending time learning how to crack programs. A decent understanding of some fairly complex algorithms from writing RTS, Chess and other games and working on some awesome ML applications professionally. And a good understanding of FP from playing with langs like Haskell and implementing a lisp…

Aside: What is really meant by "self-taught programmer" anyway? I have managed and worked with people who came out of university and couldn't program their way out of a paper bag. This one always makes me raise an eyebrow too. My experience at university was that students who didn't teach themselves anything didn't really succeed in class either.

You haven't interviewed enough then.

I interviewed dozens upon dozens of candidates who couldn't describe to me the underlying data structure for a hash table, all with degrees from reputable schools. This was at Amazon of all places, where they did a decent job of filtering before they even got to me.

Don't even get me started on post-grad degrees. Those that have only PhD's or Masters in CS have been especially bad in my experience.

Passing a course, even doing well, is a very different thing than actually internalizing the material.

Re: What skills do self-taught programmers commonly lack?

#83

It's interesting that this question implied the negative -- not what's the difference between , not even what are the strengths and weaknesses of , but: > What pieces of the whole are missing? The implication being that without a formal CS education, it is an impossibility to obtain a whole. As if whole matters; how does one obtain whole , anyway? This is a very loaded question and perspective that betrays a serious…

As a self-taught programmer myself, I confess this is exactly how I would frame the question. I'm constantly worried there's something crucial to which I'm oblivious.

I'm in the same boat and also worry about it to a certain extent. However, 7 years of getting paid to write software has mostly given me more confidence. Also, I know a lot of really smart people (a lot smarter than I) who studied Computer Science and couldn't program their way out of a paper bag.

Re: What skills do self-taught programmers commonly lack?

#84
I thought it was strange that Functional Programming ranked high. In my experiences CS depts are pretty mixed, in some schools it's essential, but in many others it's all but ignored. Additionally when I list out all the people I know who are big into fp on twitter or else where, at least anecdotally, it seems to be pretty heavily skewed towards the self-taught. I have a mixed background (self-taught then back to school) but all of my fp work has been on my own time an curiosity. I've always found it rather ironic that FP is considered academic when very few academics spend their time on it.

Re: What skills do self-taught programmers commonly lack?

#85

Earlier quoted context omitted.

As a self-taught programmer myself, I confess this is exactly how I would frame the question. I'm constantly worried there's something crucial to which I'm oblivious.

I'm in the same boat and also worry about it to a certain extent. However, 7 years of getting paid to write software has mostly given me more confidence. Also, I know a lot of really smart people (a lot smarter than I) who studied Computer Science and couldn't program their way out of a paper bag.

When I found out many "programmers" can't solve fizz buzz, I felt a lot better.

Have you read anything that really knocked you on your ass in terms of practical usefulness?

Re: What skills do self-taught programmers commonly lack?

#86
That's a pretty silly list. Many formally trained programmers also lack understanding of several items on the list. How much can you really teach anyone on compilers and machine learning in two months? The easiest way to learn something is to use it. Taking tests and turning in homework assignments for 8 weeks only gets you so far. If you want to pick up the formal theory and functional aspects of programming then I highly recommend the course notes available at http://www.seas.upenn.edu/~cis500/current/index.html. If you get to the end I guarantee you'll know more about the theoretical aspects of programming than any "formally" trained programmer at a big name university.

Re: What skills do self-taught programmers commonly lack?

#87
John Carmack is a self-taught programmer.

There is no programming skill that a school can teach that a motivated individual cannot learn outside of school. That is one of the great joys of working in this most democratic and meritocratic of fields. Its secrets are not locked away in an ivory tower, they will reveal themselves to all who seriously seek them. The only tuition required is hard work and persistence.

Re: What skills do self-taught programmers commonly lack?

#88

It's interesting that this question implied the negative -- not what's the difference between , not even what are the strengths and weaknesses of , but: > What pieces of the whole are missing? The implication being that without a formal CS education, it is an impossibility to obtain a whole. As if whole matters; how does one obtain whole , anyway? This is a very loaded question and perspective that betrays a serious…

I'm inclined to disagree. The converse -- what skills does a programmer who has never left academia lack? -- strikes me as perfectly valid. And surely there must be some benefit to taking four (or more) years out of your productive life to the study of programming? But I say this as a self-taught programmer, so perhaps it's just that I'm envious of those who've had the benefit of a formal CS education.

The ability to get shit done.

Re: What skills do self-taught programmers commonly lack?

#89
post #81

I am self taught with no degree :( and think that the key is in being curious and exploring. A constant pressure/feeling of greater ignorance also helps drive that. I learned to program cause I wanted to make games so from there I picked up C, a tiny bit of numerical methods, pointers and finite state machines. Self teaching C++ was horrible so I quit computers for a couple of years. However, I came back to it but wa…

> the key is in being curious and exploring

That reminds me of another hacker:

"I think one of the most important guiding principles has been this: — that every moment of my waking hours has always been occupied by some train of inquiry. In far the largest number of instances the subject might be simple or even trivial, but still work of inquiry, of some kind or other, was always going on.

The difficulty consisted in adapting the work to the state of the body. The necessary training was difficult. Whenever at night I found myself sleepless, and wished to sleep, I took a subject for examination that required little mental effort, and which also had little influence on worldly affairs by its success or failure.

On the other hand, when I wanted to concentrate my whole mind upon an important subject I studied during the day all the minor accessories, and after two o'clock in the morning I found that repose which the nuisances of the London streets only allow from that hour until six in the morning."

Passages from the life of a philosopher Charles Babbage

Re: What skills do self-taught programmers commonly lack?

#90
The question, as it was posed, was pretty arrogant and contained an implicit assumption. It assumed that a "self-taught" programmer does not know, or does not have available to him, certain things that a so-called formally taught programmer does. And that's just not true. Both self-taught and academically taught programmers have access to books, computers, the Internet, peers and tools. Also, there's no black-or-white difference between the two: the academically trained programmer has had some amount of so-called self-teaching, and the self-taught programmer almost always has some amount of academic education. Also, they both have brains, and are able to reason out things for themselves. Many things are learnable by experience, and learnable when needed. Also, there's the point that everything ever put into a textbook was at some point independently discovered or learned by someone, without the benefit of a textbook or academic course -- instead they had to discover it directly or think it up themselves, or derive or synthesize from something else they read or learned previously, sometimes in adjacent or even very different fields. The computer itself is a wonderful teacher. And what the Internet makes available to everybody, regardless of whether inside a university or not, makes even the famous Great Library of Alexandria look pale in comparison.

But I overstepped myself. I couldn't possibly have these thoughts, or reach these conclusions, without having been spoon fed it from a professor in a university course. I'm sorry. I forgot my place. Back to the servant kitchens for me....

...oh look, a book on algorithms, what's that doing in the servant kitchens? I'll sneak a peak when nobody is looking. :)

Post reply on HN