Many debates here on Wiki (and elsewhere) center on the responsibilities of programmers--to a wide variety of parties. Many design methodologies (including ExtremeProgramming) focus on a programmer's responsibilities to the "customers" of a project (stakeholders, end-users). Other discussions have focused on a programmer's responsibility to society at large; to a programmer's responsibility to the programming and technical community; and to him/herself.
Following is a list of responsibilities programmers may (some are debatable) have to the above groups. The list may include conflicting responsibilities--that's OK. Feel free to add your own--or if you are ambitious, add your own category (but define it). OK to put the same responsibility in more than one category, if it applies.
As programming attempts to become more "respectable", and become recognized as an engineering discipline (alongside mechanical, civil, and chemical); or a profession (alongside accounting, law, and medicine), or a craft/trade/art/whatever--these responsibilites will come more and more into play.
Comments go at the bottom.
The groups to whom programmers have reponsibilities:
- Our Stakeholders: Whoever is paying for the programmer's work.
- Our Customers: The end-users of the programmer's work. In many situations, the stakeholders and customers are one and the same (or at least in the same organization). In others (shrinkwrap software, embedded systems); they are separate entities.
- Our society: If programmers are to be recognized and treated as professionals; we must have obligations to society at large--not just the folks paying the bills.
- Our peers: Our fellow programmers, and the other members of the technical community. Also includes aspiring and future programmers, at whatever stage of development.
- Ourselves and our families: Self explainatory
Responsibilities to Our Stakeholders
- To develop and produce accurate and reasonable schedules and estimates of cost, and then deliver according to those estimates.
- To implement what is required
- To provide assistance with the development of requirements, and any other technical expertese that may be needed and which we are able to provide
- To decline a job if it cannot be performed in good conscience.
Responsibilities to Our Customers
- To keep the customer in mind at all times
- To produce work which is safe and which will not make the customer's situation worse. (In medicine, this is written as First, do no harm).
- To produce work which meets reasonable quality expectations
Responsibilities to Our Society
- To produce work which is safe, which will not harm society, and which will not make society's situation worse.
- To obey the laws in how we do our work. (Assume laws are just; if not that's a completely different discussion)
- To produce work which meets reasonable quality expectations
- To strive to advance the state of the art
- To provide good works which may be enjoyed (and built upon) by others
Responsibilities to Our Peers
- To strive to advance the state of the art
- To not besmirch the profession by shoddy work or misconduct
Responsibilities to Ourselves
- To earn an income to provide for ourselves and our families
- To ensure that work is enjoyable and self-fulfilling
- To decline a job if it cannot be performed in good conscience
- To keep ourselves up-to-date with the latest tools and techniques of our craft.
Comments go here