Software Development Privilege and Responsibility
(Samir Kumar Mishra,
Brisbane, Australia)
As a Software Developers, we've all had
our share of bad days. The Days in which our operating
systems or workstations crash, networks go down and
coworkers conspire against us to suck all productivity
out of the air. Days in which our bosses or their bosses
or our customers hammer us for errors done or for the
functionality not implemented yet. These Days turn into
nights and back again into days as we chase some elusive
gnome from our system.
Still, we (most of us) come to the profession of software
development by our choice, the choice we make for ourselves
for our career. There are many reasons given by the
world but I believe it is typically because we like
to create things right from thought, things that give
life to our machines and that matter to our organizations,
and even to the world. For others, software creeps up
behind us and grabs us by the neck; although we may
secure an uneasy truce with it even though we may not
be code warriors, we still require some degree of development
skills so that we can wrestle that software to the ground
and direct it to carry out our will. Either way, as
an intentional or as an accidental developer, we build
things that the rest of the world needs and uses and
yet is often invisible to them.
Keeping this in mind, it is both a privilege as well
as a responsibility to be a software developer. It is
a privilege because, In spite of some inevitable dark
days, we (collectively as a Team) are given the opportunity
to create things that matters to individuals, to teams,
to organizations, to countries and to our civilization.
We have the honor of delivering the stuff of pure intellectual
effort that can heal, serve, entertain, connect, and
liberate, providing the freedom to human spirit so that
they can pursue those activities that are purely and
uniquely human.
At the same time, we have a deep responsibility. Because
individuals and organizations depend on the artifacts
we create, we have an obligation to deliver systems
of quality in a manner that applies scarce human and
computing resources intentionally and wisely. This is
why we hurt when our projects fail, not only because
each failure represents our inability to deliver real
value, but also because life is too short to spend precious
time on constructing bad software that no one wants,
needs, or will ever use. As professionals, we also have
a moral responsibility. Do we ever choose to labor on
a system that we know will fail or may steal from a
person their time, their liberty, or their life? The
answer to these will be No. These are the
kind of questions that do not have a technical answer,
but rather are ones that must be consciously weighed
by our individual belief system as we deploy technology
to the world.
Thus, software development is ultimately a human activity,
not only because it emanates from the human intellect,
but also because it requires the cooperative activity
of others to make it real. It requires collaboration
and understanding from other human beings either working
in the same team or different team or organization.
As professionals, we therefore constantly seek better
ways to deliver quality software that matters, simply
because our task is too complex to squander our time
and our energy. This is why we look at successful projects
and analyze why they were successful and similarly look
at failed projects so that we may learn from their mistakes.
We then codify all these lessons learned in the best
practices and processes that constitute our industry's
tribal memory, such as found in the RUP. For the same
reason, we agree upon common notations such as the UML
that help us communicate and reason about our systems.
In a nutshell we create a Knowledge Repository over
a period of time at individual, organization or a community
level. This is why the Software
Professionals are also called as Knowledge
Workers. In this pile of best practices, object-oriented
development stands out as a proven technology that has
been used to successfully build and deliver a multitude
of complex software-intensive systems in a variety of
problem domains.
Still, the demand for software continues to rise at
a staggering rate. The ever-growing capabilities of
our hardware together with an increasing social awareness
and economic value of the utility of computers create
tremendous pressure to automate systems of even greater
complexity. The fundamental value of object-oriented
development, with its well-defined notation and process,
is that it releases the human spirit to focus its creative
energies upon the truly demanding parts in the crafting
of useful, quality systems in a timely, predictable,
and repeatable fashion.
The only way we as a Software Developer can keep up
with new challenges posed to us in our day to day life
is by constantly upgrading our skills, challenging the
original idea, out of box thinking. This is one of the
factors which make this profession unique. There are
only few profession where one needs to learn constantly
and think about improvising on what is already existing.
When I started in the Industry (almost 10 years ago)
the hype was that within 10-15 years all the software
requirements will be fulfilled and then there will not
be any requirement of Software Professionals. There
will not be any jobs. Software professionals were not
given the acceptance they deserved. Today I see the
number of software professionals have grown n folds
and the demand is growing. People are becoming aware
of what the Software Development is all about. Working
in computers is not only about selling and fixing computer
problems, general mass is becoming aware that there
is something called Software Development which is equally
good (if not better) compared to other engineering profession.
Summary:
Many of us are already in Software Development Profession
and there are many more who wants to pursue their dreams
in Software Development. Whether we come to the profession
of software development by accident or with malice aforethought,
the bottom line is we build things that the rest of
the world needs. Because of that, it is both a privilege
as well as a responsibility to be a software developer.
In this article an attempt has been made to explain
what it means to be a Software Developer.
About The Author:
Samir Kumar Mishra is currently
based in Brisbane, Australia. His current work involves
designing and developing a business system based on
Semantic Database technology. His expertise is in System
Design and Architecture for J2EE and COM based systems,
Distributed contributing systems.