As a software engineer I've found that it takes three things to be successful in this industry. First, the ability to adapt to the situation is crucial. While a technical background is very important, one of the greatest strengths is the ability to assess a situation and develop a plan that best fits the requirements. Secondly, self-time management is important. The best engineers I've worked with are able to be given the task list assigned to them and determine the best way to prioritize their workload. Lastly, the attention to detail must be there. Software is not forgiving. While software development is somewhat of an art and a solution can be derived in different ways, it's imperative that every detail of the requirement is satisfied.