Monday, July 13, 2015

Code of Ethics

 Principle 1 – Public


During the workshop we provided students with information and ways on using IT for:
1.      Education
2.      Social activities
3.      Communication
4.      Professional and formal activities

Moreover, we discussed risks when utilising IT in those area and advised them on how those risks can be mitigated. In addition, we discussed potential opportunities and career paths in IT.

We have spent a few days as a group putting these material together and making sure what we present to students are accurate and valid as per item 1.1 (“1.1   Accept full responsibility for their own work”.)

As described in the intro section, as professionals we took the initiative to volunteer and use our skills to good use and contribute to public education. We encouraged the students at the workshop to share their skills with their family members and immediate community (i.e. teaching a parent to use computer to type a letter or sent an email, teach a younger cousin or a sibling to how to use a search engine properly, etc.).  Item 1.8 relates to above mentioned aspects (1.8 be encouraged to volunteer professional skills to good causes and contribute to public education concerning the discipline.)


 Principle 2 – Client and employer


Item 2.01 states “Provide service in their areas of competence, being honest and forthright about any limitations of their experience and education.”  When we approach the teacher of this IT class, we explained who we are and our credentials (degree, university, academic year), objectives and limitation of IT knowledge and experience. After making sure the teacher was very much comfortable with our candid discussion we agreed the date for the workshop giving the teacher plenty of time to convey the objectives of the workshops to students as well.  During the workshop there were a few questions from students where we didn’t quite know the answers to. We were honest with students at every question and made sure those questions were noted down to provide clarity on those at a later date.

The follow up communications (calls, emails, text messages) and details of students were made confidential in line with item “2.05 keep private any confidential information gained in their professional work, where such confidentiality is consistent with the public interest and consistent with the law.”


Principle 3 – Product

3.01 Strive for high quality, acceptable cost and a reasonable schedule, ensuring significant trade-offs are clear to and accepted by the employer and the client, and are available for consideration by the user and the public.

We were fully prepared for our workshop with a clear agenda which was communicated to the teacher and students in advance to make sure they come prepared with any queries. Throughout the workshop, we made sure we stick to the agenda and timings to ensure we cover all areas on-time as planned.  During the Q&A session we had we realized, we were running out of time; therefore, we noted down all queries we couldn’t answer on time with the view to respond to those offline.

3.02 Ensure proper and achievable goals and objectives for any project on which they work or propose.

As mentioned in the beginning of this section, we made sure we have a clear objective for the workshop before approaching the teacher. Our goal was to uplift IT knowledge of the society so that they can utilise the IT in their day-to-day lives.  We are planning to do the same for our future work such as conducting workshops in rural schools and tuition classes and doing promotional campaigns over the internet.

It was key that everyone in the team was aware of IT laws and were on the same page. While preparing, and during the workshop we made sure not to violate any laws. (3.03 Identify, define and address ethical, economic, cultural, legal and environmental issues related to work projects.)

Principle 4 – Judgment

This workshop and the future work we plan to transfer IT knowledge as a group will be free of charge completely, therefore, we will not be violating item 4.04 - “Not engage in deceptive financial practices such as bribery, double billing, or other improper financial practices.”


Principle 5 – Management

5.01 Ensure good management for any project on which they work, including effective procedures for promotion of quality and reduction of risk.

Planning and preparing is key to success of any project regardless the scale of it.  In addition to planning the date ahead and preparing an agenda, we made sure everyone in the team is properly prepared and rehearsed. We spent time on online group conversations making sure everyone was on the same page and to make sure we help each other in problem areas. We agreed a small budget, planned travelling and made sure all required equipment are ready ahead of the workshop.  In addition, we made sure we reached well before the start of the workshop to set-up the equipment, just so there were no last minute surprises.

5.12 Not punish anyone for expressing ethical concerns about a project.

Considering about that point is starting very beginning of the project where is when we were asking for the workshop we confirmed that they have no any ethical issues about our project and also after finished the workshop we asked from students that if you have any good or bad comments with regarding our workshop feel free to let us know and if you give us negative point about project we accept that with decent manner.

Principle 6 – Profession

6.02 Promote public knowledge of software engineering.

One of the objectives of our workshop was to promote public knowledge of software engineering.  We discussed the opportunities in the university and career opportunities in software engineering in Sri Lanka and overseas.

In addition, we discussed the IT professional bodies such as BCS we have registered in, online blogs and documents published by professional bodies and organisations and where to obtain scholar publications from (IEEE, etc)   - 6.03 Extend software engineering knowledge by appropriate participation in professional organizations, meetings and publications.


Principle 7 – Colleagues

