I'm not even sure if this can be an objective topic but I have been thinking about this for a while with out any concrete points beside that the engineer/developer should be analytical, have the ability to adjust to different environments (flexible), and be a fast learner (which partly ties into being flexible).