Successful software developers possess a range of technical and non-technical skills. Technical skills include programming languages, software development tools and project management methodologies. Non-technical skills include communication, problem-solving and critical thinking. Additionally, software developers must have the ability to learn new technologies quickly and adapt to changing requirements.