One interview question I used to ask of developers: "What one characteristic is the most important for software developers?". The actual answer didn't matter too much as the justification and follow on. One response that I like is tenacity.
As a software developer you spend all day solving challenges, it's mentally challenging and hard work. As soon as you are faced with a problem you start finding solutions and keep going until you've got one. That takes tenacity.
tenacious |təˈnāSHəs| adjective tending to keep a firm hold of something; clinging or adhering closely: a tenacious grip. not readily relinquishing a position, principle, or course of action; determined:
I think tenacity is important, you need it to keep focused. Some problems aren't simple, the answers don't come easily and all too often people look for the easy way out.
But take the other side. Once upon a time I used to work on Plone. Plone wasn't an easy system, we were making it up as we went along and some things were pretty complicated.
Clients would ask us for solutions and we'd sweat for hours, sometimes days, on how to make simple changes. "Move that thing from that part of the page to the other? Sure, how hard can that be?"
When we worked our way through the overly complicated solution there was an amazing sense of relief at satisfaction at what we'd done. It was amazing, the work we were doing and we felt great. We had brains and tenacity. We were awesome and smart.
Then I stopped doing it. Later I looked back and realised it wasn't always awesome. We were caught in a tangled web of ideas and concepts - some of them half baked, some of them over-engineered, some of them for completely different purpose and some of them were just down right crap.
But the feeling was great, we were getting stuff done despite all this. Were we though? We'd fallen into a kind of development Stockholm Syndrome. The code was too complicated, too convoluted and we spent hours fighting it and loving the feeling of mastery it gave us when we kicked it's butt.
It was an illusion. Just because something is complicated for you to learn and do doesn't mean its right and doesn't give you job security or satisfaction in the long run.
Eventually someone smarter than you will figure out you are being an ass and build the right tool for the job and then kick your butt. The fighting every day was a path to ruin.
I'll still take tenacity as an answer, you need it. Just make sure it doesn't become stubbornness.
stubborn |ˈstəbərn| adjective having or showing dogged determination not to change one's attitude or position on something, esp. in spite of good arguments or reasons to do so