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)
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 :) )
I added a math degree to my CS degree (which also added a year, but I was going to be a year late graduating anyways). So I took a lot of courses in math my last two years. The three that made the biggest difference for me were:
Set theory: Covered proof construction in a deeper fashion than high school geometry and was the first proof-heavy math course I had taken in college (others used them and expected regurgitation, but did not expect construction; this was my first math-major only course).
Later I took both Abstract Algebra and Linear Algebra (high level) together. I wasn't struggling in either, but in my mind they were two separate courses. One day we were doing a proof in Linear and I realized I'd already done it in Abstract, only we had been dealing with (I don't recall what) some other objects than matrices or vectors. What I realized then was that we were dealing (in both classes) with a class of objects and operations on them that were the same in the abstract, but different in the concrete (if you wanted to actually apply the math to solve a problem). Given the right perspective, I could apply the proofs of one to the other so long as the objects had the same properties the proofs relied on. Both classes became a breeze after that because, coincidentally, the order the material was covered in meant that every other week one class had been largely covered by the other when viewed in this fashion.
I totally feel that last bit w/ Linear. I took it with Data Structures/Algos, which was fascinating! In one class, we had a guided lab that was (basically) implementing PageRank, while in Linear we were approaching that problem _entirely_ from the theoretical perspective.
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.
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.
I'm 20 years out of school, so unfortunately not very qualified to answer that question. I took a look at the 3Blue1Brown videos but it seems he focuses on subjects other than algebra.
I will say that high school math is very different than abstract algebra, and in some ways abstract algebra is simpler.
I heard a long time ago that in France they teach some abstract algebra to 10 year olds??? They are simple concepts that don't require much background knowledge.
I actually got a little bit of it in 6th grade. I remember doing some optional assignment that introduced the idea of functions as things you can operate on, rather than things you just apply to concrete data. In other words, higher order functions.
So everybody knows you have numbers and operators:
1 + 2*3 = 7
Well functions are also algebraic objects, with operators, e.g. 'o' is the function composition operator, so if you have functions f and g, f o g is also a function.
I think 20 years ago, programmers didn't think like this. These days, many programmers do, whether formally or not. JS/Python are more flexible than C or BASIC in this regard (and Haskell, Lisp, etc. even more so). So this is directly applicable to programming and it's worth a little bit of study. You probably know it, but seeing the mathematical view will make the reasoning more fluid.
It's not just functional programming either -- I don't use functional languages currently, but I use the ideas. I think that most people use inheritance poorly and I suspect that knowing algebra helps you "factor" code correctly.
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
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 :) )