
Ask HN: How to improve my abstract thinking? - max_
A few days ago I got into Mathematical Logic[0] and learned  how to reason about 
problems through using various branches of  mathematical ideas like 
proof theory, model theory e.t.c.<p>I found this abstract way of thinking about problems clear, &amp; organised.
&quot;Mathematical Logic&quot; is diffrent from the kind of Math I was taught, 
which was a top down approach to solving problems.<p>&quot;Mathematical Logic&quot; seems to be able to derive solutions to problems in 
a ground up fashion where a solution can somtimes elegantly present its self 
as long as you apply correct mathematical properties.<p>What other techniques do you hackers use to improve your abstract thinking?<p>[0]: https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Mathematical_logic
======
asciimov
Three things I recommend:

1 - Read lots of things unrelated to your field of study. Read about flowers,
or art history, or music theory.

2 - Take long walks, get away from the screens and distractions. Walk some
place that stimulates thought, like in nature, or in a city, or by a river.
Skip the treadmill or places like malls that demand your attention. You need a
place to allow your mind to wonder and to process/organize the info you read
about.

3 - Dream, in a very literal sense. Do you ever remember those moments right
before you fell asleep where your mind gets a bit too creative. Harness that.
It has been said that Edison would take naps in a chair with heavy ball
bearings in his hand. Right when he was just about to be asleep his hands
naturally relaxed and dropped the bearings on the floor waking him. Quickly,
he would pop up and recollect on dreams/ideas he just had. Use a similar
technique to your advantage, see what randomness your mind designs.

~~~
thomasfromcdnjs
I wonder the origin of that story, I've heard a version of a painter who holds
a brush and pallette, falls asleep, drops them, wakes up and paints.

And I do love my lucid dreams, at some points of my life they would ruin my
sleep but I found them a good trade off.

~~~
uoaei
You are thinking of Salvador Dali. He would hold a spoon in his hand and rest
it above a plate. When he fell asleep the spoon would fall and make a clang
with the plate. Jolting him awake again, he would try to recall whatever was
happening in his subconscious right before being startled awake and try to
express it on canvas.

~~~
DyslexicAtheist
> He would hold a spoon in his hand and rest it above a plate

I do a variation of that too. And my plate has cereal in it ... The moment I
wake up I go: _" oh hello, what's that ... breakfast!"_ \- and instantly I'm
in a good mood. It's like a form of meditation I call "bowlfullness"

------
chubot
I think such mathematics is probably the best way to improve abstract
thinking, so you're on the right track.