7.01 Encourage colleagues to adhere to this Code.
While prepping for workshop and in all other professional dealings we encourage our colleagues and friends to adhere to this code. 

Additionally, we encouraged the students during the workshop to regularly read tech blogs and other activities to enhance their professional development. Moreover, as a team we are encouraging each other and share ideas on how we could further improve our professional development (“7.02 Assist colleagues in professional development.”)

7.03 Credit fully the work of others and refrain from taking undue credit.

While conducting the workshop we made sure all references were correctly specified in presentation material and we made sure it’s communicated to students clearly (sources can be person’s creations, organization’s publications, blogs, public material etc.)

7.05 Give a fair hearing to the opinions, concerns, or complaints of a colleague.

When deciding which activity we should prioritise first, everyone in the team came up with a few suggestion. My idea was to conduct a workshop in the town council or a government organisation but team members voted for IT tuition class and finally I agreed with them since they had a valid point (since in tuition class we have huge audience interested in IT)

Principle 8 – Self

8.06 Improve their knowledge of this Code, its interpretation, and its application to their work.

While preparing for the workshop we had a good review of the code of conduct and made sure we applied it correctly in this activity. It’s quite clear that a theory becomes much more valuable and understood, when it’s put to action.

8.08 Not influence others to undertake any action that involves a breach of this Code.

As we are fully aware how important this code of conduct, we always try not to influence others to breach this code of conduct by taking any in appropriate actions.  Throughout the workshop we tried our best to communicate this to our audience and we will endeavour to do so in the future as well.

Before concluding, I would like to briefly mention our future plans as well.  In the future we are planning to approach rural schools and communities to see if we can volunteer to improve their IT knowledge and to show how to utilise that knowledge in practice.  I believe as educated IT professionals we have a duty to our society and we appreciate any support you can provide us. Please contact me dmtpdisanayaka@gmail.com

Saturday, July 4, 2015

IT Knowledge Transfer Workshop

Over the last decade technology has taken over our lives massively and it has transformed our lives in all aspects, such as communication, business and social life. Unlike the 1900s we have to maintain two profiles; the real and virtual lives. Though this is generally true in the develop countries among younger generation, when it comes to the developing countries a lot of improvements can be made by using Information Technology in people’s lives. In the recent past slight improvements have been made in the education system such as introducing IT as a subject, using videos when teaching early stage children alphabet, etc.  However, it’s safe to say, we as a country has a long way to go in utilizing latest technologies available in our day-to-day lives.

So how can this be improved or in other words, how can information technology be embedded more into day-to-day lives? Embedding technology education is one key method of achieving this. However, if the students are privileged enough to study IT and obtain an educational qualification in IT either leave the country or lead their lives in silos without transferring knowledge socially and professionally progress we can make as a community is very slow.  As a citizens of a developing nation it should very much be our responsibility as well as the government to contribute to country’s development. Therefore, trying to be responsible citizen we as a team decided to set an example to others by transferring our IT knowledge we gained in the school and the university into the community. As the first steps towards that we approached an IT tuition class and IT subject in school to do a workshop in IT.

With the help of the teacher who manages the class we conducted this workshop making sure the code of ethics are followed.  Next sections of this blog will describe how we followed the code of conduct throughout the session.


Thursday, June 25, 2015

Introduction to Software Engineering Code of Ethics and Professional Practice


Software Engineering is one of the youngest in the engineering field. Though this has a history of a few decades, at present Software Engineering can be identified as one of the fastest growing and popular field in the industry. In the beginning Software Engineering hadn't the reputation as other industry fields. Main reason for that was numerous level of standards and unavailability of a professional body.

Institute of Electrical and Electronic Engineering (IEEE) has got the initiative of developing a professional body for the Information Technology related fields and jobs. Through this, it is expected to uplift the quality and maintain a better reputation in the industry for the Software Engineers. Developing a Software Engineering Code of Ethics and Professional Practice is one of the step that have taken to implement necessary standards and practices in the industry. Association of Computing Machinery(ACS)/IEEE-CS joint task force has approved and recommended this code of ethics and professional practices software engineers.( View and download the: Code of Conduct )

The Software Engineering Code of Ethics and Professional Practice is a practical framework for moral decision-making related to problems that software engineers may encounter.

The Software Engineering Code of Ethics and Professional Practice is based upon eight general principles related to the following subjects: the public, client and employer, product, judgment, management, profession, colleagues, and self. Each of these general principles contains a list of clauses related to specific areas of potential moral concern for the practicing software engineer. Good judgment is still needed, however. In many situations, there is a conflict between two or more of the relevant clauses. At these times, the decision-maker must determine which of the clauses is most relevant and/or most important.

