There is no fixed answer to that question, unfortunately. If you're an embedded systems developer, the chances are that database knowledge is going to be of less importance than if you're a web developer. If you're writing UIs and you focus on the client side, threading is likely to be less useful (and I would argue should be less useful) than it will be to someone who writes middleware for a living. If you focus on high-performance computing and manipulating large data sets efficiently, you need to know your data structures and algorithms more than you need to know about UI design. And so on.
What I would say is that there are a number of things that are common whatever you're doing.
Testing, separation of concerns, intention-revealing code, understanding the functional requirements for an application, understanding what constitutes reasonable performance for a class of applications, communication with others, being able to improve your skills, etc.
Hope that helps.