of conduct? Attempts to apply the client’s domain’s code of ethics may require an immersion in a culture and
practice that is impracticable for the
However, both software engineers
and their clients develop characteristic virtues through practice that influence and inform their decision making when faced with ethical choices.
Fundamental virtues such as patience,
kindness, compassion, and empathy
are common to all areas of human
practice. That is not to say that new virtues, relevant to the client’s practice,
will not be recognized and applied as
we learn about the client.
So the development of our own moral characteristics through the learning
and practice of virtues will grow closer
connections with the client and their
activity. And combined with a knowledge of the ethical difficulties encountered by the client will help us to sympathize with the client and at the least
avoid writing crass moral assumptions
into our software that are culturally
foreign and morally jarring.
the Way Forward
So how are we to do this? The danger
is we replace a catalogue of rules with
a catalogue of virtues. An understanding of the idea of virtues, the importance of character and the relation
to actions is important. Studying the
virtue of courage will help us identify when courage is needed, when
we need to overcome fear and selfish concerns to stand up for a client,
to point out an ethical malfunction,
or to whistle-blow. It will also enable
us to understand the boundaries, to
tell the difference between considered courage and rash foolishness.
A skills-based approach such as that
advocated by Huff et al. 2, 3 is helpful,
but we do not want to descend into
debates about hierarchies of virtues
or taxonomic exercises. We must look
inward, outward, and all around.
Inward reflection on who we are,
what our drives us, what we consider
important, will help us become aware
of the social and ethical assumptions
we make and take for granted. What
we consider good and bad behavior
will affect how we respond to social
situations and ethical dilemmas.
Outward engagement with the
We must understand
the nature of the
domains we engage
with and the facts
associated with them.
world in which the software acts will
help the software engineer develop
empathy and a feeling for the ethical
climate in which the software runs.
Familiarity with the technical issues
associated with the field of application
is extended to the ethical issues. Outward engagement will involve searching for examples of good practice, involvement with mentors and others
who model virtues, and creating narratives about the service we engage in
and the purposeful activity we support.
All-around vision will involve learning to connect with issues that matter
to people. The software engineer who
spends all his time buried in Python
manuals and playing Call of Duty 4 is
hardly likely to develop wisdom and
ethical understanding. Software engineers should be encouraged to connect with the wider world. Reading the
literature of the great religions, modern and ancient authors, engaging
in political debate, reading about advances in science and global problems
will help develop all-around vision.
A set of static rules should be replaced by a dynamic process. Starting
by learning about the ethical problems
and difficulties the client faces, we
move on to consider what character
traits, what virtues would be important in this domain. We can then look
for examples and stories of expressions of those virtues in that domain
or others. An emphasis on narratives
will lead us to ask what would a virtuous person do?
We can then reflect on the implications for software engineering and
improve the design of the product and
the delivery of the service accordingly.
Such a process enables us to practice,
learn from that practice, and grow in
The software engineer who considers
himself only a technician, who rejects
social and ethical engagement, claiming “it’s a matter for lawyers and doctors” is a destructive force and a burden on the client. We should consider
software engineering as a communicative art where engagement with the client is at its heart and an understanding
of the tasks, goals, and moral concerns
of the client leads to the development
of software that is appropriate to the
But we cannot expect a written code
to be the prime motivator of professional moral character any more than
a written constitution guarantees good
government. Indeed the written code
of ethics may lead to complacency, ignorance, and the neglecting of moral
reflection. Codes of ethics can provide
a smokescreen for deserting personal
Hence we must understand the nature of the domains we engage with
and the facts concerning ethical problems associated with them. And we
must develop virtues that will help us
to use our understanding of the application domain in making ethical decisions. The nature of the domains we
engage in will change, but the human
characteristics we need such as empathy, patience, honesty, compassion
will not change.
Rules can be learned and forgotten
quickly, becoming a virtuous software
engineer takes time and practice. Wisdom develops over a lifetime.
1. harris, C.e. the good engineer: giving virtue its due in
engineering ethics. Science and Engineering Ethics 14
2. huff, C. W., barnard, l., and frey, W. good computing:
a pedagogically focused model of virtue in the
practice of computing (part 1). Journal of Information,
Communication & Ethics in Society 6, 3 (2008),
3. huff, C. W., barnard, l., and frey, W. good computing:
a pedagogically focused model of virtue in the
practice of computing (part 2). Journal of Information,
Communication & Ethics in Society 6, 4 (2008),
neil McBride ( email@example.com) is a reader in
Information technology management in the Centre for
Computing and social responsibility at De montfort
university, leicester, u.k.