当前位置:网站首页>浅谈程序员的职业操守
浅谈程序员的职业操守
2022-08-03 12:07:00 【InfoQ】
一、为什么程序员需要职业操守
1.1 行业的壮大

- 从业人员已经过亿
- 计算机/电子设备的数量超过人类数量
- 软件监控、协调着全社会的运转
1.2 影响面扩大
- 科研:地面软件出错,使用了错误的单位,导致火星气候探测者号在火星大气层中下降太深,被撕成了碎片。
- 医疗:Therac-25 放射治疗机事故。由于进程冲突,Therac-25 的高能电子束导致3人丧生,还烧伤了另外3人。
- 商业:因为用错标识符,遗留在系统中的死代码被激活,导致骑士资本集团在45分钟内损失了 4.6 亿美元。
- 交通:丰田汽车的堆栈溢出漏洞,可能导致汽车加速失控,最终可能导致多达89人遇难。
二、什么是职业操守?
2.1 职业操守的定义
- 诚信的价值观
- 诚实地制作工作报告
- 不要泄密给竞争对手
- 医生:救死扶伤,爱岗敬业
- 魔术师:不公开魔术的秘密
- 公安干警:重视调查研究,处理案件不捕风捉影,主观臆断
- 法律工作者:忠于宪法和法律,坚持以事实为根据
- 教师:为人师表,关爱学生
- ...
2.2 软件开发人员的职业操守
- 为捍卫和维护计算机程序员职业的荣誉,我承诺,尽我的能力和判断力:
- 我不写有害的代码。
- 我生产的代码将永远是我最好的作品。 我不会故意让那些在行为或结构上有缺陷的代码累积起来。
- 我将在每次发布时提供快速、确定和可重复的证据,证明代码的每个元素都能正常工作。
- 我将经常进行小规模的发布,不妨碍其他人的进展。
- 我将无畏地、毫不留情地利用一切机会改进我的创作。我绝不让它变更差。
- 我将尽我所能尽可能地提高自己和他人的生产力。我不会做任何降低生产力的事。
- 我将一直确保其他人能够补上我的位置,我也能够为其他人补位。
- 我将给出在数量级和精确度上都靠谱的预估。我不会做出没有把握的承诺。
- 如果我的程序员同事拥有足够的操守、标准、纪律和技能,就能赢得我的尊重。任何其他的属性或特征都不会成为我尊重程序员同事的因素。
- 我永远不会停止学习和改进我的技艺。
三、程序员的职业操守
3.1 关于伤害
- 我不写有害的代码。
- 我生产的代码将永远是我最好的作品。 我不会故意让那些在行为或结构上有缺陷的代码累积起来。
- 我将在每次发布时提供快速、确定和可重复的证据,证明代码的每个元素都能正常工作。
3.1.1 何谓伤害
- 对社会造成的伤害
- 对你的同行造成的伤害
- 对未来的程序员造成的伤害
- 对功能/结构造成的伤害
3.1.2 直面伤害
- 工作完美,但不可修改
- 不能正确地做任何事情,但却容易修改
- 行为价值:让程序能够正确工作
- 结构价值:让程序易于调整

- 容易测试
- 容易修改
- 容易重用
3.2 关于集成
- 我将经常进行小规模的发布,不妨碍其他人的进展。
- 我将无畏地、毫不留情地利用一切机会改进我的创作。我绝不让它变更差。
- 我将尽我所能尽可能地提高自己和他人的生产力。我不会做任何降低生产力的事。
3.2.1 为什么需要关注集成
3.2.2 持续集成
- 快速发现错误
- 防止分支大幅度偏离主干
3.2.3 随机善意行为
- 优化字段的命名,让代码可读性更强
- 清理无用代码,减少理解成本
- 调整代码结构,保持代码的灵活性
3.3 关于团队合作
- 我将一直确保其他人能够补上我的位置,我也能够为其他人补位。
- 我将给出在数量级和精确度上都靠谱的预估。我不会做出没有把握的承诺。
- 如果我的程序员同事拥有足够的操守、标准、纪律和技能,就能赢得我的尊重。任何其他的属性或特征都不会成为我尊重程序员同事的因素。
- 我永远不会停止学习和改进我的技艺。
- 有团队精神,能够被补位,避免团队因知识断层而陷入瘫痪;
- 诚实合理地预估,不轻易承诺;
- 只尊重职业技能、纪律、标准和操守,不因其他因素彼此歧视;
- 永不停止学习,跟上行业的变化是对职业的尊重,也是对自己的事业负责。
3.3.1 诚实合理地预估,不轻易承诺
- 不要轻易给出一个具体时间,诚实地保持诚实
- 对项目的预估不能只是一个交付日期,而是一个时间范围
- 进行工作项拆解,找出隐藏在里面的模糊因子(不确定因素)
- 与经理交流,花更多时间细化模糊因子,如此来回递归式操作
- 针对最好情况、最坏情况、普通情况,分别估计其可能发生的概率,再针对这3种情况预估日期范围
3.3.2 永不停止学习
四、写在最后
边栏推荐
猜你喜欢
随机推荐
字符串本地化和消息字典(二)
信创建设看广州|海泰方圆亮相2022 信创生态融合发展论坛
后台图库上传功能
pandas连接oracle数据库并拉取表中数据到dataframe中、生成当前时间的时间戳数据、格式化为指定的格式(“%Y-%m-%d-%H-%M-%S“)并添加到csv文件名称中
-树的高度-
使用.NET简单实现一个Redis的高性能克隆版(一)
【云原生 · Kubernetes】部署Kubernetes集群
从器件物理级提升到电路级
mysql advanced (twenty-four) method summary of defense against SQL injection
一个扛住 100 亿次请求的红包系统,写得太好了!!
如图,想批量读取mysql,批量处理,有哪个地方参数需要改变呢?
R语言使用ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、使用tab_add_vline函数自定义表格中竖线(垂直线)的线条类型以及线条粗细
fastposter v2.9.0 程序员必备海报生成器
4500 words sum up, a software test engineer need to master the skill books
利用ChangeStream实现Amazon DocumentDB表级别容灾复制
LeetCode-48. 旋转图像
别再用if-else了,分享一下我使用“策略模式”的项目经验...
bash for循环
微信为什么使用 SQLite 保存聊天记录?
RTP协议分析





![[论文阅读] (23)恶意代码作者溯源(去匿名化)经典论文阅读:二进制和源代码对比](/img/48/8d2cdf33862dc4622230c69d381b82.png)



