Incidentally this is a very valuable instrumental topic for doing well on job interviews, specifically in software areas. The problems are usually a mix of skills, "basic" knowledge and a thinly veiled IQ test questions; the latter type rely on "going meta" at some point of problem solving. If I had a good heuristic for this I think I could pass almost any interview :).
E.g. (classic) how do you delete a node from a linked list if you only have (pointer) to that node, not the previous one?
If I had a good heuristic for this I think I could pass almost any interview :).
Sadly, a lot of interviews are more about "likeability" and people skills than pure critical thinking skills. (I wish it were that easy...)
At top software companies they seem to weigh the technical aspects more, though (somewhat understandably) the interviewers want to imagine working with the candidate as a future positive interaction.
Personally I think I pass the personality test, but recently blown an interview due to being stale in some areas and insufficient mental flexibility ("going meta") on a couple of questions.
This is a specific application of "meta", but a valuable one for many people here and is probably generalizable to other areas:
Pretty much the best programmer I know (an author of a number of Boost libraries) once reduced his "secret to success" to DRY Principle.
The way I understood it that he looked for higher level of abstraction even if it was locally suboptimal (in small programs cut n' paste works fine); it might have taken longer in some instances, but made him a way better at creating abstractions.
Is it possible to develop a set of meta-thinking skills that help us execute or create Less Wrong meta-thinking skills?
Here's a simple meta-thinking skill that aims at this: recursively ask yourself "How could I have thought of that?".
I've been playing with this in the context of solving math problems. I'll work on a problem for a set amount of time and then look at it's solution. I'll then think back to the thinking I did, and figure out what kind of meta-skill or meta-heuristic would have allowed me to make it to the next step of the solution. And so on, until the end of the solution if possible.
Should one distinguish between meta-thinking and meta-meta-thinking?
I think not. I feel that it would be reasonable to define meta-thinking as "thinking about patterns of thought", with the content of these lower-level thoughts having no particular importance. They could be object-level thoughts or meta-level thoughts; in either case reflecting on their patterns would be considered meta-thinking.
This also fits my experience with meta-thinking skills on LW. I've found that techniques like Hug the Query can be applied regardless of the current level of abstraction.
Is it possible to develop a set of meta-thinking skills that help us execute or create Less Wrong meta-thinking skills?
Let's speculate about how Eliezer developed his meta-thinking skills. I imagine that he was working toward FAI (he had something to protect) and frequently ran into problems (and could recognize them as problems). Unable to make progress he might ask "where have I seen a similar problem?". Over time he could bunch together similar confusing problems. Eventually he might abstract their common essence (by asking "what makes them similar?"), and perhaps find a solution to them in the form of a meta-thinking technique.
This suggests a procedure for creating meta-thinking skills:
I'm surprised this post hasn't become more popular!
Eliezer's quote seems important:
In one sense, a whole chunk of Less Wrong is more or less my meta-thinking skills.
I think that this quote delivers a strong conceptual unification of various teachings and techniques on LW.
I also think that an investigation of the questions I raised might have high instrumental value.
Is there something I'm missing? Do people already have an understanding of these issues? Alternatively, do people have good reason to believe that this discussion will be fruitless?
How can you identify when you are "stuck", and when going meta has greater marginal utility than continuing on your current level of thought?
One way I've done this is via the meta-level skill of recognizing a familiar pattern in the structure of my thoughts about a problem. This familiar pattern can be addressed with my existing meta-skills (which is one reason I remember it), and so I just apply them. This is what I think Eliezer means by "routine meta-thinking".
It's harder to identify when one should engage in original meta-level thinking. If you try to use the outside view, and recognize thinking patterns that can be treated on the meta-level, you most likely end up doing what I described above. If you can recognize a thinking pattern it means you've seen it (at least) a few times before, and probably know how to deal with it.
One could also approach this decision using a coarser outside view. You could ask yourself:
An simple heuristic to use is to go meta periodically, with longer periods between higher meta-level thinking modes.
In this comment nickerst mentions using this heuristic in structured planning:
In my calendar, the habit I've written in is a bit of planning or "meta" time. Twice a week, I plan out a full week. By re-evaluating the course of action half-way through, I'm hoping it should be easier to track where I go off-track.
Once a month, this planning time must include meta-planning. During this time, the idea is to review that my planning method is the most effective. This is the time for reviewing the past month's calendar, and also for reading any books on planning.
When do you go meta? When do you stop going meta?
In the video Q and A Eliezer offered some advice about this (the emphasis is mine):
In his discussion post "Are you doing what you should be doing?", Will_Newsome identified what seems to be an important guiding principle of meta-thinking:
(where "time-saving results" can be replaced with "greater marginal utility" to obtain a form that is more generally applicable)
Some questions we could explore:
(I plan to try to compile the insights and advice here into a top-level post discussing the principles of, and heuristics for, effective meta-level thinking)
Edit: Changed minor wording and altered the third question posed.