5 ms·
I am both a self taught programmer, as well as a self taught guitarist (both for over 30 years now), and I don't agree completely with that answer in the blog p
by cyberferret 9y ago
I am both a self taught programmer, as well as a self taught guitarist (both for over 30 years now), and I don't agree completely with that answer in the blog post.
Self learning is great, and it will give you experience and chops in both disciplines, but at the end of the day, you will hit many walls that only a formal education (or a good teacher) can give you.
I've written hundreds of (perhaps over a thousand now?) apps over the decades which are used in the real world to save/make businesses time or money. I would probably categorise myself as a 'fairly decent' programmer, but I know I would fail most whiteboard tests which have basic CS knowledge patterns. I often look at discussions right here on HN about machine learning or cryptographic patterns etc. and feel like a green newbie again because I find the technical conversations hard to follow.
To bring it back to guitar playing - I remember when I was in my first band in high school, I had no idea how to play a guitar solo, but a session musician visiting the school showed me the pentatonic scale, and how you could move it up and down the neck to suit different keys. Mind blown. Pick any standard 3 or 4 chord song and I could play a semi decent sounding solo over it. Forget theory or all that Jazzy stuff - I was on a roll!
But after many years, I discovered that I was simply playing the same thing over and over again in different keys. I wasn't really moving forward. I remember telling other guitarist that - "The _best_ thing I ever learned was the pentatonic scale, and the _worst_ thing I ever learned was the pentatonic scale...". I felt boxed in and felt that my skills had plateaued.
It wasn't until a couple of years ago that I started taking lessons from an experienced guitarist, that I realised what I had been missing on by omitting basic music theory from my vocabulary. I was astounded by the power of learning the differences in scales, and using modes, triads, augmented chords etc. Stuff that I thought was too 'intellectual' or that I believed would restrict my creative freedom actually proved to be the exact opposite. It was the first time I experienced the concept of "the more you learn, the more you realise there is out there for you to learn". A kind of reverse Dunning-Kruger effect?
TLDR: Self learning is great, but formal education is a force multiplier.
- thomastjeffery 9y agoI think it's worth mentioning that theory need not be learned in a formal setting. I, like practically every guitarist, followed the same learning pattern. Early on, I learned the pentatonic scale, so my noodling was more structured. Later on, I learned about scales and modes. Those two elegantly simple constructs are the most useful, extensible points of knowledge I learned, but I learned then from friends, and even from the internet. To contrast, through high school, I learned scales, and a lot of theory. I was forced to practice specific aspects of performance, learned about breathing, embouchure, sight reading, etc. I learned how to have a good ear, and work together with the rest of the band. The only things I learned from formal education, that I likely couldn't reproduce independently, were physical. Things like breathing, embouchure, etc. This, I believe, is where the analogy falls apart. In music, especially as a performance art, most of what you do is physical. That simply is not the case with software. Everything I learned about programming, I learned on my own. I learned theory and implementation. I learned several languages. I learned how to interface with the operating system. Programming is not a performance art; in fact, it is the opposite. The computer is the performer. You are the composer. The most wonderful aspect of writing is that it is only information, and with the internet, information is really available, no matter what setting, formal or not.
- cyberferret 9y agoYes - I think to expand upon my post above and your excellent reply, it all boils down to "context matters". I think learning theory and concepts (in both guitar playing and programming) is far more interesting to me when applied to 'real world' situations. Basically, instead of learning and memorising the various keywords of, say, SQL, if you gave a student a dataset with several tables and thousands of rows of data and said - "Now extract X for me from these tables", then they will see that there are several ways of doing so, with different benefits and downsides. Similarly, if you gave a guitarist an unusual chord progression with, say a diminished or minor chord in the mix and said "Work out a solo that sounds good over that", then there will be some interesting learning in there without having to memorise every single scale that they could use. Many ways of coming up with a solution to the problem. Another anecdote that relates to my favoured method of learning - When I was in high school, I disliked trigonometry, and never really got to grips with soulless diagrams and charts on the page. But when I graduated and went to flying school, and had to learn spherical trigonometry (several fiendish levels harder than standard trig) in the context of learning navigation on a globe, I absolutely fell in love with it, and indeed I think the first time I ever got 100% in a maths test was in one of my first spherical trig classes at flight school.
- YZF 9y agoI'm a self taught guitarist (for the last 2+ years). I know a fair bit of music theory. I know different scales. I know how chords are constructed over scales. Major chords, minor chords, 7th chords, add/sus, power chords... Chord progressions... Different chord voicings ... inversions... Time signatures... I play classical pieces and I play rock/pop. I put a lot of time into this and I realize getting somewhere is going to take a lot more time, I don't suck any more but I'm still a beginner. There are endless online resources for learning music theory, Coursera, YouTube, Wikipedia and more. Point is the self-taught vs. theory is orthogonal. Some people are formally taught and don't get the theory and some people are self taught and spend the time getting a deep theoretical understanding. I took some lessons with a recent music graduate who didn't really know that much music theory, he wasn't that interested and it went in one ear and out the other apparently. Technically he was at a much higher level but he didn't care much for theory... It is unfortunately true that a lot of "self taught" developers are just not that. I.e. they didn't really invest time in learning much. But there's no fundamental reason why you can't learn just as much CS on your own. I read Knuth's AOCP when I was 14. I do have a CS degree but I still took two online machine learning courses to keep my knowledge up to date and I learn new things all the time. A friend was telling me about their friend who spent a month learning "HTML" and now has a job as a "web developer"...
- dkobia 9y agoThank you for this comment. I am both a programmer and guitar player. Theoretical knowledge seems to be out of fashion these days and I'm rediscovering it again after taking it for granted. Hard to describe how much it adds to ones repertoire
- somecallitblues 9y agoDon't worry about what you read. It's mainly dick measuring or stuff learnt at work in specific domain. I know a lot of people who are awesome devs and feel inferior when reading HN comments. The only thing that matters is if you can build stuff people will like and use.
- Vadoff 9y agoYou can learn the material taught by formal education by yourself too. There are hundreds of resources online for learning algorithms, practice problems, and even video lecture on the very classes that are taught in Ivy-league Universities. You can also buy the books that are used to teach those courses as well. The only thing a formal education will give you is some structure to your education, as well as teachers who you can ask questions. But you could probably get the latter online as well.
- psile 9y agoPlease allow me share my personal experience and as to why I don't consider a "formal education" to be anything special or unique or magical (including my own). For the record, my degrees are in engineering, and not in CS. I would describe the majority of the classes (not course topics) I sat in during my time as completely worthless and a waste of my time. There was a very typical pattern from undergraduate courses all the way to graduate courses: professor would come in, dribble a bit on the board and often copy verbatim from a book onto the board, mumble a bit, and erase the board move on the the next topic and then leave. I'd then have to go read the book and pick up 1 or 2 reference books to try and understand what was going on. Maybe I had a total of 2-3 courses that I felt I actually gained something worthwhile by sitting in the _classes_. So almost all of the time I was "self-teaching" despite having a "teacher" and getting a "formal" education. And now, 4 years later, I'm continuing to self-teach by picking up books and reading through them on my own. Having said all that, unfortunately I would have never gotten my current job had I not put down that I have an "X in Y" on my resume/CV -- not because it's required for the job, no, _not at all_, but because it just helped them check off one of those "requirements" off their list.