Most developers think that in order to be a good developer, they need to know 10 different programming languages. I wish real life was that simple.
When you start working in real life software, problems in the source code are the easiest to solve, the real problems start to hunt you when you need to think about design, or in most cases, when you don't design in the first place.
Keeping it short, you can't please both Greeks and Trojans. If you try to do that, you can doom your project for that neat little feature you added just because someone asked and you found it cool.
I just finished reading The Mythical Man Month, it was written in the sixties, back then they didn't have these wonderful ultra high level languages as we do today, but still problems in the design phase were worst than coding problems, can you imagine what is worst than reading memory dumps produced by assembly code?
I confess that when I started programming, I wanted to write code, and still want, but I realized that rushing straight to the code writing will give you more headaches and make you lose a lot more time than if you take your time and carefully think about what problem you are trying to solve, but still I always rush into it.
Have you ever get in a discussion that lasted hours and hours and suddenly someone asks "what problem are we trying to solve again?", usually nobody can answer it.
Asking yourself what problems you are trying to solve is indeed one of the best ways to be sure that what you are trying to do is worth it, you need to solve problems, not write code, indeed for a developer it is very difficult to solve a problem without writing code, but that would be heaven, personally I find it more enjoyable to delete code, not write it.
If we wish to count lines of code, we should not regard them as lines produced but as lines spent. (Edsger Dijkstra)
Remember, your purpose is to solve people's problem, not write code, if you keep that in mind, you can produce real software which people would really use in real life, which would solve real problems.
Easier said than done, isn't it?