Author: Sanjay Goel, http://in.linkedin.com/in/sgoel
Summary of various recommendations about desired competencies of software developers(alphabetically ordered)
1. Ability to accommodate himself to others, empathy, “be the customer” mentality – genuine interest in understanding what other people are trying to accomplish and based on this understanding think about creating technical solutions to help them reach their goals. Genuine interest in understanding “why to create software” and the broader context of software systems. Cognitive task analysis. Appreciation of unstated requirement and ability to identify these. Listening skills, approachable, and respect for people. Ability to work in homogeneous, multi-disciplinary, multi-locational and multicultural teams. Ability to work under supervision and constraints, Understanding of the impact of personal character and behaviors on others.
2. Ability to apply knowledge, ability to integrate the application of knowledge, skills, and sense of responsibilities to new settings and complex problems.
3. Ability to see the self as bound to all humans with ties of recognition and concern. Seek help from other, Ability to help and assist others, mentoring, commitment to others’ success. Sensitivity towards global, societal, environmental, moral, ethical and professional issues, and sustainability. Respect for the intellectual property of others. Work ethics.
4. Abstraction and transition between levels of abstraction, representation skills spatial and temporal modeling skills, structuring skills, and theorizing.
5. Algorithmic and structured thinking. Logic, pattern matching, logical what-if analysis, problem decomposition and synthesis, etc.
6. Analytical skills.
7. Communication skills.
8. Constructive criticism.
9. Curiosity, interest in ‘how things work’ and ‘how to create things that work,’ interest in the power of technology, humility, observation skills, ability to see things as they are, broader understanding and interests, respect for the classic authors of the great books, openness to constructive criticism, value and readiness for lifelong learning. Active listening skills. Ability to develop a very good understanding of domain specific vocabulary, its semantics, and established thinking patterns.
10. Decision making skills.
11. Design skills.
12. Domain competence.
13. Entrepreneurship, intrinsic motivation to create something, desire to improve things, initiative taking, enjoy challenges, sense of mission, perseverance, concentration, result orientation, commitment, self motivation, dedication, and hard work. Adaptability, flexibility, open-mindedness, and ability to multi-task. Sense of urgency and stress management.
14. Experimentation skills.
15. Good grasping power and attention to detail: breadth, depth, clarity, accuracy, preciseness, specificity, relevance, significance, completeness, consistency.
16. Imagination: storyboarding, extrapolation, visualization, cognitive flexibly: ability to transfer and models of solutions of one situation/field to another, multi-perspective thinking, lateral thinking, inductive thinking, out-of-box thinking, unstructured thinking, creativity and idea initiation, and innovation.
17. Knowledge of contemporary issues and business practices.
18. Knowledge of physical and natural world. Intercultural knowledge.
19. Mentoring, coaching, and training skills.
20. Organizational skills.
21. Persuasion, negotiation, consensus building, and conflict resolution skills.
22. Problem orientation, problem definition and formulation, generations of alternatives. Ability to convert ill-defined problematic situations into software solvable problem. Ability of infusing different thinking patterns developed through their experience in other domains. Inclination for reuse and synthesis by integration. Emphasis on elegant and simple solutions.
23. Problem solving skills: solution implementation and verification.
24. Project planning and management, project scoping, estimation, process planning and management,
25. Quality, cost, and security consciousness, pursuit of excellence, intellectual accountability and responsibility, intellectual integrity, intellectual courage, strength of conviction: assertive without being aggressive. Commitment to systematic documentation of the work. Recognize and act upon the need to consult other experts, especially in matters outside their area of competence and experience. Commitment to the fulfillment of needs of all users and persons who get affected by the technological solutions. Eagerness and inclination to understand the unintended consequences of creating software inappropriate or at odds to its real purposes. Commitment to health, safety, dignity, and welfare of the users and also the people who will be affected by their systems. Sensitivity towards constraints like economic disadvantage and physical disabilities that may limit software accessibility.
26. Reasoning: quantitative and verbal, and critical thinking: ability to question, validate, and correct the purpose, problem, assumptions, perspectives, methods, evidence, inference, reliability, relevance, criteria, and consequences. Numerical ability.
27. Reflection and transition between ladders of reflection. Meta-cognition.
28. Research skills: methods of mathematical research, engineering research, design research, and social science research.
29. Self-acceptance, self-regulation, self-awareness, self-improvement: strength to resist instant gratification in order to achieve better results tomorrow. Being honest and forthright about one’s own limitations of competence. Tendency to avoid false, speculative, vacuous, deceptive, misleading, or doubtful claims. Faith in reason and review, inclination for verification and validation, respect for facts and data. Awareness and regulation of automatic thoughts.
30. Systems-level perspective, ‘big picture’ view, holistic and multi-perspective thinking, knowledge integration, consideration for multilateral viewpoint, and user-centeredness. Process and rule-oriented mindset. Tolerance to ambiguity and risk. Ability to understand and also build upon other’s work. Ability to work such that others can easily understand and build upon.
31. Technical competence to solve the software solvable problems using tools and techniques, Use of open source software. Knowledge of industry’s best practices and standards, appreciation of what is technically feasible. Identify the risk level of each piece of work.
32. Wealth creation skills.
33. Work load management.
I have further restructured these competencies into a three tier taxonomy of twelve competencies at Design of Interventions for Instructional Reform in Software Development Education for Competency Enhancement: Summary of PhD Thesis
For references and further analysis:
1. Sanjay Goel, Competency Focused Engineering Education with Reference to IT Related Disciplines: Is Indian System Ready for Transformation? Journal of Information Technology Education, Vol. 5, Informing Science Institute, USA, pp 27-52, 2006.at http://informingscience.org/jite/documents/Vol5/V5p027-052Goel88.pdf
2. Sanjay Goel, Investigations on required core competencies for engineering graduates with reference to Indian IT industry, European Journal of Engineering Education, Taylor & Francis, UK, pp 607-617, October, 2006.
Keywords: Software Engineering Education, Computing Education, Computer Science Education, Engineering Education, Information Technology Education, Information Systems Education, College Education, Higher Education, Professional Education
also check http://in.linkedin