Hacker News new | past | comments | ask | show | jobs | submit login
The spiral of learning (sdqali.in)
67 points by diadara on Dec 31, 2013 | hide | past | favorite | 31 comments

I find it helpful to maintain a closure ratio; I shoot for perhaps 1 out of 5 projects that get past one night's worth of fiddling should reach "closed", for some definition of "closed". It's crippling to think that you should finish everything you start. It's better to always start things and never finish than never start anything at all, but it's better to "finish" every so often too. This gives me the satisfaction of occasionally finishing things, while still letting me wander broadly. It's a powerful combo, depth and breadth.

I do this too. I manage it by periodically reviewing my open projects and either pruning or building a kind of mission statement–go or no go. If they make the next step it doesn't mean they have to get to the end, but it means you should spend some time scoping and figuring out what completion might eventually mean.

Here's how I "solved" this in myself: I use the streak feature on github. I work through books and projects, and just push them forward 20-30 minutes a day, every single day. Since starting in March, I've read and done the examples/homework for: Let Over Lambda, F# Programming, Clojure Programming, PLAI, and I'm almost done the second chapter of SICP. I've prepared and given a meetup talk, invented some neat stuff, and all around really enjoyed my increasing mastery. It's been the most productive 9 months of my life, and I don't really feel like it's much of a strain. My mind has calmed; my focus increased. I cannot recommend it enough.

Are you actually committing code every day, or do you somehow represent non-code related progress (e.g. reading a programming book) in a repo?

I'm really committing code everyday. I'll commit the exercises, or if there are no exercises, I'll type up my learnings as a comment, and I'll try to write an example of what it was I was trying to learn.

Gotcha, thanks for the additional info. I might give this a try. I like how your approach requires some active work in order to check a day off, and how it automatically gives you a history of what you've done each day. I've tried the "Jerry Seinfeld calendar" approach, but it's a bit too easy to get lazy or cheat when your only sign of progress is an "x" on a calendar with no real evidence of work attached to it.

The energy and interest you have is a tremendous positive. Don't take it for granted. It's something to nurture.

What exactly is making you feel bad - what are you thinking when you have that feeling? i.e. what thought is stopping you and why is that bad?

[OK, I'm guessing in the following - you'll find the true answer in the above questions] You say you feel bad because of a lack of mastery, but what level of mastery counts?

I think it's the lack of a goal: a defined point where you say "ah! I've done it!", instead of a continuous never-ending slog. There's always more you can do in the bigger picture, but you can choose a goal at a point that in some sense is a completion. Artificial in a way, but also on top of something, a logical boundary.

That is, a specific doable task that can be done pretty quickly; with some challenge, not too much - a level that, from your experience, is definitely doable by you; that is clear and definite, so you have a direction/guide to keep you on track, and so you know when you've reached it (so you can stop, and see how far you've come, and a take a rest to choose the next one).

Finally, it must have some meaning to you - it could be to just learn some technique to some standard... but better is an actual project that you want to do: a simple parser, an animation, a tool that you'd like to have, implement an idea, copy a game or tool or library or framework or language or app that impresses you (or some part of it). But note that it must be doable, by you, in reasonable time. So, if too ambitious (or you realize it's too ambitious as you go along!), break out simpler and simpler versions of it, or sub-parts of it - provided it still has meaning, a definite end-point, and is doable.

Of course, as you say, you are learning stuff in this spiral, and you'll get cross-insights from doing different things. It's just that you feel bad about it - I think having goals would help. [But see the questions above...]

Some time ago there was a post on HN about the difference between a system and goal driven behavior. A system driven behavior applies a strategy over and over endlessly with improvement at each iteration. The goal driven behavior is a sprint based evolution.

What the OP describes is a system which he acknowledges improves his expertise in the studied knowledge.

My opinion is that system has the advantage over goals in that it is an automatic and permanent drive to stick to some rule. It can be learning, exploring new ideas, do fitness, healthy food, keep a good weight, etc.

Goals require a boost of effort and focus wich can only last for a limited duration. You feel good if the goal is achieved and bad if not.

If you work with goals and sprints, there is a high risk of burnout. So better go into system mode for the long run.

The change of topic of interest is something I saw my self and was also puzzled about. I attribute this to some "fatigue" of the brain where it's learning capacity is kind of saturated. Changing topic of interest, changes the neurons and connections in play which let some of them to rest and activate others. Learning is also a matter of repetition and pruning details. You get this by switching back and forth between topics and forgetting the details in between.

Another benefit of having different topic of interest is that at some point we will make the connections between them. We'll use the knowledge gained on one topic on the other. This is powerful and by the combination of topics explored it will also make you most probably unique.

Sounds like a fair summary, but you haven't addressed what (I believe) is the key issue: OP feels bad.

  pain [...] consistently high [...] don’t have the energy or enthusiasm
