At age 19 I decided to study mathematics independently, without trying to obtain an academic degree. My goal was to learn mathematics as deeply and as efficiently as possible, as long as I'm still young. I've used books, online materials and video courses from a university, as well as auditing university courses. The freedom from having to conform to academic conventions was very helpful for me in my studies.
After 2 years, at age 21, I came to the conclusion that I've studied enough mathematics. I felt that I have mastered the ability to create a suitable mathematical construct for any problem I might encounter. To that extent my math studies were a success. At that point I felt the urge to apply these skills to something more practical.
Therefore, at age 21 I have started studying physics, independently as well. The goal of my physics studies is to understand the laws of the universe. The learning methods were a bit similar to those I used in mathematics, but with physics it was less about absorbing information and more about creating it.
At the same time I started studying physics I also started programming again, using Python. It was important for me in order to program physics simulations, which for me are a critical part of physics research.
I have studied physics for about a year and a half. I've reached some deep understandings and authored a paper.
At age 22.5 I had a problem. I've been doing a lot of simulations for my physics research, but the way I've been doing them was very inefficient. I was wasting a lot of time, the code was complex. Every time I wanted to change things or move objects around I had to do too much coding.
I decided it's important I have a framework for working with simulations which will make it easy to manipulate simulations with minimal friction. I've searched for one, didn't find any, and therefore started my own – I've called it GarlicSim. This is currently my main project.
You can track my progress on the GarlicSim blog.