当前位置:网站首页>浅谈程序员的职业操守
浅谈程序员的职业操守
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 永不停止学习
四、写在最后
边栏推荐
猜你喜欢
随机推荐
劝退背后。
小身材有大作用——光模块寿命分析(二)
使用.NET简单实现一个Redis的高性能克隆版(一)
R语言绘制时间序列的自相关函数图:使用acf函数可视化时间序列数据的自相关系数图
Five super handy phone open-source automation tools, which is suitable for you?
苹果发布 AI 生成模型 GAUDI,文字生成 3D 场景
"Digital Economy Panorama White Paper" Financial Digital User Chapter released!
当前页面的脚本发生错误如何解决_电脑出现当前页面脚本错误怎么办
Matlab学习13-图像处理之可视化GUI程序
R语言ggplot2可视化:使用patchwork包的plot_layout函数将多个可视化图像组合起来,ncol参数指定行的个数、byrow参数指定按照行顺序排布图
最牛逼的集群监控系统,它始终位列第一!
无监督学习KMeans学习笔记和实例
bash case用法
How to do App Automation Testing?Practical sharing of the whole process of App automation testing
3年软件测试经验,不懂自动化基础...不知道我这种测试人员是不是要被淘汰了?
缓存--伪共享问题
肝完Alibaba这份面试通关宝典,我成功拿下今年第15个Offer
从零开始C语言精讲篇5:指针
从零开始Blazor Server(6)--基于策略的权限验证
矩阵的计算[通俗易懂]