At the insistence of my employer I completed a Business Analysis course in gathering and documenting user
requirements. I expected from the title and description it was about gathering business requirements, which in
my mind are high level requirements expressed in business terms about how a solution (which may or may not
include a software system) to a business problem should fit with the business goals, address business needs,
and bring value to the organization. As there was no hint of software engineering in the course description, I
was thinking this course could not be about software (or systems) requirements engineering I first learned in
school and practiced for years.
I was wrong.
A rough guess: 90% of the material was straight from classical software engineering requirements elicitation
and documentation courses taken in university. I was thinking while sitting through this course: Is most of
this stuff not simply a part of software engineering? Why the silly name Business Analysis, like it is a distinct profession outside the domain of software engineering? And, how can a class full of software developers not
know this stuff already? What kind of education do they have? Where did they do their training to become
software developers and not learn this stuff? Disturbingly, many in this course have been building software
for years and are calling themselves software developers.
I suspect many "software developers" lack other software engineering fundamentals as well. Consider the core
courses for a certificate in Business Analysis: How to Gather and Document User Requirements, Testing for
Business Analysts, Object Orientation for Business Analysts, and Object Oriented Modeling. These are topics all
software developers should be intimately familiar with. Obviously, some of us are not. But why not?
I believe the answer lies in the lack of a professional organization that certifies (and licenses?) software
engineers. Such an organization would ensure quality engineers by mandating appropriate education, training,
and experience, and establishing codes of ethics and professionalism. Even though a lot of software is built
to run critical systems (think about software in the medical, engineering, banking, and insurance fields, to
name a few), we do not have any regulations on who is qualified as a software engineer to build such systems;
i.e. there is no regulatory body to ensure those who practice our profession are qualified to do so. In the
words of Bjarne Stroustrup: "I find it appalling that you can become a programmer [software engineer] with less training than it
takes to become a plumber" [1].
The lack of required and approved software engineering training has resulted in many developers having little
or no requirements elicitation and documentation knowledge (not to mention other software engineering
fundamentals). This is a fundamental part of the software engineering process, and many in our profession are
not prepared to do it. What has resulted is a need in the business world to fill a void created by inadequate
and under qualified software developers. Hence, Business Analysts, out of necessity, have expanded their role
to do what good Software Engineers should be doing.
My understanding from this course is that Business Analysts are gaining evermore respect in our field and
are leading the way to certification on their own. Good for them. If we as a group of software development
professionals (software engineers, computer scientists, programmers, and the like) can't organize ourselves
and bring some professionalism to our discipline, more and more of our field will be shifted to other
professionals who can. I can see this already happening. The Business Analyst is now somehow seen as much
more than the Software
Engineer, fulfilling major roles in the software engineering process (I'm not saying BAs don't have a role to
play, just not as software engineers). That leaves us as "just coders", unprofessional worker bees,
with no control over our own profession. Shame on us.
Every true profession eventually forms an organization to ensure integrity and quality of the professional,
and to protect the public, the business world, and the practitioners. Such organizations also ensure the
discipline remains in practitioner's hands and those practicing it are properly qualified (education,
certification, licenses). Consider teachers, lawyers, doctors, pharmacists, electricians, and, my God, in my
neck of the woods even mortgage brokers. They have all professionalized. Its time we grow up and do the same.
References
[1] James Maguire, Bjarne Stroustrup on Educating Software Developers,
Datamation, http://itmanagement.earthweb.com, 2008