I'm a computer science student and I consider myself good at coding, that is, designing the structure of programs, utilizing abstraction, managing states, and other OOP concepts(that's what I'm familiar with, I've started looking into functional programming). But I'm not very good at competitive coding.
Some of my classmate are good at competitive coding but the 'software' they create is just horrible (nested if/for/while blocks which are 5 levels deep, overly complicated code, stuff which can be simplified by just throwing in some POJO's).
Is the fact that I'm bad at competitive coding a symptom of something serious (weak foundations in algorithms/data structures)? Am I missing out on something?
If you are bad at competitive programming, it most likely means you don't truly understand algorithms/data structures, and you have a weak problem solving foundation. It's harsh, but it's most likely true. The good thing is that you can improve your problem solving skills depending on the time you spend.
Does this affect you? If you want to work at FB/Google/Microsoft or any Big 4/FAANG company, you will need to be at competitive coding to some degree since all the interviews are based on these types of questions. If you want to excel in your job/get promoted quickly/go into management, then obviously other qualities and skills, especially networking, are 10x as important. But at the same time you will need to jump ship periodically to advance quickly in your career, which will require staying sharp and constant interviewing.
Overall, if you're an ambitious person that wants to excel in SV, competitive coding skills are paramount for interviewing. Of course, there are other ways to "make it": start-ups -> getting acquired/IPO/becoming a VC. So you don't need to go to FAANG. For those things, skills like people selection/business prioritization are 10x more important. If you don't give a shit about status/money, then you don't need to care about competitive programming because lower-tier companies won't care too much about that.
The bottom line is that it's not hard to learn OOP concepts/structure/abstraction or fucking whatever other coding guidelines there are. It's just a bunch of best practices. If I had to say it in one line, it would be that if someone is good at competitive programming, they can get good at designing software. The opposite is not necessarily true, because problem solving isn't something you learn in a day. So there will be more demand for people that are good at problem solving, who will be valued higher. Hope this helps.