A good developer is a person who's good at
reverse engineering reality into code.
Someone who's able to
handle any programming language after a few google searches.
One that understands logic and is able to
pick the right tool for the job, be it Assembly, C, Java, Python, B4X, HTML, Javascript, Ruby or COBOL.
A person who doesn't try to reinvent the wheel, but at the same time, is
not afraid to explore new possibilities.
Finally, someone capable of
dynamically adapting to any situation, in order to get the job done.
Basically, a
ninja.