I write a lot of open-source software and prospective users often ask whether it's possible to do [thing they want] with it. I tell them that of course it's possible -- just probably infeasible under reasonable constraints.
This is a slightly edited response I recently wrote to someone who asked how to learn skills that would be useful at a hackathon. It's my usual response when someone asks how to get started programming.
You should start by approaching the problem from a different perspective. You should be thinking "I want to build X. Now what do I need to learn to build that?" not "I want to learn to build stuff. What can I learn?"
The other day I read an article about global warming, and something about it keeps bugging me.1 My initial reaction was that someone would figure it all out; someone always does. But "someone" doesn't seem to be getting very far this time, and this is a big, important, world-changing problem. So, I thought, why is that "someone" not me?
A lot of people think about programming as some huge, difficult discipline that you sit down and learn like you would learn History or Math. I think I'll learn how to code today, one might say, and I've really been looking forward to that quantum physics class.
Here's the thing: almost no one learns how to code in a classroom, by hearing about it or by reading about it. People learn how to code by doing it, like driving a car. But most people learn how to drive a car because it gets them from Point A to Point B, not because driving is fun. Lots of people drive for fun, but hundreds of millions of people slog through traffic on their way to work every day.