Hiring a developer is often an arduous process. It's worse when you're not technical yourself. You may not even know what to look for when hiring a developer. Sometimes you may even feel like you need to hire a developer to hire a developer (not a bad idea).
I'm going to list out what I've observed over my 10 years of working professionally with software developers and as one myself.
Here are the 11 signs you should look for when searching for a great developer:
They ask you questions
This is probably one of the most important things that a developer should do and despite that, not all of them ask as many questions as they should. A great developer will ask the right questions to make sure everyone's on the same page.
Doesn't always say yes
A great developer isn't a pushover. They know when to say no, especially when saying yes will put a project at risk.
Will give you references when asked
A great developer will have evangelists because they seek to do the job right. If you ask for references they'll gladly share them with you.
Has an active Github account
This isn't 100% representative of a developer's abilities because there are times where the majority of their work is under NDA. This is a completely normal occurrence. Having said that, a developer with an active Github account can indicate a number of things: they are on top of best practices, give back to the community, and at least are competent with version control.
Experience in at least 2 programming languages
A great developer will not stick to just 1 programming language. Knowing only one is risky. You can get stuck with thinking one dimensionally. "If all you have is a hammer, everything looks like a nail." A developer with experience in more than one language can solve problems in multiple ways, often times more efficiently. They can also use the right tool for the job.
Experience shows depth and breadth
Depth is deep experience in one topic. Breadth is basic knowledge in a wide variety of topics. A great developer has both. They'll have depth in maybe 1 or 2 topics and breadth in the rest. The topics they have depth in can shift over time to reflect the needs of the market. They are usually aware of what's in demand and jump into it when necessary. They also don't chase everything new and shiny and seek to have depth in topics that are more important.
Actively contributes to the tech community
Whether it's writing Open Sourced Software, speaking a local tech meetups or conferences, writing books or blog articles, answering questions in online communities, a great developer will most certainly give in some way, shape, or form.
Works on side projects
Side projects allow freedom to explore new technologies and techniques. This freedom is less prevalent during "work hours" which is why a great developer will schedule time to experiment and improve their skills.
It's just not possible to stay up to date if you don't continually learn. A great developer always learns. It doesn't stop in boot camp, or Comp Sci. It's a career choice to stay on top of their game.
Communicates technical terms in simple ways
Communication is inherently difficult. Communicating technical terms to someone who isn't technical is a huge marker of competence. It's easy to explain your favorite build system to your programmer buddies. It's immensely more difficult to explain the same to an entrepreneur that doesn't have a background in Computer Science.
Experience in projects similar to yours
This isn't always a key marker, but if they've done a similar project in the past they're going to understand your needs better and potentially solve the problem quicker.