I've been programming for a while, I am now 26. Although I've only have 2 past jobs in small companies, I've recently transitioned to a larger company where I'm doing 100% programming (where in my former jobs I would usually be programming 75% of the time and doing support/it stuff the rest). I'm having trouble working with a larger code base where much of it is legacy, complex and difficult to grasp. Although I get the job done, it just takes longer than expected and there is usually a better way. I think I have a good understanding of software principles (OO, SOILD, design patterns), however, I'm wondering if programming is the best career for me. It seems to me I work my ass off trying to understand the system while others are kicking back and making it sound easy. What is the best career move in this situation? Put more effort into learning how to program better (including estimating time better, working with multiple layers of code, etc...) or change my career into something else like IT, front end dev, consulting or tech support?
I also hear people say you need good math and debating skills for programming, I'm not very good at either, although I know I can improve, it will just take time and I want to know that 10 years down the road, the investment will be worth it or not.