supporting the processes and activities that result in human flourishing.
Hence the moral behavior underpinning the practice of software engineering requires, firstly, an ethics of
service, focusing on the relationship
with the client, the client’s employees
and customers. Secondly, the software
engineer must be concerned about the
ethics of the client. The closer relationship of IT with the client and the user
demands a more active involvement
with the ethical environment within
which the software operates.
A service-oriented, client-oriented
software engineering ethics requires
outward-looking engagement with
complex social and moral climates.
How is this to be achieved when the
comfort and certainty of codes cannot
be relied upon? What is the alternative
and how can software engineers become reflective practitioners?
Service Ethics
A service-oriented ethics will focus on
relationships and the complex network of social interactions that is the
Coming Next Month in
COMMUNICATIONS
Factors Leading to
the Successful Deployment
of Cloud Computing
Self-Adaptive Software Needs
Qualitative Verification
Questioning Naturalism
in 3D User Interfaces
What Science Can
Learn from the Arts
A New Objective-C Runtime
Fix My Bugs! Seatbelts and
Airbags for Your Software
All Your Data Belongs to Us
Plus the latest news about atomic
level computing, 3D chips, and using
malware to traffic pollution.
social context of the software. How
does the outsourcer relate to the client? Who are the ultimate users of the
software? How do those users relate
to others involved in the purposeful
activity that is supported by the software? A customer relationship management system, for example, serves
the purposeful activity of the managers, service staff, and customers of
a business. Ethical issues may arise
from the complex social environment,
the culture, the business practice, and
the customer expectations. This social complexity will defeat any code of
conduct. We cannot engage in ethics
at arms length, nor conduct relationships by remembering reams of rules.
A service-oriented ethics is a matter of character not codes. We develop
character through practice that enables us to reflect on complex development environments and sensitively
identify and tackle most ethical issues
that arise. Character is expressed in
virtues such as courage, patience,
honesty, and empathy. For example,
patience is developed through practice in a situation where communication with the client is slow and time
is needed to understand what the
client wants. Courage is developed
through standing up to unreasonable
demands, and raising uncomfortable
issues about how software will affect
users. The virtue of honesty must be
practiced so that we do not overpromise and are transparent about the limitations of the systems we build. The
characteristic of humility will help the
software engineer to listen sensitively
to the client but not assume the client
knows better.
But whether we, as software engineers, are prepared to engage in character development rather than rule
adherence will depend on our own
motivation. We must reflect on our
own goals. What is driving us? What
meaning do we apply to the work we
do? Is our work just driven by a focus
on the technology we use? Are we just
concerned with earning money?
If we are driven by external goods in
terms of financial rewards or technical
advancement, there may be little moti-
vation to engage with ethical concerns.
But a shift toward internal rewards may
encourage us to reflect on our goals in
our professional life. An emphasis on
internal rewards will come from look-
ing outward and considering our con-
nection with community—local and
global—and finding fulfillment in our
contribution to human flourishing.
Domain Ethics
At the heart of a service ethics is the
development of empathy—the virtue
of putting ourselves in other’s shoes,
of learning about their environment
and concerns. This requires immersion in the client’s world, and seeing
ourselves not as technicians, but as
servants of human purposeful activity developing an ethics-in-use. To do
this we must understand the moral
climate of the client: the ethical issues
involved in the practice of medicine,
of nursing, of computer gaming, of
accountancy, of energy provision. We
cannot assume our own professional
codes of conduct are adequate or even
relevant to the areas we are serving.
The software needs to support the
moral environment within which the
client works, not the moral climate of
the software engineer. The value and
benefits of the software are obtained
when it is used in the client’s environment. That is not to say we do not question the ethical framework of the client,
or offer suggestions for improvement.
But how can we comment on something we have not engaged with or understood? Although some of the ethical situations faced by our clients will
be foreign to us, this does not mean we
should not pursue an understanding of
our client’s predicaments that will enable us to deliver more ethically sensitive and appropriate software.
Having understood the issues in
the domain of practice, does the software engineer learn another code of
conduct or retreat to his own better-rehearsed software engineering code
how can software
engineers
become reflective
practitioners?