I can relate to it through the lens of Karate. I've been studying just about 10 years and I'm just beginning to see the depth of the art. Its almost like you spend those 10 years building the foundation before you can start building the house.
One of the points in the article really jumps out and again, I use martial arts as a lens for comparison. Talking to other programmers extensively accelerates your growth. If I had tried to piece together the knowledge my Sensei taught me through "Youtube, books, & self-study", I would have not gotten as far as I have. There's something about having a mentor that can warp-speed your progress. Anyone who has mentored under a master in their field would attest to that.
The programming culture is one where you're encouraged to go out and figure it out. Yes, there are teams and pair programming but I don't see most companies emphasizing mentorship as much because its not directly tangible on the books. Its more of a long-term investment and they see employees jumping around every couple of years, so why bother?
It would be interesting to see master programmers (30+ years of exp) offer year-long intensives for serious students who wanted to accelerate their growth. I bet you would get some excellent programmers.
Old but good. I have been seeing an interesting discussion around project based learning vs. more formal CS type program lately. As a self taught programmer who got started and became passionate about technology because of MUDs I can confirm project based learning worked well for me. It kept me engaged and pushed me to solve hard problems I might not have ever tried to otherwise solve.
So, to me, making programming interesting is one of the keys. I know I have a common learning and work style that heavily favors the experiential and interactive. Other promgrammers I have worked with can Zen focus and design for days before touching code. I can't. I like to interact, prototype, outline with code, think in smaller bursts, and then iterate. I have learned to be more patient over the years, but that is still my default paradigm.
I think I generally agree with Norvig here. Most of the criticism of his article is misplaced. He isn't saying you should only learn to program in 10 years, but that it is a hard discipline with immense depth.
According to the owner of this company, it takes at least 3 days for somebody with absolutely no computer skills to learn programming. Apparently its the career path of choice for telephone operators in a call center.
What is funny, after programming professionally for about 30 years, Is I want that job in the call center answering telephones. Even more ironic, it takes 1 month of intensive training to do that job.
I entered the work force in 2009. This year is the first time I feel like I know wtf I am doing.
Already in the first few lines of the article, there's a reference to a post-1998 date, so I started wondering about the veracity of the (1998). There's no clear reference to the original publication date, buy plenty of references to dates much later - the copyright notice says 2001-2014.
But, lo and behold: https://web.archive.org/web/19980206223800/http://norvig.com...
It's a very different article, but at the core, it's the very same idea. Pretty fascinating that it apparently has been "ghost-edited" to stay current.
It was about 10 years ago that I read Norvig's "10 years" post: https://michaelwhatcott.com/10-years/
Many previous discussions at https://hn.algolia.com/?query=Teach%20Yourself%20Programming....
Last year was the first time I managed to write some code that didn't obviously suck. It was great! (And about 9 years after I started.)
Though still, 95% of the time, I walk away from my check-ins feeling like my code could be a lot better, but not seeing how until much later.
How can this be from '98 when it mentions Malcolm Gladwell and someone's death year as 2004?
I must be blind, I'm not seeing where this was written in 1998? I see some couple-year-old comments. I only ask because I was going to express surprise that the Amazon links still work.
Does the (1998) in the title maybe not mean it was written in 1998?
>> branch misprediction: 5 nanosec
Turns out it was a lot more than just "5 nanosec".
Old post but a classic one. Reminds me of the 10,000 hour rule of gladwell’s book outliers
Great article. I think programming is a discipline that's especially susceptible to ineffective learning approaches because it's intimately bound up with utility. Part of this stems from the fact that we're not yet at the point where it's learned ubiquitously at a young age.
For example, compare programming pedagogy to the typical way in which children are taught to read. We begin learning to read at such a young age that the actually utility of reading is more or less completely factored out of the equation--we go to school, reading is a part of what we do there, and so we sort of just accept that and spend a great deal of time engaging in the activity intimately--exploring its nooks and crannies, playing with it, joking, discussing it with classmates. In the case of programming on the other hand, a lot of autodidacts have selected the discipline not for any love of the game (of course there are several who do have a genuine love for it) but rather for some perceived use-value it provides. For example, if I learn to program I can get a better job, or I can offload some menial task, or I can ultimately do some other thing that happens to require programming (e.g. making a video game is what I really want to do, and if I have to learn to program to do so, so be it). This sort of utilitarian frame makes it very easy to engage in behavior that frustrates learning--reading for information only, rushing through material, copying and pasting examples, seeking out solutions to exercises when stuck rather than exploring and working through them. In general it's much harder to be a good learner if you've attached some ulterior motive to your learning activity.
There's a lovely German word Mitgefuhl, which is often translated as compassion but literally means "feeling with". I think it's a fundamental concept underlying a great deal of successful human endeavors--just as you need to exercise compassion in order to really understand someone's emotions or perspective, I think there's a lot of merit to dwelling with, or, as ancient monks practiced, ruminating (chewing the words) intellectual material. Taking one's time is important, as is checking in periodically to ensure you're still consuming things consciously. When I read a book, no matter its subject, I like to imagine I've signed a lease to rent out an apartment with its author--to really get to know the consciousness behind the words--not in any psychological sense, but in a purely epistemic one, to achieve a better understanding--to learn how myself and this consciousness might live in harmony, to imagine conversations--to 'feel with.'
As someone who is self-taught when it comes to programming myself (and still has an incredible amount to learn) I can say my own experience of learning and the rate at which concepts solidified definitely increased once I broke my interest in the practice free from any concern over utility and decided it was simply something I found interesting--something I valued irrespective of its practical application.
good link - thanks
10 years is a bit too much don't you think. I mean comparing 24 hours or 21 days with 10 years is highly demotivating. I think 1 year or 6 months would still be an inviting title and it's not that farfetched. I've seen people become good with a programming language in lesser times than a year.