What is a profession? Is what we as developers do a profession? Why would we care?
In all complex human endeavors, there is value in capturing those aspects of our efforts which have been proven to be universally true. In medicine, for example, it was not initially considered particularly important to wash one’s hands and instruments; once this was proven and accepted by the overall community of doctors, the entire field became fundamentally more successful.
Professions are, among other things, entities that can capture these universal truths to pass them on to future generations and to ensure that everyone participating in the overall effort understands and adheres to them (The surgical operation does not go well if only some of the doctors and nurses involved believe in germs). We are ever-increasingly vulnerable to the quality of the work of other developers and development teams.
Whether you prefer to think of what you do as a profession, a craft, an art, a science, or some other term, there is value in knowing what these universals are and also what basic skills every developer should have. This can help to improve your value to your organization, certainly, but also can increase your own sense of confidence and self-worth.
Also, many of the aspects listed under Core Skills are synergistic. That is, learning about one of them will help you to understand others, or to deepen your understanding of them all.
Of course, we cannot claim to have found everything that belongs on this list. This is what we know now. It will serve as a good starting point in trying to create this kind of shared universal knowledge.
- Bain, Scott. Emergent Design: The Evolutionary Nature of Professional Software Development. (2008)