From my past 5 military deployments it’s not what I would learn. It’s what I would write. On my last deployment I created a new way to perform test automation in the browser that is dramatically faster and more simple than the big tools. I also refined a tiered security model for decentralization. On the deployment prior to that one I made some refinements to my diff application and created a data model for stacked language representation (a uniform less powerful but more scalable alternative to abstract syntax trees)
Thank you for your service. Out of curiosity, are you doing software stuff in the military or is this just a side hobby? If the former, I'm curious to learn about what kind of work you do. If the latter, why did you not go full time into software?
I am a signal officer. I have performed a different job on every deployment. The military is largely allergic to writing software so all the software I write are just side hustles on GitHub. I am part time military and full time software developer in the corporate world.
For culture and not for business learning Japanese at Nara makes more sense but I suppose you need relationships in Society to get connected. Japan being a part of the dishonest decadent West has a fair share of charlatan.
It's hard to justify spending lots of time learning fundamentals while working on real projects. The kinds of things taught in college.
So, assuming one is a programmer, whatever one's weakest areas are: math, algorithms, assembly, operating systems (Linux), networking, distributed systems, electronics, machine learning, etc.
Or if one is already really solid in all fundamentals, and lacking more practical expertise, then a modern popular programming language like TS/JS, Go, Rust.
Or if you just want to learn for fun, I'd read recommend reading a lot of biographies of historical figures. And/or learning a foreign language.
And of course, learning how to cook your own food, exercise your body, and sleep well are probably more important than anything else you could possibly do for yourself.
If your problem has an algebraic structure, you can rewrite your code in many more ways than you could if it didn't.
For instance, associative (not even necessarily commutative) problems do not have to be processed as given, but can be chopped up into hardware-size chunks, each of which is treated in a "flat" manner (ie. suitable for mapping to a warp or loop).
Abstract algebra has a strong crossover into type theory, it you think of types as sets. Maybe not strictly useful while bashing out python code but it's nice to have an elegant mental model
Spending holidays entirely studying security stuffs to sharpen my skills, so a lot more of that. Kernel mode exploitation, mobile forensics and exploitation (beyond msf+social engineering). If i have more time learn ada, erlang and ocaml and then write offensive tools for the sake of it (and to evade detection). Too much shit on my list.
Vulnerability analysis and subsequent exploitation development. I would obviously need way more time than that to be good at it but I've always found the topic interesting.