- Self motivation
- Communication Skills
- Understanding of the key principles (TDD, SOLID, DRY, KISS, Design Patterns)
This is probably is most important requirement. As well all know, every few years, the whole industry landscape changes and if you are not prepared to keep learning, you may as well give up now. If you are not motivated towards continual self improvement, you will always write the same old sloppy code, you will become bored and the amount of bugs you write is only going to increase.
Communication Skills *
Finding a committed and knowledgeable developer who can articulate them selves well, to project managers, client service and clients is hard, but vitally important. We all know the stereotype, but it can so often be true. In the old days, the developer would often just be given a big requirements document and locked in a room until it was done. The role of a developer has changed somewhat since the advent of agile methodologies though. It is all about constant feedback and refinement. If you can not sit in a planning meeting and help create the stories and acceptance criteria, your career progression will be limited. You will just be seen as an obstacle to the people you are trying help.
Understanding of the key principles
The most common misconception is that knowing the minutiae of some framework / language is the most important thing. It is perhaps the most irrelevant. I consider myself to be a reasonably competent developer ( I am sure some would disagree!), but I still continually have to look up things on a daily basis. It does not make me any less proficient. Perhaps 20 years ago before the emergence of every developers best friends, it was, but not any more.
Forget syntax, once you know the majority of the (current) principles and patterns, I know you will write good code. The last stage of the interview process where I am now requires you to take a small practical technical test. It will be a reasonably trivial problem to solve and there is no time limit. I don't care if you can not get it working completely. I'm more interested in how they started to abstract it and whether they wrote any tests.
* I am well aware that there are probably hundreds of grammatical errors in this post. I assure you, they are all deliberate.