I think a huge turn off for "goal-setting" is that corporations do it, and also that they do it for the purpose of productivity. However, I'm not suggesting it for productivity, but for satisfaction. The satisfaction of completely something. Of climbing the mountain, completing the quest, bringing the elixir back, solving the problem, creating something new. I'm not saying one "should" do it, I'm saying it's a way to feel satisfaction, instead of pain.

The key idea here is that a goal not something to strive for, but a limit. Not to force you on, but to let know when you have accomplished something - when to stop! Now, if you're a perfectionist, you may say, "but there's so much more! I've barely scratched the surface. I've done nothing! I'm not worthy!"

However, if you had a goal, and you can remember how it looked when you set it (that it did seem challenging), then when you reach it, you can compare where you were, and where you are now. And you are forced to acknowledge the fact that you have accomplished something.

This gives a flood of satisfaction, like it or not.

Now, turning to "sprint" vs. "system". Firstly, I stressed that the goal must be doable. There's minimal risk that you can't complete it, if it is "doable". And if it's too hard, pick a smaller one.

Note also that you can shift topics between goals, just as you can with a system. I'm talking about small goals, not huge overreaching ambitious goals. Baby steps - but steps nonetheless!

Sprints seem very compatible with human psychology: movies, books and music usually consist of alternating tension and release. There's a series of difficult obstacles, not just one, but a series of problems and solutions. People really respond to this.

Curiously, it seems that literal sprints (i.e. running) are also much better for building fitness than consistent paces. And they even have "sprints" in some agile methodologies (not sure if that counts for or against my argument...).

Finally, there's absolutely a magic in programming, that you code something... and something happens! It's a child-like thrill that (in my opinion) it is absolutely crucial to respect and preserve, especially as ones goals become ambitious and abstract. Fred Brooks talks about the "sheer joy of making things" - and compares us both to a child making mud-pies and to God creating nature. (just found an excerpt online: http://cs.calvin.edu/books/processing/references/brooks/myth...)

I would guess that, evolutionarily, the human body and mind is adapted to sprints - and this is what makes goals feel so satisfying to us, just as we enjoy food, water etc. The "system" approach makes logical sense, and what you say about it seems true. It's just that you haven't addressed how it engages with human motivation (but assume it is "an automatic and permanent drive") - which is the issue OP is struggling with.

Lastly - I think OP's personal solution will actually come from the thoughts he has when he feels that pain. Part mistaken, part profound - only OP will know which is which. I don't claim my suggestion is right for OP, just adding another perspective.

The whole thread resonates quite strongly with me. Many interesting points are made. I was just recently wondering whether I should pursue goals when engaging in activities I do for fun. Like you wrote, it is feels so corporation-ish but then again they seem to motivate us.

Another aspect, however, concerns motivation vs. commitment. When it comes to hobbies I am quite driven by motivation. Unfortunately, motivation often doesn't last long. That's why many people point out that commitment [doing something despite a momentary lack of motivation] > motivation.

And this gets me back to square one as commitment is something I rather associate with corporate culture than leisure time. [Of course, you could make being commited x times a week a goal to get some satisfaction out of it but I doubt that would work for me. It probably also depends on the activity: I can commit myself to regular exercise but I can not force myself to sit down and write some music 3x/week]

I've heard that action precedes motivation - you force yourself to start, and then you become engaged. I've found this is true for me.

Many (not all) professional novelists have a schedule, to ensure they write each day. They force themselves to type X words, or sit there for X hours (they get bored and start writing). But that's work, not leisure.

I think a distinction here is relaxation verses intrinsically meaningful activity. Many people find the latter the most rewarding... but goofing off and aimlessly following our whims, just for fun, has a place too. (Actually this worked well for Feynman).

I used to be in the exact same position. Switching between different languages, paradigms, frameworks helps immensely in narrowing down you're area of interest. I spent a significant amount of time playing with python, tried thinking "pythonically" and using it as my side-project language. But after about a year I never got comfortable, maybe it was the mature community surrounding the language or its opinionated nature.

Anyway, I distinctly remember learning about Clojure, and being completely enamored with the ideas Rich Hickey talked about. I would still get bored of doing 4clojure problems, but instead of abandoning them for a different subject entirely I would watch a ClojureConj video, read a blog on a Clojure library, or even just practice some of the tooling like emacs key-chords.

I believe the learning process is better when it is erratic, both for you're own sanity and the overall completeness of a knowledge domain you can acquire after jumping around from topic to topic.

5 months in, I am trying to push Clojure/Cljs ideas into the C# shop I work at, and upholding my promise to do SOMETHING regarding the language or tooling every night.

Our brains seem to work best this way, storing an idea in our subconscious after rigorous study allows us to process it in the background. I find myself frequently daydreaming about language constructs or architectural designs.


Would appreciate your feedback on that!

Why Clojure instead of F# or more advanced C#?

Because it's Microsoft technologies locked into a Microsoft stack. And before people start chiming in about Mono: Good luck selling that idea in a large bureaucratic enterprise environment. For all the hassle involved you're better off sticking to something that runs on a JVM.

That's why I suggested it - the parent said they were already in a MS shop, there'd be significantly less resistance with staying on the same stack.

Couldn't identify with this more, the worst part is when you spend so much time circling that you start to forget the things you originally learned, or at least think you do. However I have noticed the same effect, especially when you have circled once or twice back to the same well your brain has learned more than you know, and thinking in that way is much easier now that you have had time to work through it and let your brain rest a bit.

I think on some level you cant make yourself feel bad for being a jack of all trades, and you can setup methods to reinforce going back to the well of whatever you were working on.

One of my compatriots who does this has a dedicated but somewhat more closed off friend who doesn't look around for new things. They challenge each other to see who can accomplish the most in some specific language, style, whatever . The flighty but open one now is challenged by someone who is more dedicated to the task, and as they keep it light hearted. Together they make some interesting stuff and are a pretty good team.

So cool! You are describing me! :-)

