What you seem to assume is normal is some kind of career hell I would never want to be in (nor have ever been in).
During my first internship at a "normal" corporation, I felt exactly like septerr does now. I can't imagine following the career path most programmers go down, even if it is going to pay well. How did you avoid (or is it even possible to avoid) going through that corporate phase and skipping right to working on something that you may love but may harbor more intrinsic risk?
I have gaps in between every job I've ever held, but those gaps are strategic. In them, I figure out what I really want to do, and whether I have the tools to do what I really want to do. I applied to YC's first class of S05, as I was finishing up college. I didn't get in. I figured that if investors wouldn't talk to me, I'd learn how to do a bootstrapped startup, so I went to work for a bootstrapped financial software startup. After 2 years there, I quit and founded my own bootstrapped startup, this time in Web 2.0 casual games. It failed too. In examining the failure, I figured that I lacked enough real-world experience to understand what the real markets were, I'd exhausted my pool of potential co-founders, and I had this continuing anxiety about how to do software development "the right way" and make programs that scale. So I moved out to California to work for Google Search. I'm on my own again, but I got everything out of Google that I hoped to get out of it (and more!).
If you're doing it right, each job is an opportunity to get a lot more than money. It's a chance to build technical experience, to challenge yourself, to look at how people with way more experience than you make decisions, to understand how an industry works, and to see how an organization fits together.
It reminds me of my favorite quote from one of the best books about building any type of "Professional Services" company:
"The health of your career is not dependent so much on the volume of business you do, but the type of work you do (whether or not it helps you learn, grow and develop), and who you do it for (whether or not you are increasingly earning the trust of some key clients). In any profession, the pattern of assignments you work on is the professional development process - you just have to learn how to manage it."
First, you'll want to become a expert in your company's product domain. This will make your creative flashes much more relevant, and therefore more likely to see the light of day.
Second, start small. Use your own time to create a new tool which you know your team will find useful, and use the opportunity to teach yourself something new while you're at it. After a few successive wins you'll be allowed more and more leeway to apply your creative energies during company time, and the impact of your successes will grow.
Third, don't ask your manager for permission to work on Side Project X, at least not until you have somewhat of a reputation for delivering useful innovations. It truly is easier to beg for forgiveness than to ask for permission.
Lastly, give your colleagues a sense of ownership. People tend to be much more supportive of innovations that they feel they're a part of.
As someone almost as old as jblow who has worked across a wide gamut of different companies from very small to very large, this is sometimes true, but is by no means universal.
You would rationally think that if you are directly improving team productivity, customer satisfaction and the bottom-line that'll earn you more autonomy, but office politics are not always on the same continent as rationality.
You have to remember that if you're not the owner of a company, you have no rights to the products that company makes. Whatever privileges you have you keep by the grace of the owners, and when they change ...
Ofcourse, if you're the owner you're unlikely to actually be able to write code all the time, having to deal with the soft parts of the business. The grass is always greener on the other side I suppose.
My first job was a 16 person company doing industrial automation. I was a first-year CS student. They let me write their TCP/IP stack. Second job, TA at the mechanical engineering dept. They needed visualization software for their work on the European space project. Third one, 10-person company writing one of the very first CD recording tools, with prototype hardware.
I was lucky. Each of them was willing to take what in retrospective looks like a huge risk on me. I was crazy and just said "sure, I can do this" to those jobs. I was learning a lot, fast.
But the beauty was, I had no career to consider. Had I failed, it would've been OK - when you're new in the field, that can happen. You'll have to find a new job, but nobody will be surprised if you have quite a few jobs when you start out.
That's when you take the risks, go for the crazy things.
When you're a decade or two (or almost three. Jeebus!) into your career, it's a different proposition. At that point, you get hired for the experience you bring. Taking crazy risks is something that most companies would like you to avoid. (I'm blessed. My current employer still lets me take risks. I just spent 4 weeks in a code base I never touched before and have things in production now :)
Did I love working on the things I started out with? Not really. But I loved being pushed to my limit. I still do. So how do you skip the "corporate" phase?
By taking a job that's outside your comfort zone. Your own startup or smaller employers are your best bet for that. But there are big companies that let you take risks, too.
Ultimately, it's a balancing act. How much safety in your income do you need, and how much risk are you willing to take? If you can push the risk side, it'll lead to more interesting jobs.
Maybe not exciting, but it never sounded "soul crushing". I never really expected to be having a blast at work; it's just a job. Should I be expecting more?
Starting a startup really sounds like more stress and annoyance than "fun" to me personally, after reading stories of them on this website. Are you sure the "more risk" one is worth it? Corporate programming work really doesn't seem that bad from what I've heard of it realistically, despite how derided it is here. Startups on the other hand sound like killing yourself by programming 13 hours straight every day for some company that's probably going to fail and getting below-market pay compared to the easier and better-paying corporate side.
I do hope you are wrong.
Anything else you get is a bonus.
Far too many people are concerned with the anything else part, and it reflects the enormous privilege we have today in western society.
Some of them are great employers. Some of them are terrible. But none of them will feel like working for a large corporation.