Coding is like playing with Legos, except that you get to make the shapes of the Legos, and you can build as many Legos as you want. You build your various legos, then you snap them together to make something useful. You are creating wealth, much like a carpenter takes a block of wood and fashions it into a chair; except that you don't need to buy the wood.
Even better, if someone wants something I made, I can give them a copy of it. It's easy to make millions and millions of copies of the useful thing I built, and let everybody access it. There are problems with this. What if someone has an older copy of my Lego building? What if my Lego building isn't stable and has problems, so everybody has the problems? People in software think hard about these problems and how to fix them.
Making the software itself is also fun! For one, I get to choose the type of Legos I make. I don't just bake a pie, I get to make the pan too. Sometimes it's a hassle, but sometimes the thing I want to build has really neat qualities that, if I choose my Legos right, make building it a joy, like solving a Sudoku puzzle. Paul Graham said that good programmers, much like good cooks, get to make whatever they want, so the challenge for them is deciding what to make, and how they think it would be best to make it.
People are afraid of using computers like they're afraid of learning a foreign language, but I think the difficulties are different. In the long run, learning how to program is more about learning how to use logical thinking to solve problems, than knowing the words to express that thinking. But don't go after just logical thinking - go upstream to how you'd use it. Trying to learn raw syntax and logical thinking without a fun problem to solve is like learning the weight and balance of a hammer without actually using it on a nail. They have Legos but never build anything.
Knowing how to code well makes you feel powerful, probably like how a good artist feels. After all, you get to make whatever you want.