I started University at 24. Couldn't program, was quite bad at math. Learned logic the hard way, by grinding it. I'm 30 now, I'm very good at both math and programming, even published a paper. But I didn't do a PhD, turns out that I don't like academia.<p>I have 500 medium and hard leetcodes solved in the last year. Before I started grinding leetcode, I was terrible at leetcode (who would've thought). Same for Systems Design. I was terrible at it, got my ass handed to me in the first interviews it showed up. Okay, fine, go to the internet, find exercises, go through it. Learn the terms, the systems, the examples. Practice, practice, practice.<p>Nowadays, I pass leetcode and systems design interviews without a sweat. Behavioural interviews? Always the same shit, interviewers always want to hear the same boring story how magnificient you are but still humble and a team player. So you practice on 10 stories 100 behavioural interview question and focus on impact and teamplay. Takes a bit of time, but after that it's just choosing the right story at a given interview, easy.<p>Got an offer from Adobe which I rejected becasue they didn't offer full remote and got very far in the Google interview shortly before I stopped it, because they didn't offer full remote. Surprise, I'm now working full remote as a backend Software Engineer.<p>I have a ~50h week, of which is ~20h productive coding work, ~10h meetings, ~5h noise, ~15h for self-improvement, including leetcoding, design practice, APIs, frameworks, programming languages, general tech topics and whatever. Compensation could be higher (still, 75th percentile of salaries in my country), but I'm living well enough and can always join big tech later in life.<p>At the moment, I want to figure out if I can manage to build my own thing and life off of it. So, big tech can defintiely wait for another while.<p>What you can read out of that is; it's a grinding game. You suck at something, you start grinding it. Grinding means; do lots of exercises until you get good at it. You are stuck on a problem for 1+ hours? Look up the solution and understand it. Then a day later, you try again without the solution. Rinse and repeat until you are good. It costs a lot of time, especially at the beginning, but eventually, it gets easy.<p>People doing math and coding olympiads invest a lot of time into solving problems that prepare them well for those kinds of olympiads. There's prodigies, sure, but even they need to grind. If you don't want to invest the time to grind, that's fine, but there's no way around it. There's no shortcuts in life, especially if you're not born rich.