Archive for September, 2007

Improving Your Professionalism

Monday, September 24th, 2007

How does an individual improve their professionalism?

I believe that first you must want to improve and be willing to support that desire. That can mean being disciplined to provide a time and place devoted to self-improvement. For instance, one hour devoted to reading a book or a journal like the IEEE Computer or IEEE Software. Or three hours on a weekend discovering or experimenting with a new (to you) software development technique. Or providing your software-engineering talents on a open-source project.

At one conference, I attended a presentation by Watts Humphrey on his Personal Software Process. I bought the book and started to do the exercises and tests. The goal of this process was to provide you with metrics on your coding capabilities, like how many errors/faults per lines of code you introduce, or how many lines of code per hour you write, etc. If you know how many errors/faults you might introduce, wouldn’t you want to try to find at least that many in your personal QA testing? If you know your average production of code, wouldn’t that help you in your estimation tasks? I intend to revisit that process again with my new development techniques!

We all write something like a requirement at different stages in a project. How many of us believe we can write a clear and unambiguous statement? A good start could be the use of the technique and process developed by Tom Gilb (see Competitive Engineering:A Handbook For Systems Engineering, Requirements Engineering, and Software Engineering Using Planguage ISBN 0750665076 Publisher: Elsevier Butterworth-Heinemann by Tom Gilb.) He has a wonderful collection of resources at his website.

One other important point for improving your professionalism – do you conscientiously consider the ethical impact of your work?


Professionalism and Engineering Economics

Wednesday, September 5th, 2007

Let’s take a look at this section of the CSDP. This section is more about the person as opposed to the practice of software engineering. How does a professional conduct oneself? Firstly, I would start with the Software Engineering Code of Ethics and Professional Practice.

With a code of ethics as a base, let’s look at some ideas of what is a professional.

From IEEE Software, May/June 2007,Robert C. Martin of Object Mentor, Professionalism and Test-Driven Development: “A professional software developer ships clean, flexible code that works-on time. Unfortunately, many software developers use high-stress heroics to ship late, buggy, messy, and bloated code. ”

There are many examples of unsuccessful projects with blame attributed on a number of different reasons for the failure. Popular press and industry pundits like to call it the software crisis. According to “Software Engineering Volume 1: The Development Process, 2nd Edition” from IEEE Computer Society Press, edited by R.H. Thayer and M. Dorfman, in Chapter 2, “the term software crisis originated with the military”. As non-military systems became equivalent in scope, this term was applied to all software systems that did not deliver the goods.

From 24th International Conference on Software Engineering (ICSE ’02) Software Engineering Economics: Background, Current Practices, and Future Directions: “The field of software economics seeks to develop technical theories, guidelines, and practices of software development based on sound, established, and emerging models of value and value-creation–adapted to the domain of software development as necessary. The premise of the field is that software development is an ongoing investment activity–in which developers and managers continually make investment decisions requiting the expenditure of valuable resources, such as time, talent, and money. The overriding aim of this activity is to maximize the value added subject to an equitable distribution among the participating stakeholders.”

Developers should have professional responsibility for their work, and an awareness of the importance of appropriate ethical behavior in the group. They must also have an awareness of the impact of information technology on society as a whole and on individuals, and be prepared to handle a variety of issues arising in the workplace.

So that is some introduction to this knowledge area, and I will expand on it in the future. I leave with one question in mind – How does an individual improve their standing as a professional?