As a discipline, we're too young and our technology is too immature to support a true split between engineering/science and computer programming.
If you want to work on interesting problems you're passionate about, there's a few ways to do it.
First, you can do research. Years ago I joined a lab as a professional researcher to follow my passion for machine learning and sensor networks. It's not the easiest path, but labs need disciplined programmers to complement the skills of PhD students.
Second, you can consult. If you're passionate enough about a topic that you have encyclopedic knowledge, I guarantee there's someone out there who will need that expertise and will pay for it. It might not cover all your bills, but it gets you exposure (and potentially a job if they need your skills a lot).
Third, you can start a company. I followed my passion for the challenges of learning from sensor data at scale into entrepreneurship and eventually started a company, http://sentenai.com . As a technical founder, I chose carefully the technologies we use (Haskell) and the problem we were tackling (making it fast and natural to combine multiple sources of time series data and find temporal patterns). You still need to solve somebody's problem and build a business, but you can at least lay the foundation.