I always struggle a problem of finding a new idea to develop an application to practise new concepts and enhance my skills in new technologies. Everytime I look for something new to do and get a great app the motivation decreases by the time and I said there is an existant application. What is the new thing that I will add into my app!! Thus, I gave up and I didn't continue it. What are your solutions or suggestions for this issue?
"...there is an existant application."
Back when I was in undergraduate school, I sometimes proved math theorems in a fashion different from that in my textbooks. For instance, as a young wannabe-mathematician, I was not in love with proofs by inductive reasoning (I outgrew that - kind o' like recursion in programming...once you REALLY get it, you love it). When only an inductive argument was provided for some theorem, I'd construct a deductive alternative. I discovered that textbook editors pick proofs to minimize page-space. Induction is usually smaller than deduction.
Back when I was merely an applied mathematician, doin' math-for-food in the insurance sector, I still enjoyed generating the occasional proof. What to prove was often new-to-me - not necessarily new-to-the-world. However, I had that old habit from school of proving theorems, lemmas, assertions, etc. just to reassure my confidence in my understanding (OCD much?). With a more infant Internet ('80's) not yet providing ALL existing math knowledge, I often didn't know whether some conjecture that arose in the context of my field had already been proven, but I needed a convincing demonstration...time to sharpen a pencil (?!?) and think.
My point is that whether some formulation of a solution (read app) to a problem already exists should not preclude revisiting the issue (read new app). The new solution may be superior or may simply offer a new perspective.
It's hard. Materializing new ideas is a skill on its own, and it requires practice.
I'm a big fan of Seth Godin's "ship it" mentality. When you work in a new idea, set up a goal from the beginning (e.g. write a blog post, build an MVP of a mobile app...), and push yourself to finish it. You don't have to make it public if you don't want, but make sure that you "ship it". You learn a lot by doing something from beginning to end (plus, it feels great!).
Instead of trying to create a new stuff, choose a open source project with what you want learn to do and contribute to it. Being a part of a community who works on the same project boosts the motivation.
Matthew Cory
Tagline not found.
If I could tell you how to come up with a new idea that no one else has, I would just come up with the idea myself ;)
However, I would recommend splitting your problem up. If you're trying to learn or practice a new technique, then focus on that by working on something that's not new - that way you can make sure that you're doing things right. And if it's something you've done before, you can also see if the new technique is actually an improvement or not. For example, when I sit down to try out a new language, the first things I'll try is to write out some of the standard basic data types - linked list, binary search tree, stacks, etc. That gives me a reasonable feel for how that language compares to one I'm familiar with. Write a to-do app, or an address book, something basic that you can scope out quickly and if you were writing it with stuff you were familiar with you could crank it out in an afternoon or two. Then you can see if the technique (or language or library or whatever) is even worth pursuing.
If you have a new idea to work in, and you have a new technique to try out, then when you run into problems is it because of the nature of the idea, or the new technique?
Also, just because your idea isn't new doesn't mean it's not worth doing. Don't look at it as reinventing the wheel, look at it as building a better mousetrap. Hell, you can even be more blatant than that, especially if you're just trying something out. Take an open source project and rewrite it from scratch. Especially if it's a different language. Take MySql and rewrite it in Node, or take something like Angular and rewrite it for JavaFX.