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.

Share this article: Add 'What is Professional Software Development?' to reddit Add 'What is Professional Software Development?' to digg Add 'What is Professional Software Development?' to Del.icio.us Add 'What is Professional Software Development?' to FURL Add 'What is Professional Software Development?' to Technorati Add 'What is Professional Software Development?' to Yahoo My Web Add 'What is Professional Software Development?' to Newsvine