Abstract Algebra and Linear Algebra are adjacent fields with a lot of clean
abstractions that I believe exercise the same muscles as programming (even if
a lot of it isn't directly applicable)

Related comment:
[https://news.ycombinator.com/item?id=23152152](https://news.ycombinator.com/item?id=23152152)

i.e. basically linear algebra for engineers is not abstract. Linear algebra
for mathematicians is quite abstract, e.g. a 400+ page textbook that doesn't
refer to any matrices.

\----

On the flip side, I think mixing abstract thinking with testing/debugging is
the ideal combo for programming.

It is a skill to write useful test cases. To explore the state space
efficiently.

If your code isn't grounded in real examples, then it may become overly
general and not RUN run very well. It's a big danger to abstract before you
have enough examples.

And probably the hardest thing that programmers do is debug OTHER people's
code, as opposed to your own code.

(I guess you didn't ask about programming, but I'm sort of assuming you are
programming by asking on this site :) )

~~~
tjpnz
How would one get into abstract algebra having flunked High School math very
early on? I've been going through Khan Academy pre-algebra and find it
incredibly disheartening how little I know. I did manage to get a CS degree
but the math taught there is different.

~~~
Gene_Parmesan
This is several days late, but I had this tab open along with many others and
I'm finally getting to it.

What is it that you find challenging about math? If it's the actual
computation/calculation -- the part where you are finding a numeric answer --
don't worry, that's nowhere to be found in abstract algebra (or any higher
level math). Pure math (of which abstract algebra is a part) is about the
study of patterns more than anything that has to do with numbers.

In fact, the name "abstract" refers to the fact that it's concerned with
abstract collections of things -- for instance, groups. You'll study sets of
operations on groups -- if you are able to identify Collection X as a group,
you immediately know you can apply theorems a, b, c, etc. to it. For these
reasons, the sort of things you are likely learning in pre-alg on Khan Academy
don't have much direct applicability.

I think it's an enormously beneficial subject for programmers to study, maybe
the only math course beyond the standard discrete math that I think should be
required. (I want to add category theory, but I don't feel I can as I only
have the barest grasp of the fundamentals myself...) As with all pure math
courses, it will quickly move beyond the depth/level you can actively use in
programming, but the mind-expanding it does is really great at encouraging the
sort of abstract thinking the OP's post is about. It has strong relations to
generics, interfaces, polymorphism, etc.

As for how to get into it, I used this book: [https://www.amazon.com/Book-
Abstract-Algebra-Second-Mathemat...](https://www.amazon.com/Book-Abstract-
Algebra-Second-Mathematics/dp/0486474178).

------
ipnon
Math is sort of the end of the road for abstraction. If you go any further you
drive off a cliff. Take a trip to the cliff and look around for a while.

So-called mathematical maturity lets you think about many domains without
considering concrete reality, and this lets you solve a different class of
problems. Many foundational computer scientists are or were mathematicians for
good reason. Think von Neumann, Knuth, and Turing.

There is a magnitude of difference in abstract thinking between a
mathematically mature scientist and a mathematically immature one.
Mathematical maturity seems to allow an easy transition from abstract theory
to empirical experimentation. The converse does not appear to be as true.

My advice would be to study math directly.

------
lvspiff
As I got further in my Mathematics degree what really made it all "click" was
classes on Philosophy. The logic and approach you forms in Philosophy give a
greater understanding of how mathematical proofs are formed and how to
approach problem solving. A series of lectures from a Philosophy 101 course
would do a lot to help with the mindset you speak of so look to any of the
MIT, Stanford, etc online courses.

~~~
HuShifang
As someone who studied mathematics as an undergrad and then intellectual
history (with an emphasis on philosophy) postgrad, I second this. I would add
too that learning how to write effective philosophy papers is an excellent way
to improve your writing, and argumentation, and analytical ability more
generally. (I often share the Jim Pryor's guidelines [1] with students.)

[1]
[http://www.jimpryor.net/teaching/guidelines/writing.html](http://www.jimpryor.net/teaching/guidelines/writing.html)

~~~
panabee
this is interesting. thanks for sharing! these guidelines seem like they would
apply well to science papers, or really, any writing where the objective is to
prove an argument or perspective.

------
tunesmith
For actual programming mindset, I think this a learnable skill that I'd love
to see a good article on. I see a lot of intermediate programmers try to
"abstract" by kitchen-sinking things, such that they end up with a perfect
machine that is fairly inscrutable. And then when a change is needed, the
machine falls apart and needs to be rewritten entirely.

I think abstraction is about recognizing patterns, but also about recognizing
what elements are more likely to change - you don't want to abstract away the
changing aspects. In that sense, it becomes similar to creating a model that
depends on parameters.

Also, generally, when you are implementing a solution, that solution exists
within a context of a problem. If we are simply told to implement a solution,
there is a temptation to just trust that the solution will solve the problem -
and sometimes we are told to trust that. But if we take a step back in
abstraction and fully understand the problem ourselves, we can derive our way
to the correct solution, freeing us from having to "trust" that the solution
is correct.

Abstraction is just continuing from there. Understand the larger context of
the problem, why it is a problem. Maybe you'll discover it isn't, and that the
solution isn't actually needed. And so on, if you ask another Why you can
discover that maybe another problem is more important to solve, which would
_make_ this problem irrelevant.

------
chewxy
A dirty trick that is used all the time but goes unnoticed is concretizing
abstract thoughts. The entirety of abstract maths is just that. Let me provide
an example:

You've got some abstract concepts of relationships. How do you go around
thinking about relationships? You make them concrete. You do so by first
representing them as perhaps, two points on a piece of paper and then drawing
an arrow between them. This act of representation is an act of concretizing an
abstract thought.

Now you start adding rules to your concrete representation. If you are
rigorous about following your rules you almost inevitably end up when Saunders
MacLane ended up with Category Theory.

Another example:

Think about computers and what they do. Now try to represent them on paper.
Depending on how your mind works, you might end up with something that looks
like a Turing Machine or cellular automata. I've not come across anyone who
thought long enough and came up with something like lambda calculus, so I
suppose Church was an alien.

I didn't use any mathematical logic examples because those examples typically
involve historical battles over symbols.

------
ForHackernews
I would strongly recommend the book, "The Art and Craft of Problem Solving" \-
[https://www.abebooks.com/book-
search/isbn/0471135712/](https://www.abebooks.com/book-
search/isbn/0471135712/)

It teaches you how to solve [math] problems, but not the kind you've seen in
school. The author was a coach for the Mathematical Olympiad, and the kinds of
problems he presents are creative, often requiring creative abstract lateral
thinking to solve.

> Paul Zeitz studied history at Harvard and received a Ph.D. in mathematics
> from the University of California, Berkeley. He currently is an associate
> professor at the University of San Francisco. He won the USA Mathematical
> Olympiad (USAMO) and was a member of the first American team to participate
> in the International Mathematical Olympiad (IMO) in 1974. Since 1985, he has
> composed and edited problems for several national math contests, including
> the USAMO and helped train several American IMO teams, most notably the 1994
> "Dream Team" which, for the first time in history, achieved a perfect score.
> In 2003, he received the Deborah Tepper Haimo award, a national teaching
> award for college and university math, given by the Math Association of
> America.

------
gentleman11
The most important part of abstract thinking, at least after you get the hang
of it, is to then step back and make it concrete and pull at the threads to
see how a theory comes apart. The more layers of abstraction you add to a
situation the more opportunities for a tiny, tiny error to grow into a larger
problem.

If you follow along carefully with the arguments in most classical philosophy
in great detail, you notice this more and more: everything has a logical error
or assumption eventually and the author typically does not catch their own
error.

------
godelski
> How to improve my abstract thinking?

The simple answer, is practice. I know this is absurd sounding, but it really
is the goal here.

While I agree that you should continue down the path of Math, there's other
ways to practice abstracted thinking. Pick up some kind of artistic hobby.
Painting, music, poetry, story telling, etc. These are all just things that
force you to think creatively. Whatever you find interesting. It probably
isn't a coincidence that a vast number of high level practitioners in science
were also artists in some form or another (Einstein, Newton, Feynman, etc).
Abstract thinking is often associated with connecting ideas from different
subjects ( _abstract: disassociated from any specific instance_ ).

Additionally, focus a lot on creating analogies for things you are studying.
This has 2 major benefits (to you). #1, it helps you remember. #2, you have to
abstract a concept to create an analogy. Remember that the point of an analogy
isn't to be precise, but rather to create an elegant means to abstract a
concept (this also is why they are good for communication). An analogy primes
you to remember a concept, it doesn't describe it exactly. After all, that
high precision is difficult to express and comes with a lot of assumptions.

Lastly, another pure math method: study abstract algebra.

~~~
chrisandchips
Agreed. I think the more you push yourself to learn and pursue things that
seem abstract to you, the better. As you do so in various fields that interest
you (the arts, maths, whatever) you start to draw a lot of patterns around
seemingly unrelated things, and I think it teaches you a lot about yourself.

------
danielvz96
I agree with everyone here that maths is the frontier of abstraction but
here's my two cents: delving into a humanities or social studies discipline
you are interested in. I'm a self taught programmer and studied a history
major. I was pretty good at history and got to learn a lot in there, but the
most important skill I learned there was to manage abstract thoughts and
complexity through reading and writing history essays.

I can really see a difference here with my peers in the sense that it takes
them a lot more to understand each other's lines of reasoning both in verbal
and written speech, and it takes them a bit more to string together complex
ideas when they are too far away from what they were taught (this last bit
even affects the way code is written).

I guess any discipline that cares for truthfulness or sound reasoning is
useful for this. The most important thing is you enjoy studying it and it
conveys complex thoughts. Some other areas besides maths and history I can
think of are philosophy, political science, economy and even architecture.

Of course this is N=1, so I'd take this with a grain of salt.

------
salty_hash
Many people have mentioned mathematics, but I'd like to add philosophy to that
list. Things like logic and set theory very much overlap with philosophy (and
many mathematicians can be considered philosophers). The main reason, however,
is that philosophy is thinking about thinking. So if you'd like to think
abstractly, while also covering a broad range of topics, philosophy is great!

Good luck.

~~~
ftio
+1. Read some Saussure, Derrida, Foucault.

~~~
noema
And if you're going to read Derrida, make sure you know your Husserl first...

------
natalyarostova
Deliberate practice in abstraction. Forcing yourself to solve abstraction
problems at the edge of your current ability. This should be _hard_ and
_frustrating_. If it’s not, you aren’t solving hard enough problems. Do this
daily and after a year you’ll notice real progress.

~~~
wunderlust
+1. Deliberate practice—working at the edge of your ability, where you fail at
least as much as you succeed—is nearly the gold standard for continual
improvement at any practice.

I would amend that do this daily and you'll see progress after months if not
weeks.

~~~
wunderlust
I would also add that puzzles are a fun way to improve your thinking, IMO. My
favorite source is
[https://www.ocf.berkeley.edu/~wwu/riddles/intro.shtml](https://www.ocf.berkeley.edu/~wwu/riddles/intro.shtml).

------
wenc
Semi on-topic mindset related note: be careful about going too far in the
direction of elegant "mathematical" thinking. It's good to have certain mental
techniques available to you, but real world problems require a certain
suppleness/flexibility of mind and willingness to deal with exceptions that
don't fit nicely into logical molds. (unless you work entirely in theoretical
spaces -- then it's ok because there's no difference between theory and
practice)

As someone who was for many years enamored with theory and mathematical
elegance (I drank from the wells of lambda calculus and category theory in
hopes of discovering something that would set me apart), I had to unlearn much
of it to actually make progress in my work. When faced with new problems, I
found myself trying too hard to find an elegant solution, and when I couldn't,
I was paralyzed. My more resourceful colleagues on the other hand managed to
ship yucky but working solutions -- which eventually got less yucky.

I learned that sometimes you have to let go of the ground-up mathematical-
derivation type of thinking, and just release practical yet inelegant
solutions into the wild, collect data, and then iterate. As one iterates, some
solutions will tend toward elegance and others will not -- some problem spaces
are just naturally messy and the solution needs to reflect that. If you've
ever worked with an ERP, you'll understand how hard it is to unify competing
concepts, yet that's what an ERP does with varying degrees of success.
(everybody hates ERPs, but different people hate it for different reasons, and
on the whole they kind of work)

Take something like Category Theory for instance: it seems like it should lead
to amazing elegant solutions, but in practice it's rarely used -- and
Haskellers might disagree with me here -- to design solutions (except in rare
cases like LINQ). Instead, it's often deployed as a post-hoc gloss to explain
solutions that have emerged by trial and error (like SQL perhaps). Its utility
is often usually retrospective, i.e. either to verify correctness or to add
rigor to existing solutions.

p.s. don't underestimate the value of experience + good taste in producing
good thinking. People who design good abstractions are not always deeply
mathematical people, but instead are people who have good intuition, like
Anders Hejlsberg (architect of Turbo Pascal, Delphi, C# and Typescript), Rich
Hickey of Clojure fame (who actually trained as a musician), etc. Guido van
Rossum (Python) once said he probably couldn't have designed Python when he
was 17 because at that age he didn't have enough experience and good taste in
programming languages -- which is why most programming language designers tend
to be over 35.

~~~
Koshkin
Speaking of Category Theory: what can be more _concrete_ than points and
arrows between them. (That's the thing about "abstract" math - it is in fact
no more abstract, and is often simpler, than the "concrete" math, especially
applied math. That's why someone [don't remember who] said that less talented
people should stick to working in pure mathematics.)

------
perlgeek
If you are looking for other branches of mathematics, I'd recommend topology
and group theory; both can be pretty abstract, and work quite differently than
the math you tend to be taught at school.

Otherwise, I recommend learning and using "extreme" programming languages,
languages that go very far off your standard language. Examples:

* Lisp: everything is a list

* TCL: everything is a string

* Haskell: everything is pure and strongly types, and you use monads and other crazy stuff

* Rust: on the extreme end of safety through zero-cost (at runtime) abstractions

* Regexes: Just how much you can do with a powerful regex engine (declarative programming)

* Prolog

Finally: studying philosophy. Philosophers have honed their abstract thinking
skills to the max :-)

~~~
mohamez
>group theory

Or Abstract Algebra as whole including ring and field theory.

------
Siira
Lesswrong.com (a starting point is readthesequences.com) is probably worth a
look. It’s usually not math-heavy (though there are plenty of those as well),
but about actually applying the truths we do know to think better. E.g., lots
of people know the Bayes theorem (I was taught that in K12), but almost no one
actually uses that insight in real life.

~~~
juliend2
> almost no one actually uses that insight in real life

I don't know a lot about Bayes theorem but you caught my attention. Why is it
the case that no one uses that in real life?

------
smokeyturtle
It may not be exactly what you had in mind, but poetry and metaphor.

I was a CS major with a Creative Writing minor. I picked the minor as an
escape from CS but over the course of my career as a developer it has been
some of my most useful time spent. When I was trying to write about a thing in
terms of another thing (or reading other people's much better attempts) I
would look at the lower level similarities and mess around trying to make the
metaphor as tight as possible. Along with that, both writing code and
creatively are mostly about constant revision. So both interests kind of
played off each other reinforcing that process.

------
cauterize
A different take -- drugs. Especially marijuana and hallucinogens. Helped me
better understand how to think about abstract computations vs the nitty gritty
details like pointers. Not for everyone, but helped me.

~~~
xaedes
Similar direction but different:

Spirituality, mysticism, religion, "alternate" non-sciency stuff, but also
history. When not approached with sceptic mindset but one that tries to
understand it can be very enlightening.

I think it trains to think with vague, incomplete and also contradictory
thoughts (its bit similar to simulated annealing in contrast to deriving a
solution analytical). On a side note, its damn interesting what our heritage
has to offer.

Regularly revisit it with some scepticism so you don't get lost.

I suppose.. when logic is located in the left brain hemispere, this other
stuff is located in the right hemisphere. Don't fixate on only the one side.
Boost it with the help of the other one.

------
johnsonjo
Disclaimer, I am in no way affiliated with brilliant.org but am a happy user.
Do yourself a favor and invest in a brilliant.org membership (there should be
a trial period, but tell yourself if you like it and stick with it you’ll
consider buying the lifetime membership). Then do all the Logic Courses. You
could work your way through their Computer Science stuff after that. They are
actually pretty fun and making mistakes is all part of the process and viewing
the answers will often correct what you missed. The way it works is you are
given multiple choice or fill in the blank questions usually with only one
right answer. The problem statements are very exact and taking in all the
relevant information is necessary. Then you kind of have to deduce for
yourself the answers. Brilliant.org is literally the best investment I’ve ever
made to increase my mathematical ability second only to University where I
took up to discrete math. I would definitely do the trial period though
because it may not be for everyone. I have mostly used it to review material
that I basically should already know so I don’t know how difficult it would be
for someone approaching it at a perspective of not knowing much about the
subjects. But, Brilliant setups up prerequisites for each course so you should
know atleast what you could work on before certain ones. Best of luck and I
hope someone tries it after this recommendation because I truly do love the
platform.

~~~
yogodojo
@johnsonjo: asking this late --- which university did you do your online
distance education at? I'm super interested to know!
[[https://news.ycombinator.com/item?id=22176989](https://news.ycombinator.com/item?id=22176989)]

~~~
johnsonjo
Hey no problem with asking late though sometimes people may not respond or
they may take a while though I have hacker news replies setup [1], so I
sometimes have to get through my 300+ emails per week (mostly marketing emails
[just saying I’m not that popular haha]). I actually was doing it at Utah
State University (USU) and I was on Campus my distance-ed program was across
different campuses for a University that has multiple campuses across Utah.
So, I’m not sure if they have many people that do off campus distance ed
classes.

I loved my University though. They were accredited for their CS program (not
sure how important that is honestly in fact I only learned about that because
I had to do an exit interview). Though there are many arguably better
Universities in Utah such as BYU and U of U to name a fewer, I’ve come to
believe that pretty much any University will likely give you a world class
education. Also Utah State is a research University which is an added bonus,
because it helps to have teachers that research in their field. I felt I got a
really good grasp on the theoretical principles there. My favorite course was
probably Discrete Mathematics at USU. It helped me get a good grasp on
abstract thinking (might as well bring that up since this thread is about
that). I really recommend anyone take something similar to Discrete Math by
starting to go through the readings for the Mathematics for Computer Science
course from MIT Open Course Ware and possibly the videos too (OCW) (e.g. [2]
or [3]). Reading the beginning of the Math for Computer Science course manual
prepared me for my Discrete Math class so well (In fact I ended getting over a
100% final grade because the teacher had to move the grading curve, because
likely too many were likely not doing so good). Usually before you take a
class like that you need to take Calculus, but really all you need to know
from Calculus to complete that class is likely sums and series. Any ways best
of luck with your studies and if you plan on doing online education I’m not
sure the best University to do it through. I was really glad that I was able
to attend University on campus though, because though I can be disciplined I
feel like I lack that discipline whenever I don’t have enough pressure to keep
me focused and not get distracted on other things. Again best of luck in
studies!

[1]: [http://www.hnreplies.com/](http://www.hnreplies.com/) [2]:
[https://ocw.mit.edu/courses/electrical-engineering-and-
compu...](https://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/6-042j-mathematics-for-computer-science-fall-2010/) [3]:
[https://ocw.mit.edu/courses/electrical-engineering-and-
compu...](https://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/6-042j-mathematics-for-computer-science-spring-2015/)

~~~
yogodojo
thanks for your super awesome reply! :)

------
chrisandchips
I used to struggle a lot when I first started studying mathematics seriously
as part of my Computer Science degree. I could never understood how people
ever came up with proofs for problems that seemed completely abstract and
foreign to me. Even the very notion of proving a theorum or time complexity
itself seemed alien.

It was a painful journey, but in the end I found that it comes through the
following:

Practice, a lot. I don't believe that anyone pulls solutions out of thin air.
When tackling an abstract problem, people draw on the similar things that they
do understand and then leap to the solution they're chasing.

Study the field you're trying to understand. Read over as many examples of
solutions to abstract problems, and really analyze why they work. Try to solve
your own problems, using what you've observed in those ones. Hop between these
two until you start to close the gap more.

In reality, you're always going to make lots of mistakes and the practicing is
never going to end. Its all part of the learning, and that's a journey that
shouldn't stop.

If you're interested in this field of Mathematical Logic, I suggest you listen
and read about it as much as possible, that you try to pursue problems you are
interested in, and that you collaborate and discuss things with others. This
constant doing, in small quantities but without getting up, will eventually
help you see the abstract problems for something that is much more relateable.

------
runningmike
Systems thinking and system dynamics. Run simulations. Short intro
[https://www.bm-support.org/pdfdocs/BMS_BusinessDynamics.pdf](https://www.bm-
support.org/pdfdocs/BMS_BusinessDynamics.pdf)

~~~
skuthus
Also, [https://wtf.tw/ref/meadows.pdf](https://wtf.tw/ref/meadows.pdf)

------
proverbialbunny
Abstraction is like a multi story building. The concrete at the bottom is
unrefined unprocessed raw sensory present moment experience. Building up, a
floor is an abstraction built on top of that concrete floor. The concept of
addition could be seen as a first floor. As we know, math builds on to of
itself. The farther up the tower you go, the more abstract.

Abstractions require a solid foundation, be it a floor below, or concrete. So,
when I struggle with an abstraction, I look at its base parts, identifying
what is required to understand the abstraction. What I find is I often do not
understand a prerequisite as well as I think I do. Sometimes I have to go
multiple levels down to hash something out, but once the abstraction clicks,
it becomes effortless and as difficult to think about as any other word I use
in English to talk and think.

Getting a solid foundation can be a time consuming process. If you go slow and
relax, you'll find the missing pieces and everything will come together.

~~~
Koshkin
A mental image of a concrete building somehow messes with my attempts to think
in abstract terms.

~~~
proverbialbunny
Ironic given the metaphor is an abstraction.

A more accurate representation is a mind map.

------
rglover
I listen to interviews with thinkers that I'd admire from all sorts of
spheres: business, music, film, etc and try to stitch together how they got
where they are (make a point to read the books they mention or research the
people that inspire them).

It really helps your brain to form pathways to seeing connections that may not
be obvious on the surface.

~~~
justaguyhere
I do the same, glad to know there are others!

I don't read as much as I used to anymore, but I listen to podcasts. Pick a
subject of even mild interest to me, add a dozen podcasts on the topic. Listen
to a few episodes from each podcast and delete the ones that I don't like (for
whatever reason). Over a period of time, one ends up with a few podcasts that
are thoroughly enjoyable.

There are people who read/listen to extreme views on topics (raw food vs meat,
left vs right wing politics, yoga vs weights etc).

------
AtomicOrbital
Read up on topics of interest to you ... join online forums on these topics
... get immersed in the unsolved challenges ... work to solve problems which
take time to resolve ... progressively solve ever harder challenges ... talk
to people who listen and ask hard questions

Above will get you started ... engaging in abstract thought takes time and
focused attention ... coding software can provide a medium to express yourself
so can expository long form writing ... before bedtime bring to mind an
unsolved question then upon awakening harvest solutions ... that habit can
provide feedstock for ongoing evolutionary jumps

over time increase the complexity of these long form projects ... grow them so
their course may stretch for days to weeks to months to ...

nurture friendships with interesting folks ... travel wide ... gain
inspiration give guidance cherish the moment

------
sunw
When I was taking graduate-level mathematics courses, my professor told me
that abstract concepts become much easier to wrestle with if we _make_ them
real through focused realization and imagination. This has served me well.

~~~
irchans
Would you mind expounding a bit on what "focused realization" and
"imagination" mean in this context?

~~~
qntty
We understand the world through our senses and our body. The best way to
understand an abstract concept is to turn it into something that we can
visualize or somehow "feel" in a tactile way.

For example, sometimes functions feel like a dance to me. The movement of the
dance represents the transformation of the domain to the image of the
function.

------
quietbritishjim
I think mathematical logic is potentially a bit of a red herring. I could
imagine it's easy to think, "I want to practice thinking logically, surely a
good starting place is... logic?" But actually I don't think necessarily
involves any more creative thinking or problem solving than any other area of
mathematics, and is perhaps hard to appreciate until you've practiced
mathematical logic less formally.

I'd suggest something like linear algebra or analysis (in the mathematical
sense of formal proofs in calculus). Those are both a bit higher level than
logic, but still very abstract.

------
sub7
You should do a course in Automata Theory. Check out cs154.stanford.edu

I used the book "Language, Proof, and Logic" which was also excellent.

These courses will formalize concepts and allow you to apply them much better
than random anecdotes.

------
082349872349872
By forgetting. Abstraction is the process of focussing on what two (or more)
things have in common by forgetting all the concrete details which make them
different.

------
anonymous532
pick up a functional programming language and learn its [concept] library,
it's a great way to experiment with mathematical concepts while also having
something concrete to play with. I suggest Haskell.

P.S. challenge yourself to solve problems with as few lines as possible, that
way you're forced to find better (combinations of) abstractions

------
gumby
Polya’s book “How To Solve It” is the canonical introduction to this topic and
applies far beyond mathematics.

~~~
linus_torvalds
beat you to it ;)

------
olooney
Roughly in order of user friendliness and accessibility:

Puzzles can help introduce very powerful ideas without any baggage like
mathematical notation. Smullyan's "Knights and Knave" style puzzles often
touch very deep ideas in mathematical logic.[1] _To Mock a Mockingbird_ [2] is
probably his most famous book.

 _Godel, Escher, Bach_ has very clear, fun, and memorable descriptions of
formal systems and their fascinating properties. After reading that it will be
easier to view real world systems as formal systems and to understand the
implications of that.[3]

Most of object-oriented programming and entity-attribute-value models can be
found in the writings of Plato and Aristotle. For the purposes of abstract
thinking, Plato's theory of forms[4] and Aristole's Organon[5], especially its
Prior and Posterior Analytics which describe syllogistic reasoning, are
probably the most important. For roughly 2000 years, this _was_ logic. The
_Theaetetus_ [6] is also a very good introduction to epistemology and the
deductive method of philosophy. In a practical sense, there is very little
that programmers do in terms of modeling data or systems that does not derive
more or sense directly from these two thinkers.

It's only been in the last two centuries that we've improved on Greek logic.
Boole and De Morgan for propositional calculus[7], Frege and Pierce for
quantification[8], which combine to create first order predicate logic[9].
From their you can either go to second-order logic or to set theory in order
to begin talking about collections of things. _Naive Set Theory_ [10] is a
good introductory book, although you can jump straight in to ZFC set
theory[11] for an axiomatic approach.

Relational algebra, which will be familiar in a loose sense to anyone who has
ever worked with a relational database, is a formal theory that can be studied
in the abstract[12]. I find the terminology (like "theta join") to be useful
for thinking about advanced SQL statements. It's also very interesting to
contrast relational algebra with ZFC set theory - many of the axioms are
similar, but there are also crucial differences.

Lately, in the last century or so, abstract algebra[13] has proven very useful
in modelling all kinds of real-world phenomena. For example, Lie groups in
physics, or finite fields in cryptography. Abstract algebra basically strips
down numbers to their most basic axioms and generalizes them. In group theory
we study structures that have a single operation (say addition) then "rings"
allow a second operation (say multiplication) and "fields" allow this second
operation to be inverted. It is incredibly fruitful to model your real-world
system as an abstract algebra and then to add axioms that fit your system (do
your operations commute? Are the associative? Can they be reversed?) because
you can then leverage a huge number of appropriate theorems.

The mother of all "abstract thinking" has to be category theory[14] which is
so abstract I can hardly even describe it. Nevertheless many people find it a
useful framework, with commutative diagrams[15] showing up all kinds of
papers.

[1]:
[https://en.wikipedia.org/wiki/Raymond_Smullyan](https://en.wikipedia.org/wiki/Raymond_Smullyan)

[2]:
[https://en.wikipedia.org/wiki/To_Mock_a_Mockingbird](https://en.wikipedia.org/wiki/To_Mock_a_Mockingbird)

[3]:
[https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach](https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach)

[4]:
[https://en.wikipedia.org/wiki/Theory_of_forms](https://en.wikipedia.org/wiki/Theory_of_forms)

[5]:
[https://en.wikipedia.org/wiki/Organon](https://en.wikipedia.org/wiki/Organon)

[6]: [https://plato.stanford.edu/entries/plato-
theaetetus/](https://plato.stanford.edu/entries/plato-theaetetus/)

[7]:
[https://en.wikipedia.org/wiki/Propositional_calculus](https://en.wikipedia.org/wiki/Propositional_calculus)

[8]:
[https://en.wikipedia.org/wiki/Quantifier_(logic)](https://en.wikipedia.org/wiki/Quantifier_\(logic\))

[9]: [https://en.wikipedia.org/wiki/First-
order_logic](https://en.wikipedia.org/wiki/First-order_logic)

[10]:
[https://en.wikipedia.org/wiki/Naive_Set_Theory_(book)](https://en.wikipedia.org/wiki/Naive_Set_Theory_\(book\))

[11]:
[https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_t...](https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory)

[12]:
[https://en.wikipedia.org/wiki/Relational_algebra](https://en.wikipedia.org/wiki/Relational_algebra)

[13]:
[https://en.wikipedia.org/wiki/Abstract_algebra](https://en.wikipedia.org/wiki/Abstract_algebra)

[14]:
[https://en.wikipedia.org/wiki/Category_theory](https://en.wikipedia.org/wiki/Category_theory)

[15]:
[https://en.wikipedia.org/wiki/Commutative_diagram](https://en.wikipedia.org/wiki/Commutative_diagram)

~~~
jmeister
Fantastic recommendations. Thank you!

------
azhu
Breadth in what you think about and active attempts to connect seemingly
disparate pieces of information. IMO, "abstract" refers to something that is a
pattern which applies to many things. As opposed to "concrete", which refers
to specifics about a specific domain.

And psychedelics tbh. There is a propensity of science that says that among
other things, psychedelics improve your ability to connect what you know.
[https://www.sciencedirect.com/science/article/pii/S105381192...](https://www.sciencedirect.com/science/article/pii/S1053811920302135)

------
philomathdan
If you enjoyed logic, you might enjoy reading/working through this text[0]. I
learned from that book when it was just written, and it remains one of my
favorite books/classes. As you say, it was so very different from previous
math classes I'd taken, and it opened up a whole new way of thinking for me.
Although it was used for a college course, the prerequisites are minimal --
maybe at most elementary algebra?

[0]:
[https://www.whitman.edu/mathematics/higher_math_online/](https://www.whitman.edu/mathematics/higher_math_online/)

------
kissgyorgy
You should read about different thinking frameworks:

\- [https://untools.co/](https://untools.co/)

\- [https://mindfold.co/](https://mindfold.co/)

------
fergie
For me, abstract thought comes best when doing abstract things. Particularly
reading, camping, cycling, playing/listening to music. As somebody who spends
way to much time in front of a computer monitor, I find that anything that
takes me away from screens for a few days is really beneficial for mentally
tackling big problems.

A great test of how well you understand a (mathematical) concept, is if you
can visualise and reason about it when you are away from a desk and doing
something else. That said- you can never know all the stuff you want to know,
so dont stress about it :)

------
odomojuli
This may be a bit too "abstract" but using mathematics to think about
mathematics (ie metamathematics, philosophy of mathematics ...which is just
more mathematics) is definitely the way to go.

------
crispyambulance
Just learn more math and you'll get all the abstract thinking "workout" you
can handle and then some.

But what is your goal? Is this just as a form of exercise?

If so, I recommend going through (really understanding) Godel's Incompleteness
Theorem(s). In my opinion, it's very hard but it is something that's doable
without an insane level of prerequisites depending on how you approach it.
It's also quite interesting and one of capstones of the 20th century, but
don't bring it up at cocktail parties.

------
bmitc
The course _Paradox and Infinity_ recently started on edX. If you start now, I
think it's still possible to get a good enough grade for a certificate.

[https://www.edx.org/course/paradox-and-
infinity](https://www.edx.org/course/paradox-and-infinity)

------
VWWHFSfQ
Listen to audio books in bed when you're going to sleep. Get an Audible
subscription. Listen to Treasure Island or Of Mice and Men. It doesn't matter
of you're really listening to the story. Just listen to it while you're
falling asleep.

Bonus: it will really help you to go to sleep.

------
jkire
I did a Maths degree before becoming a software engineer, and honestly I think
its really changed the way I think, just in general. There's something about
being given a problem, or theorem to prove, and grappling with it until you
really start to get a deeper understanding. After spending hours on a single
problem, sitting there trying various ideas, getting flashes of inspiration,
hitting dead ends, grabbing a drink, coming back and doing it all again.
Finally actually getting to the point where it all just suddenly _clicks_ and
you realise that actually if you just think about it in these ways the
solution is just, well, obvious! It's really intensely satisfying; just a
three line proof of "without loss of generality we can assume X, which implies
Y, and so clearly Z is true". So satisfying! (Then you realise you still have
another nine problems to try to do before tomorrow, oh god...)

Anyway.

To me, it really taught how to tackle Hard Problems, where you do just sit
there making seemingly no process for hours/days/weeks. When you first start
tackling such problems it can feel really frustrating, but actually with
experience you realise that progress is being made when you slowly manage to
map out the problem space and get a better intuitive understanding what's
going on. I kinda do imagine it as stumbling round in the dark in an
unfamiliar place, slowing groping around, hitting dead ends, then slowly but
surely getting a mental model of what's around you and how it all
interconnects. Once you have that understanding and intuition the problem is
often, kinda, easy? Or obviously impossible and you'll need to make some trade
offs.

Changing the way you think about progress to be less goal oriented and more
about expanding your understanding is really quite crucial to tackling such
problems I think. Both just to keep you motivated through the process and stop
you from getting discouraged, but also helps you realise when you've stopped
making any progress and should take a bit of a break and come back with a
fresh mind.

Most of the time this skill is entirely useless, but sometimes it really is
quite powerful. I guess working on Matrix is a bit of a special case, but I
would never have been able to sit down and spend weeks trying to come up with
a new state resolution algorithm, to pick one example, without that sort of
experience. I just wouldn't know where to start, and I'd become demotivated by
the end of the first day and likely give up (knowing me).

All of this rambling is to say: I think Maths is really something you have to
_do_. Reading books about it is interesting and great and all, but if you
really want a deeper understanding you have to get stuck, get your hands dirty
and try to solve problems. I don't mean problems where you take that cool
theorem you just learnt and apply it or figure out how to apply, but problems
where you actually have to come with ideas and theories on your own. (Now, I
have no idea how feasible that is outside a formal setting and without
supervisors, but that's really the dream).

I hope that in some ways helps, even if its probably entirely devoid of
practical advice :)

~~~
unbalance
Just wanted to say this was a great answer. As an adult just getting back into
math it is very encouraging and motivating.

------
yizhang7210
I find algebraic geometry really interesting and helps me with my abstract
thinking too.

[https://en.wikipedia.org/wiki/Algebraic_geometry](https://en.wikipedia.org/wiki/Algebraic_geometry)

~~~
Koshkin
Sure, but you may need to learn commutative algebra first...

------
daralthus
Conversely, I seem to have the opposite problem and not being able to work on
anything in the concrete. Always just expanding onto different perspectives
and revelations about the systems I am supposed to work with.

Any advice for that?

------
gcc_programmer
Write down & summarise everything you read. It doesn't have to be thorough and
you don't even have to read it again, but somehow putting it down in words
clears up any unknown confusions for me.

------
jimhefferon
You might like _Teach Yourself Logic_ ,
[https://www.logicmatters.net/tyl/](https://www.logicmatters.net/tyl/)

------
TMWNN
I've enjoyed working through
[https://regexcrossword.com/](https://regexcrossword.com/)

------
watwut
Algebra - group theory. I think that it kind of similar to abstract thinking
in programming, through I have hard time to express exactly why.

------
the_arun
Depends on what you are thinking. Mathematical thinking without emotions - may
yield better algorithms/analysis - consumable by machines - not sure about
humans. Humans need emotions attached to their thinking. Suppose if we are
solving a human problem or building a product consumable by humans - the end
goals are different and attached to emotions - delight/happiness/experience
etc., Hopefully, I didn't misunderstand your question :)

------
hypertexthero
Draw on paper with a pencil.

[https://vimeo.com/6986303](https://vimeo.com/6986303)

------
syndacks
Read novels.

------
dirtnugget
Acid

------
akkuraten
Play Go

------
linus_torvalds
Most competitive programmers suggest Polya's "How to Solve It". His
"Mathematics and Plausible Reasoning" is also good, but longer and more dense.

~~~
mkl
I'm guessing you're not actually Linus Torvalds?

~~~
linus_torvalds
I'm not, and frankly I think I need to choose a new name as I keep getting
downvoted and I believe it's due to the username lol...

~~~
mkl
Yes, seems likely. It makes it look like you're trolling.

------
hartator
Read books.

~~~
ipnon
It seems to me that the original poster is already following this advice.