PRINCIPLES

Principle 1: PUBLIC
Software engineers shall act consistently with the public interest. In particular, software engineers shall, as appropriate:
1.01.  Accept full responsibility for their own work.
1.02.  Moderate the interests of the software engineer, the employer, the client and the users with the public good.
1.03.  Approve software only if they have a well-founded belief that it is safe, meets specifications, passes appropriate tests, and does not diminish quality of life, diminish privacy or harm the environment. The ultimate effect of the work should be to the public good.
1.04.   Disclose to appropriate persons or authorities any actual or potential danger to the user, the public, or the environment, that they reasonably believe to be associated with software or related documents.
1.05. Cooperate in efforts to address matters of grave public concern caused by                      software, its installation, maintenance, support or documentation.
1.06. Be fair and avoid deception in all statements, particularly public ones,                              concerning software or related documents, methods and tools.
1.07. Consider issues of physical disabilities, allocation of resources, economic                       disadvantage and other factors that can diminish access to the benefits of                        software.
1.08. Be encouraged to volunteer professional skills to good causes and contribute to            public education concerning the discipline.

Principle 2: CLIENT AND EMPLOYER
Software engineers shall act in a manner that is in the best interests of their client and employer, consistent with the public interest. In particular, software engineers shall, as appropriate:
2.01. Provide service in their areas of competence, being honest and forthright about            any limitations of their experience and education.
2.02. Not knowingly use software that is obtained or retained either illegally or                      unethically.
2.03. Use the property of a client or employer only in ways properly authorized, and            with the client’s or employer’s knowledge and consent.
2.04. Ensure that any document upon which they rely has been approved, when                      required, by someone authorized to approve it.
2.05. Keep private any confidential information gained in their professional work,                 where such confidentiality is consistent with the public interest and consistent            with the law.
2.06. Identify, document, collect evidence and report to the client or the employer promptly if, in their opinion, a project is likely to fail, to prove too expensive, to violate intellectual property law, or otherwise to be problematic.
2.07. Identify, document, and report significant issues of social concern, of which                   they are aware, in software or related documents, to the employer or the client.
2.08. Accept no outside work detrimental to the work they perform for their primary            employer.
2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern is being compromised; in that case, inform the employer or another appropriate authority of the ethical concern.

Principle 3: PRODUCT
Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. In particular, software engineers shall, as appropriate:
3.01. Strive for high quality, acceptable cost and a reasonable schedule, ensuring significant trade-offs are clear to and accepted by the employer and the client, and are available for consideration by the user and the public.
3.02. Ensure proper and achievable goals and objectives for any project on which                  they work or propose.
3.03. Identify, define and address ethical, economic, cultural, legal and                                        environmental issues related to work projects.
3.04. Ensure that they are qualified for any project on which they work or propose to           work by an appropriate combination of education and training, and experience.
3.05. Ensure an appropriate method is used for any project on which they work or                propose to work.
3.06. Work to follow professional standards, when available, that are most                               appropriate for the task at hand, departing from these only when ethically or                technically justified.
3.07. Strive to fully understand the specifications for software on which they work.
3.08. Ensure that specifications for software on which they work have been well               documented, satisfy the users’ requirements and have the appropriate approvals.
3.09. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which they work or propose to work and provide an uncertainty assessment of these estimates.
3.10. Ensure adequate testing, debugging, and review of software and related                         documents on which they work.
3.11. Ensure adequate documentation, including significant problems discovered                  and solutions adopted, for any project on which they work.
3.12. Work to develop software and related documents that respect the privacy of                 those who will be affected by that software.
3.13. Be careful to use only accurate data derived by ethical and lawful means, and                use it only in ways properly authorized.
3.14. Maintain the integrity of data, being sensitive to outdated or flawed                                  occurrences.
3.15 Treat all forms of software maintenance with the same professionalism as new             development.

Principle 4: JUDGMENT
Software engineers shall maintain integrity and independence in their professional judgment. In particular, software engineers shall, as appropriate:
4.01. Temper all technical judgments by the need to support and maintain human                  values.
4.02. Only endorse documents either prepared under their supervision or within                    their areas of competence and with which they are in agreement.
4.03. Maintain professional objectivity with respect to any software or related                       documents they are asked to evaluate.
4.04. Not engage in deceptive financial practices such as bribery, double billing, or                other improper financial practices.
4.05. Disclose to all concerned parties those conflicts of interest that cannot                              reasonably be avoided or escaped.
4.06. Refuse to participate, as members or advisors, in a private, governmental or professional body concerned with software related issues, in which they, their employers or their clients have undisclosed potential conflicts of interest.