I think there are only two things.

1.) You shouldn't feel bad about it, and now you are realizing that it's an overall upwards spiral after all, you probably don't feel so bad about it! :-)

2.) You forget to include a lot of other things. What about sporting activities, or social activities. There was another HN post on "investing time", that explains that concept. I can tell you my spiral is way bigger. And especially Wikipedia I see as a big corner stone of learning things. It's one of the fastest ways to get a feeling for what the Bellman equation is, or convex optimization, or the different notions of consciousness, or the axiom of choice in set theory, or a morphism in category theory, Feynman diagrams, or a renormalization group, just to list a few things I've checked in 2013. I bet you could follow my intellectual spiral by the specificity of topic terms I check on Wikipedia. :-)

The world is a wonderful place, there is so much to discover! You will never be done. It's great to not just accept that, but to appreciate it!

If you zoom out, it looks like you are really only "spiraling" within or two (relatively) niche topics: Newly Popular Programming Languages and Understanding/Using Data With Computers.

Maybe you need to broaden your horizons a bit to find something that truly interests you and dramatically increases the things you can do as an engineering/scientifically-minded person?

Any suggestions? I would love to try out some new things.

Great article! It reminds me of a beautiful excerpt I recently discovered that might make you feel better about all your unfinished projects:

  Leaving something incomplete makes it interesting, and gives one the feeling that there is room for growth.    Someone once told me,  "Even when building the imperial palace, they always leave one place unfinished."  In both Buddhist and Confucian writings of the philosophers of former times, there are also many missing chapters. 

I generally am not one to recommend specific books, but I read one a while back that I think would be relevant here. It's called Mastery by George Leonard. I'm very much the same way as you, characterized as being a "dabbler" in the book. I would definitely recommend giving it a read. Or two. Here's a scribd link, though its legality seems dubious: http://www.scribd.com/doc/257928/-Mastery-by-George-Leonard

I just read the first 60 (out of 179) pages of the book - and I would've said that OP was characterised as a "Hacker."

This is because a "Dabbler's" skill goes back down to 0 in the short term, and this is not what is happening to the OP.

I admire your ability to know the unknowns. Its imperative today do do exactly what you are doing. There is just to much going on that is "worth knowing". Any good CTO would be rounded but not masters of one. The best thing about this is your spread trading your education and the overall achievement being a grander knowledge of shared knowledge. Keep doing what your doing there are no pitfalls in not specializing. BTW cheers and happy new year may your future be fruitful from your unbiased persute of education. :)

Yes, I (and many others) have exactly same problem. I feel like I'm getting better in committing to specific goals over time though.

One of the key things here is to think about what you want and clearly define your goals. But you may find yourself in the situation when it's hard to understand what you want. Then, I think, it's ok to play around with small projects shorterm without strict commitment. This helps to try many different things and finally find what you like.

Maybe I'm missing something here, but why are you throwing yourself at all these technologies? Usually I will only exert effort to learn a new technology when it makes solving a particular problem easier.

The focus here being on the word "problem". That's where I find I get the enthusiasm to learn something or finish that I started, because the problem is interesting or useful.

I recall that Feynman had some great quote about this. Basically, if you stay observant and studious, then you can try each bit of new information against the problems you already have, and you gain useful insights as a happy side effect of learning for fun.

I am in exactly same situation.

The main problem with "the spiral of learning" is the wasted energy required to switch tasks.

If I could just stick with one thing until I mastered it, I would be much more efficient. Trying to go back to things I haven't done in a while requires a long period of time for re-familiarization with material I already used to know.

I know exactly what you mean. Someone smart once told me to pick one thing and do it very well, this I did. I mastered one technology and because a go-to guy on it, based my career off it and now I'm a bit bored of it and want to transfer across to something else. I'm finding this hard.

I think you could approach it a little differently.

You should try and do/create cool/interesting things/projects which help you learn the skill a little more.

Rather than going at it with the intention of learning xyz

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact