I have learned from my previous mistakes those I've seen from other people here.
First I would say get a story together that you can reasonably implement in the Pokemon games. Make a storyline map or similar that walks through most of the events the player will encounter in order. With this comes character design, worldmap design, what Pokemon you will implement in your region, etc. Really put some effort into it and make something that you see yourself finishing by yourself. Don't rely on having others to help finish it.
Next comes with learning the skills needed to implement your ideas. Scripting, Mapping, Spriting, working with Hex, and being able to find and research information. If you can't at least get the basics down in those categories, you are gonna have a pretty hard time getting very far in your hack. This also includes choosing your ROM base. Most common is Fire Red, then Ruby, and sometimes Emerald though not that common. Most choose Fire Red because of the wide spread information that is out there. But then this also curbs originality because most things that can be easily implemented have been done before. I chose Emerald because I personally wanted to find out more about it because there is little to no information publicly posted. This became a problem with finding offsets for things and also finding palettes. But because of that it taught me how to use VBA to find images and palettes and search using a Hex editor for the information I needed. If I had began working with Fire Red I would have just looked here and not have taught myself a very fundamental aspect of ROM hacking.
Personally since I have started hacking again, I have been taking a more systematic approach. I started at the boot screen, edited the intro animation, changed the title screen, then changed the professor intro before I even began mapping and scripting. This allowed me to hack my ROM "in order" from start to finish for better thought organization. I also keep track of every modification I make to my ROM in what I call my "Captains Log" so can review modifications later if a problem arises. This also includes organizing what I put in the free space. I organize and keep track of what I put and re-point to the free space so I can easily locate, move, or change what I need to quickly. This leads to a cleaner working environment so I can pinpoint problems areas easier if they arise.
Finally, don't rely on tools. If you can want to change something simple, edit the value with a hex editor. Mapping with A-Map, Pokemon editing with YAPE, and sprite editing with NSE are understandable because those are very tedious things to do and the tools are reasonably helpful. Strive to implement new features that you thought of yourself to make a truly innovative hack that is fun to play.
TL;DR: Be creative, learn different skills, organize, don't rely on tools.