Principle 5: MANAGEMENT
Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. In particular, those managing or leading software engineers shall, as appropriate:
5.01. Ensure good management for any project on which they work, including                         effective procedures for promotion of quality and reduction of risk.
5.02. Ensure that software engineers are informed of standards before being held to            them.
5.03. Ensure that software engineers know the employer’s policies and procedures for protecting passwords, files and information that is confidential to the employer or confidential to others.
5.04. Assign work only after taking into account appropriate contributions of                         education and experience tempered with a desire to further that education and            experience.
5.05. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which they work or propose to work, and provide an uncertainty assessment of these estimates.
5.06. Attract potential software engineers only by full and accurate description of                  the conditions of employment.
5.07. Offer fair and just remuneration.
5.08. Not unjustly prevent someone from taking a position for which that person is                suitably qualified.
5.09. Ensure that there is a fair agreement concerning ownership of any software,                processes, research, writing, or other intellectual property to which a software             engineer has contributed.
5.10. Provide for due process in hearing charges of violation of an employer’s policy             or of this Code.
5.11. Not ask a software engineer to do anything inconsistent with this Code.
5.12. Not punish anyone for expressing ethical concerns about a project.

Principle 6: PROFESSION
Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. In particular, software engineers shall, as appropriate:
6.01. Help develop an organizational environment favorable to acting ethically.
6.02. Promote public knowledge of software engineering.
6.03. Extend software engineering knowledge by appropriate participation in                          professional organizations, meetings and publications.
6.04. Support, as members of a profession, other software engineers striving to                      follow this Code.
6.05. Not promote their own interest at the expense of the profession, client or                        employer.
6.06. Obey all laws governing their work, unless, in exceptional circumstances, such              compliance is inconsistent with the public interest.
6.07. Be accurate in stating the characteristics of software on which they work, avoiding not only false claims but also claims that might reasonably be supposed to be speculative, vacuous, deceptive, misleading, or doubtful.
6.08. Take responsibility for detecting, correcting, and reporting errors in software              and associated documents on which they work.
6.09. Ensure that clients, employers, and supervisors know of the software                             engineer’s commitment to this Code of ethics, and the subsequent ramifications           of such commitment.
6.10. Avoid associations with businesses and organizations which are in conflict                   with this code.
6.11. Recognize that violations of this Code are inconsistent with being a                                    professional software engineer.
6.12. Express concerns to the people involved when significant violations of this                    Code are detected unless this is impossible, counter-productive, or dangerous.
6.13. Report significant violations of this Code to appropriate authorities when it is clear that consultation with people involved in these significant violations is impossible, counter-productive or dangerous.

Principle 7: COLLEAGUES
Software engineers shall be fair to and supportive of their colleagues. In particular, software engineers shall, as appropriate:
7.01. Encourage colleagues to adhere to this Code.
7.02. Assist colleagues in professional development.
7.03. Credit fully the work of others and refrain from taking undue credit.
7.04. Review the work of others in an objective, candid, and properly documented                 way.
7.05. Give a fair hearing to the opinions, concerns, or complaints of a colleague.
7.06. Assist colleagues in being fully aware of current standard work practices  including policies and procedures for protecting passwords, files and other  confidential information, and security measures in general.
7.07. Not unfairly intervene in the career of any colleague; however, concern for the employer, the client or public interest may compel software engineers, in good faith, to question the competence of a colleague.
7.08. In situations outside of their own areas of competence, call upon the opinions             of other professionals who have competence in that area.

Principle 8: SELF
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. In particular, software engineers shall continually endeavor to:
8.01. Further their knowledge of developments in the analysis, specification, design, development, maintenance and testing of software and related documents, together with the management of the development process.
8.02. Improve their ability to create safe, reliable, and useful quality software at                      reasonable cost and within a reasonable time.
8.03. Improve their ability to produce accurate, informative, and well-written                          documentation.
8.04. Improve their understanding of the software and related documents on which              they work and of the environment in which they will be used.
8.05. Improve their knowledge of relevant standards and the law governing the                      software and related documents on which they work.
8.06. Improve their knowledge of this Code, its interpretation, and its application to              their work.
8.07. Not give unfair treatment to anyone because of any irrelevant prejudices.
8.08. Not influence others to undertake any action that involves a breach of this                      Code.
8.09. Recognize that personal violations of this Code are inconsistent with being a                  professional software engineer.

Resources
The Software Engineering Code of Ethics and Professional Practice - Version 5.2 which is recommended by the ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices and jointly approved by the ACM and the IEEE-CS as the standard for teaching and practicing software engineering.