学术诚信与职业道德的感受和对未来学习与工作在诚信与道德方面的承诺
通过阅读《构建之法》P384~391以及参考阅读杜老师给出的链接,得出一个重要的结论:软件工程师的职业道德至关重要。软件工程师通过亲身参与或者教授软件系统的分析、说明、设计、开发、授权、维护和测试等实践工作,为社会做出了巨大贡献。正是由于他们在软件系统开发中起到的重要作用,软件工程师有很大的机会去造福或者危害社会,并有能力去促使或影响他人造福或者危害社会。为了尽可能确保这些影响是有利于社会的,软件工程师必须承诺自己所从事的职业能造福社会, 并且能够得到大众认可尊重。这一承诺要求软件工程师必须遵守下列《职业道德规范和实践标准》。这一《规范》包括了有关职业软件工程师的行为和决断的八项准则,涉及软件工程方面的实际工作者、教育工作者、经理、主管、决策制定者以及相关的受训人员和学生。这些准则指出了个人、小组和团体参与软件工程的道德责任关系,以及这些关系中的主要责任。《规范》也不是一个简单的道德算法,可以产生所有的道德上的决定。在某些情况下,一些标准可能会相互抵触或者与其他地方的标准相互抵触。在这种情况下,就要求软件工程师能够运用自己的道德判断能力,在特定的情况下做出最符合《规范》的行为。解决道德冲突最好的方法是对基本原则进行全面的思考,而不是去盲目的依靠一些具体条目。《规范》记录了这个行业的道德立场与标准。因此即使是对于这样普遍性的要求,《规范》依然为软件工程师以及他们的经理提供了支持。《规范》无论是对团队中的个人还是团队本身来说都提供了一个道德基础。《规范》也规定了那些对软件工程师或其团队来说道德上不正当的要求。以下是我通过阅读《规范》后印象比较深刻的几项准则内容:
- 原则1:公众
- 对自己分内工作负有全部责任
- 综合考虑软件工程师,雇主,客户,用户与公众的利益
- 软件是安全的,符合规范的,通过适当的测试,不降低生活的质量,不侵犯隐私,不对环境造成伤害;只有当以上条件都能够有充分确认,才认可这个软件。软件的终极效用应该是公益的
- 把任何对用户、公众及与软件和相关文档有联系的外界人员可能造成的危害,告知相关人员或者专家。
- 在所有关系到软件或者相关文件、方法和工具的的声明,尤其是在那些公开声明中,要做到公正并避免欺诈。
- 鼓励自愿将专业技能用于公益事业,促进公共学科教育的发展。
- 原则2:客户与雇主
- 不故意使用那些获得或保留的非法或者不道德的软件。
- 只在正确地授权后使用客户或雇主的资产,并且在客户或雇主的知识和允许中进行。
- 尽可能保护雇主或客户的利益,除非出于更高的道德考虑,在这种情况下,向雇主或合适的权力机构反映道德问题。
- 原则3: 产品
- 力求高质量,可接受的成本和合理的计划;弄清出你做出的所有影响较大的权衡,并且确保它们被雇主和客户所接受,并且把你的计划提供给用户和公众来考虑。
- 对于任何你工作或者提出的项目,要对费用,调度,人员,质量和产出进行现实的和量化的评估,而且要给出对你的评估的不确定性的估计。
- 确保对于你在做的项目的程序和文档,要有足够的测试,调试和复审。
- 开发尊重用户隐私的软件和文档。
- 原则4: 判断
- 只签署并认可这样的文档:要么是自己管理之下的,要么是自己职权范围且已在业内达成共识的。
- 不参与贿赂、重复收费等不正当的经济行为。
- 原则5: 管 理
- 对其从事的项目保证良好的管理,包括提高质量和减少风险等有效手段;
- 在雇佣软件工程师时,需实事求是地介绍雇佣条件;
- 提供公正和合理的报酬;
- 不能不公正地阻止一个人取得可以胜任的岗位;
- 应对违反雇主利益或道德观念的指控,提供正规的听证过程;
- 不要求软件工程师去做任何与道德规范相违背的事;
- 原则6: 职业
- 不以牺牲职业、客户或雇主利益为代价,谋求自身利益;
- 服从所有监管作业的法规,在这种要求与公众利益有不一致时例外;
- 对所从事的软件和相关的文档,负起检测、修正和报告错误的责任;
- 在出现明显违反本规范时,应向有关当事人表达自己的担忧,除非在没有可能、会影响生产或有危险时才可例外;
- 原则7: 同事
- 鼓励同事坚持这个准则。
- 在开发过程中帮助同事。
- 对引用别人的工作注明来源,抵制未经允许的引用。
- 不能不正当地干涉同事的工作。但是,从老板角度出发,如果前一条与公司或公共利益冲突,软件工程师可以对同事的工作提出置疑。
- 原则8: 自身
- 加强各个方面的能力——分析,标准化、设计、开发、维护、测试、写文档、管理项目进程等。
- 提高能力,在合理的时间内,利用合理的花费,去实现安全、可靠、高质量的软件。
- 不因为偏见而对任何人不公。
此外,我看到《构建之法》第387页讲到绩效评估、团队中会不会出现“劣币驱逐良币”或者“不敢犯错误”的现象,其中举了一个例子:NBA球星科比的投篮不中次数已经是历史第一,超越了大部分NBA球员的所有投篮数。这么多投篮不中,应该惩罚吗?如果要严厉惩罚的话,科比,或者球队会有更好的成绩吗?在我看来,科比在“打铁”次数上成为NBA历史第一,这样的纪录的确有些尴尬,但不能单纯凭这一数据就说科比是“铁神”。其实是科比具备了充分的篮球能力,赢得了全队的信任,他才有机会去投那么多球,才有机会“打铁”那么多次,从这一点来看,这就等于是对其能力的一种认同。如果他在比赛中没有投更多的球,人们就会质问他为什么不投?正因为科比有冒险精神,能够带动全队,使自己和球队打得更具侵略性和持久性,也正是因为科比具备了这样的能力,球队才会要求他多投篮。所以,我觉得作为软件工程人员也应该具备冒险精神,敢于犯错,同时也应该做好风险分析,做好事后的解决问题的应对措施。绩效必须依靠个人或者几个人甚至团队带动起来的,所以我们可以通过观察以及记录数据,反馈当前状况,调整自己的状态或者团队的状态。
以下是我本人对未来学习与工作在诚信与道德方面的承诺:
- 未经许可,不抄袭别人的智力成果
- 如果转载他人文件,主动加上引用
- 坚决抵制做危害社会以及人类的事
- 不以牺牲用户以及公司利益而谋取个人利益
- 在开发过程中与同事互帮互助
- 不做有非法保留和获取用户信息的软件
- 对自己做的软件犯下的错担负起应有的责任
- 尊重用户的隐私,保护用户隐私
- 尽可能保护雇主以及用户的利益