Clear Thinking?
April 24, 2014 3:10 AM   Subscribe

I'm looking for some resources to help me develop my skills in clear thinking. Any recommendations?

So I recently read Polya's "How To Solve It" for the first time and it was quite an eye opener. I'm really interested in any other resources/recommendations on developing logical clear thinking skills.

By clear thinking here I mean being able to get to the heart of the problem quickly and concisely, being able to effectively separate conceptual concerns from irrelevant detail and techniques to properly research solutions and apply and evaluate them effectively and concisely.

If it matters I work in technology (CompSci) so if there's anything geared to that domain even better.
posted by gadha to Grab Bag (11 answers total) 45 users marked this as a favorite
I'm reading Daniel Kahneman's "Thinking, Fast and Slow" right now, and it is really, really interesting on what thinking is--a combination of a fast-moving (but biased and limited) system plus the slower, more "thoughtful," concentration-intense system (whose intensity limits it in other ways). The book might be more theoretical than what you're looking for, but I've found nearly every page an eye-opener, both about what thought and problem-solving are, but also about what we think we're doing when we're thinking and problem-solving.
posted by mittens at 4:27 AM on April 24, 2014 [1 favorite]

Make mistakes, learn from them.

Never be in a hurry to get a solution. If you get stuck take a break, do something else.

Get lots of experience, clear thinking comes from perspective, that comes from maturity.
posted by epo at 4:28 AM on April 24, 2014

Can you clarify what you are after? Are you trying to get better at solving computer problems, looking for philosopher-style precision, wish to be more effective in meetings and presentations, want to learn how our brain tricks us or how we are manipulated to buy things? Affects the recommendation.
posted by PickeringPete at 5:10 AM on April 24, 2014

As someone who has worked in IT for over a decade now, one thing that one needs to understand is that troubleshooting is a skill that's pretty separable from the knowledge set required to fix something. Being able to divide any problem into pieces and isolate problem areas, and then locating the resources I need to fix the problem (ie, vendors, documentation, etc) is why I've been successful at every IT job I've had. My bosses know they can point me at something and give me time and I'll sort it out, even if I've never seen the system in question and know very little about it.

To me, there's very little difference in technique between troubleshooting a buggy perl script, figuring out why packets are getting dropped on your home network, and finding an oil leak in your car.

So basically my recommendation is to learn troubleshooting techniques and practice fixing stuff in general, computer related or not.
posted by empath at 5:57 AM on April 24, 2014 [3 favorites]

Check out Kepner Tregoe

I attended their problem solving class year ago and have used the skills ever since.
posted by gnossos at 6:32 AM on April 24, 2014

Further to my post above, Lesson 1: define the problem clearly :-)

Intuition Pumps and Other Tools For Thinking - Dennett
This Will Make You Smarter - Brockman
You Are Not So Smart - McRaney
The Art of Thinking Clearly - Dobelli.

But please clarify your goal.
posted by PickeringPete at 6:33 AM on April 24, 2014

Following on from what empath said, I have a bit more formal an approach to that. There's a point where I recognize that a problem is hard, and I need to more formally troubleshoot it. In that case, I grab a whiteboard and begin writing the things I know about the situation.

I'm very precise in my language with this and only write down things I've verified. For example, I'll write down "user is receiving an access denied message," not "access is denied" -- after all, there may be weird circumstances like a network timeout where you get an access denied message but that isn't what's actually happening.

I also write down things I don't know: is the request sent across the network? is there a response received from the server? are there logs of the failure? etc.

I then start hunting down answers to the things I don't know one by one and moving findings up to things I know until I arrive at a solution.

If you exhaust your list of things you don't know, one of the things you know is written overbroad and contains an incorrect assumption.

I've been doing a lot of proof work in math lately to help improve the clarity of my logical thought. You may find value in that also. Feel free to join me in working through Apostol's Calc I!
posted by bfranklin at 6:40 AM on April 24, 2014 [2 favorites]

Theorycrafting is always great, but there's nothing like practice to sharpen any particular skill. Have you tried different coding challenges? You may find that the principles you are looking for in a book are easily discoverable once you reflect on what has worked for you.
posted by parallax7d at 8:08 AM on April 24, 2014

Response by poster: > Can you clarify what you are after?

@pickeringpete - I'm after the skills that allow one to disseminate a problem into it's core components and find an effective solution. Often in my own thinking I realise I get detracted down a certain path due to focusing on something the wrong way or getting fixated on implementation detail. I also find that my thinking is "linear" and not creative when solving problems. For the record, I'm happy just bettering my technical solving skills.
posted by gadha at 8:17 AM on April 24, 2014

In my experience, getting the problem properly defined is half the battle. I find that often people will come with problems half-baked; they have already made some assumptions, so I have to walk them back. "What makes you think you have a problem? When did it first occur? What changed? (Try to reduce to one variable or start ruling out deltas one at a time.)

In IT, some familiarity with testing methodology helps: bugs materialize at the extremes (max/min) or components that meet. Think buffer overflows as an example of a max. What is the behaviour of the system when the CPU is maxed out, memory maxed out, there is contention for resources. Consider extremes of timing: a web server under extreme load, a request from component A that times out in B.
So I suggest you dig into testing texts/methodology and see if you can gain some notions.

I ask myself what might account for the weird behaviour. If a network printer stops working, I will try a simple fast test. Can I ping it? If I change the Ethernet cable, does ping work? Have I tried the standard stuff like rebooting, turning things on and off, perhaps re-installing a driver. But I always go from easy/common stuff before I consider exotic answers.

You are recording the exact error message, so you are probably googling to see if other people have solved this problem.

But if you have improperly defined the problem, you will go down the rabbit hole and it takes some time and mental energy to abandon that approach and back up.

Sometimes you can revisit the problem statement and come up with different phrasing and that gives you the breakthrough. It is probably easiest to do this at the very beginning. It is hard to give a good example but let's think of global warming. How do I stop global warming? I can phrase this as how do I stop CO2 from being emitted. Or I can ask how I can capture the CO2. Or I can ask how I can replace fossil fuels with something else. Or I can ask how to precipitate the CO2 out of the atmosphere. Or I can ask how to minimize the sun's rays (giant solar umbrellas).

There are actually different modes of thinking. I found a book called "Conceptual Blockbusting" by James Adams extremely helpful, since he explores different modes of thinking (so you can consciously switch gears), and typical obstacles to finding solutions. A very good book. If you wish to pursue other sources about creativity, there is a very good thread on creativity on this forum.
Try this thread.
posted by PickeringPete at 9:48 AM on April 24, 2014

Many problems (especially of the CS variety) are repetitious. How to decide how many combinations of something are possible, for example. How to write an algorithm (or prove by induction) by determining a base case or two and then solving for n+1. Things like that. They come up over and over. As such, you can solve these problems ahead of time -- solve them right now, for fun -- and then be ready to easily solve them in the real world when they come up again.

So get a book or two of mathematical and programming puzzles, work through all of them, and make sure you understand why the authors solved each problem the way they did. Each problem is a model for similar problems. Each solution is a tool in your toolbox. And you'll teach yourself various tricks and rules of thumb along the way.
posted by pracowity at 7:27 AM on April 25, 2014

« Older Post interview blues   |   How to increase my attention span? Newer »
This thread is closed to new comments.