When we talk about technical skills, we are talking about Technology Competencies. I shall describe these in terms of three classifications, the first being the bear minimum that is expected, the second being representative of someone with satisfactory skills and the third being the required to be a leader or innovator in the field.
A. As a minimum:
- Has been a specialist in a given technology and has worked with that technology on a day to day basis.
- Currently can be considered a generalist with a very broad understanding of technologies from a vendor neutral viewpoint.
- Is respected by developers on a technical basis.
- Has current skills that allows them experiment with technologies and prototype ideas.
- Can contribute to the development of a system.
- Has an detail understanding of the application domain.
- Has had ownership of at least a part of an application design.
- Can deal with technical problems that are not clear or clouded by a number of factors.
- Understands the concept of abstraction and is comfortable with creating abstractions to solve problems.
B. In addition to (A) above the person with satisfactory skills would:
- Has a broad and deep knowledge of a number of technologies.
- Is able to assess the maturity of a technology against a business's requirements.
- Is abreast of the latest technology developments and research.
- Has had experience managing a commercial application development.
- Ability to work closely with developers to understand key elements of critical technologies.
- Does not work at a code level day to day.
- Has designed a commercial mission critical application.
- Can handle high amounts of ambiguity and movable goal post.
- Can proceed at an abstract level but has the ability to drill down to detailed technical level as required.
C. In addition to (A) & (B) above, the person can be considered a technology leader or innovator:
- Can easily integrate key principles with new technologies.
- Can invent new technologies or apply existing technologies in new innovative ways.
- Can see market opportunities associated with new technologies.
- Has had extensive developer experience over a industries and situations.
- Has implemented and integrated opposing architectures in a complex organisational setting.
- Has worked if not in all then many of the roles within a development team and understand the challenges that face people in those roles.
- Understands the market offering of the organisations it's business model and its tactical and strategic advantages.
- Is able to resolve ambiguity and uncertain situations.
- Outstanding at working an abstract level across the organisation in a manner that can be directly linked back to technical details.
So as you can see the required skills go beyond coding ability and in may way coding is a cake walk compared to the other issues.