School is a start. You can't learn everything you ever need to know in 4 years. I was fortunate enough to work with some very good programmers very early in my career. I knew C pretty well, and could structure small applications (as any reasonable CS program should be able to teach you). But the skills to write the larger apps come with time and experience.
There are some amazing bits of code in relatively mundane programs. Seek this out in what you're already working on, and figure out why the programmer did it that way. Ask him, ask if he'd do it differently now. Some people will find this annoying. Others will admire your curiosity and help you out.
That said, I think you'd be surprised what you've already learned at work.
Never trust anyone who says money is no object.