»

What is Professional Software Development?

My website and blog are about software development, so the title I picked for my website is Professional Software Development. Why did I add the word "Professional", and what does it mean to me? I'm glad you asked.

The term software development is mostly self-explanatory. I call myself a software developer. Some people think this term is synonymous with computer programmer. I disagree - in fact, I can't stand being called a programmer. To my way of thinking [1], a programmer just writes programs - i.e. he/she codes all day long. Now I love coding, but I view software development - the job of a software developer - as encompassing much more than just coding. Software development also involves requirements gathering, analysis, system & application architecture, application design, interface design, unit testing, system testing, acceptance testing, implementation, documentation - the whole gamut of the software development life-cycle. Software development and programming refer to the same core activity (producing software), but with different scopes.

In an analogous fashion, the addition of the word "Professional" to "Software Development" broadens the scope of producing software, not in terms of additional activities, but in terms of the manner these activities are performed. I believe a professional is someone who possesses the following characteristics:

  1. Integrity: A professional is honest and trustworthy, exhibits ethical behavior in all his / her actions, and has a strong work ethic.
  2. Ability: A professional has the ability to accomplish the activities required for someone in his / her field.
  3. Knowledge: A professional has the foundation of knowledge required for someone in his / her field.
  4. Growth: A professional is constantly seeking to improve and grow.

I put integrity first because I view it as the most important differentiator for a professional. Many if not all of the professions requiring chartering or registration [2], such as medical doctors, engineers, psychologists, etc., have a code of ethics that members are required to abide by. One example is the APEGGA Code of Ethics (APEGGA regulates engineers in the province of Alberta). The preamble to the code is a succinct yet effective summary: "Professional engineers, geologists and geophysicists shall recognize that professional ethics is founded upon integrity, competence, dignity and devotion to service. This concept shall guide their conduct at all times."

I view abilities and knowledge as different but related aspects: ability is mostly gained through experience, while knowledge is mostly gained through education. Ability typically requires knowledge, but you can be knowledgeable on a topic without having the ability to perform tasks related to this knowledge. Consider the activity of designing & coding an application. Assuming an object-oriented approach is used, this activity requires the ability to do object-oriented design (OOD). OOD requires a basic knowledge of object-oriented programming principles (i.e. polymorphism). Someone fresh out of university will likely have this basic knowledge, but will not have the ability to do OOD at the level that an experienced professional would. To code this application requires knowledge of a programming language & libraries (i.e. Java or C#). An experienced software developer may have the ability to code the application, but if it is a language they lack knowledge in, it will be much more difficult. So a professional must have both the relevant abilities and knowledge for the tasks he / she works on.

Although I view growth as a very important characteristic of professionals, I placed it last because it is the first three characteristics - integrity, ability, and knowledge - that a professional seeks to improve.

Notes:
[1] - I am aware that others in the field do not share my viewpoint on the meaning of the term "programmer" - i.e. the Pragmatic Programmers.

[2] - I am not saying that software development should become a regulated professional like engineering. In fact, I believe that software development (for typical business/commercial software) is more like craftsmanship than it is like engineering.

If you find this article helpful, please make a donation.

2 Comments on “What is Professional Software Development?”

  1. Dwayne says:

    Interesting opening topic, and so much that one could say. ;-) Here’s some fodder, if you want to use it, for future discussions: How do you see all this relating to the 20:1 (or 10:1, depending on your source) productivity difference between developers? Is it it just education gaps? Professionalism gaps? Is it something innate, or is it just a combination of experience & education?

    A profession can be inhabited by anyone that meets a minimum qualification. What would this be? How would you measure it, or is it something that an individual simply ascribes to himself? Does “profession” imply that there’s a (finite) body of knowledge for software development?

    Given the roles/tasks/etc. you’ve ascribed to a software developer, is this really covered by one skill set, without the developer being required to be Superman? Is the canonical/legendary wizard software developer that can’t be introduced to the customer just a myth or a programmer? What’s up?

    Would you say that all crafts have scientific underpinnings, so that your statement about development being a craft doesn’t undermine Computer Science as such?

    And are you really Pete McBreen (http://www.amazon.ca/exec/obidos/ASIN/0201733862/)? ;->

  2. I really didn’t want to get into a discussion about the profession of software development – that’s why I made that comment on craftmanship as a footnote. I’m trying to save the controversial posts for later. :)

    I will say this. Being a professional, in the context of my article, has no relationship with being a member of a profession. Membership in a profession is granted by an external organization, while acting as a professional is determined by one’s actions and beliefs.

    (And I’m not Pete McBreen, but I did read his book.)

   »