https://simpleprogrammer.com/2012/12/09/the-4-most-important-skills-for-a-software-developer/
https://www.eskimo.com/~scs/cclass/progintro/sx1.html
ability to abstract, think on several levels
This is probably the most important skill in programming. Computers are some of the most complex systems we've ever built, and if while programming you had to keep in mind every aspect of the functioning of the computer at all levels, it would be a Herculean task to write even a simple program.
One of the most powerful techniques for managing the complexity of a software system (or any complex system) is to compartmentalize it into little ``black box'' processes which perform useful tasks but which hide some details so you don't have to think about them all the time.
http://www.rasmussen.edu/degrees/technology/blog/5-soft-skills-programmers-need/
Innovation - Job requires creativity and alternative thinking to develop new ideas for and answers to work-related problems.
Independence - Job requires developing one's own ways of doing things, guiding oneself with little or no supervision, and depending on oneself to get things done.
Dependability - Job requires being reliable, responsible, and dependable, and fulfilling obligations.
Leadership - Job requires a willingness to lead, take charge, and offer opinions and direction.
https://job-descriptions.careerplanner.com/Computer-Programmers-3.cfm
2) Critical Thinking -- Using logic and reasoning to identify the strengths and weaknesses of alternative solutions, conclusions or approaches to problems.
3) Complex Problem Solving -- Identifying complex problems and reviewing related information to develop and evaluate options and implement solutions.
4) Active Learning -- Understanding the implications of new information for both current and future problem-solving and decision-making.
6) Learning Strategies -- Selecting and using training/instructional methods and procedures appropriate for the situation when learning or teaching new things.
8) Active Listening -- Giving full attention to what other people are saying, taking time to understand the points being made, asking questions as appropriate, and not interrupting at inappropriate times.
9) Technology Design -- Generating or adapting equipment and technology to serve user needs.
10) Troubleshooting -- Determining causes of operating errors and deciding what to do about it.
11) Coordination -- Adjusting actions in relation to others' actions.
12) Time Management -- Managing one's own time and the time of others.
http://techbeacon.com/7-bad-habits-highly-ineffective-software-engineers
1. Lacks passion
2. Dislikes testing code
3. Believes usability is a four-letter word
4. Likes to say "no"
5. Dislikes learning and avoids curiosity
6. Doesn't play well with others
7. Doesn't care about security
https://www.eskimo.com/~scs/cclass/progintro/sx1.html
ability to abstract, think on several levels
This is probably the most important skill in programming. Computers are some of the most complex systems we've ever built, and if while programming you had to keep in mind every aspect of the functioning of the computer at all levels, it would be a Herculean task to write even a simple program.
One of the most powerful techniques for managing the complexity of a software system (or any complex system) is to compartmentalize it into little ``black box'' processes which perform useful tasks but which hide some details so you don't have to think about them all the time.
http://www.rasmussen.edu/degrees/technology/blog/5-soft-skills-programmers-need/
Soft Skill #2: Effective delegation
No matter how skilled you may be with the hands-on work, once you reach a management position you won’t be able to do it all. Being able to delegate work is a soft skill every manager needs, and the key to it is being able to break down a large project into smaller pieces.
https://www.entrepreneur.com/article/24064410. A business perspective.
It’s easy to lose sight of the big picture while focusing on creating one piece of software. The ideal programmer has a business focus that allows him to move beyond the current application. A business-focused programmer will suggest ideas for new applications that can improve operations.
Sample interview question: Have you ever made a suggestion that improved a business’s processes?
15. Respect for deadlines.
Most programmers work on projects with deadlines. While it’s important that managers understand a reasonable turnaround time for coding a new application or repairing an existing one, programmers should also show respect for deadlines. It’s important to determine that an applicant will do everything possible to meet assigned deadlines.
https://www.mymajors.com/career/computer-programmers/skills/Innovation - Job requires creativity and alternative thinking to develop new ideas for and answers to work-related problems.
Independence - Job requires developing one's own ways of doing things, guiding oneself with little or no supervision, and depending on oneself to get things done.
Dependability - Job requires being reliable, responsible, and dependable, and fulfilling obligations.
Leadership - Job requires a willingness to lead, take charge, and offer opinions and direction.
https://job-descriptions.careerplanner.com/Computer-Programmers-3.cfm
2) Critical Thinking -- Using logic and reasoning to identify the strengths and weaknesses of alternative solutions, conclusions or approaches to problems.
3) Complex Problem Solving -- Identifying complex problems and reviewing related information to develop and evaluate options and implement solutions.
4) Active Learning -- Understanding the implications of new information for both current and future problem-solving and decision-making.
6) Learning Strategies -- Selecting and using training/instructional methods and procedures appropriate for the situation when learning or teaching new things.
8) Active Listening -- Giving full attention to what other people are saying, taking time to understand the points being made, asking questions as appropriate, and not interrupting at inappropriate times.
9) Technology Design -- Generating or adapting equipment and technology to serve user needs.
10) Troubleshooting -- Determining causes of operating errors and deciding what to do about it.
11) Coordination -- Adjusting actions in relation to others' actions.
12) Time Management -- Managing one's own time and the time of others.
http://techbeacon.com/7-bad-habits-highly-ineffective-software-engineers
1. Lacks passion
2. Dislikes testing code
3. Believes usability is a four-letter word
4. Likes to say "no"
5. Dislikes learning and avoids curiosity
6. Doesn't play well with others
7. Doesn't care about security