The definition of "good developer" depends greatly on the context and environment.
Based on my experiences in many different teams, I would suggest two critical attributes:
1. Strong knowledge of all core principles: computer architectures, operating systems, networking, etc.
2. Solid domain knowledge, e.g. supply chain, accounting, insurance, industrial control, etc.
Naturally a "good developer" is also conversant with several programming languages, frameworks, libraries, etc. But technical skills without domain knowledge limits opportunities.