无我编程:你的工作不代表你

2023-11-09

原文作者:Jeff Atwood

Johanna Rothman是这么描述“无我编程”这个概念的:

25年前,Gerald M. Weinberg写了《程序开发心理学》。我在1977年发现了这本书,然后做了一个决定:放弃在电台做DJ的工作,打算做一个无我的软件工程师。

“无我编程”发生在开发阶段,表现为技术团队经常通过同级评审的方式来发现软件中的缺陷。目的是让所有人(包括作者)都参与寻找缺陷,而不是证明软件产品里没有缺陷。人们会交换各自手上的代码,相互进行评审,并且大家都有这样的共识:代码的原始作者会犯错误,而作为评审者,他们会找出这些错误。最后的结果是,每个人都从自己的错误以及别人的错误里有所长进。这就是“无我编程”的由来。不管我的工作做得“完美”还是“有欠缺”,“我”本人并不对正在开发中的产品负责。“我”的价值体现在尽心尽职,以及从错误中学习而付出的努力,而不是我的工作的最初成果。

把自我价值观从本职工作中分离出来是很重要的!


这让我想起了电影《搏击俱乐部》(Fight Club)里的几句台词:

你的工作不代表你。你的价值不在于你银行里有多少钱,也不在于你穿什么鞋,或者你钱包里的任何证件。

如果你的工作不代表你,接受别人对你工作的批评就要容易得多了!

遗憾的是,对工作不敬业的人在这个世界上随处可见。而对于我们这些热爱编程、并且已经成为行家里手的人来说,我们有走向另一个极端的趋势——我们太在乎了

在程序开发的早期岁月里,程序被认为是程序员的私有财产。一个人不会去读他的同事的程序,就像他不会在未经许可的情况下去读别人的情书。从本质上来说,程序就是程序员写给机器的情书,里面充满了只有当事人才知道的私密信息。于是,程序里充斥着宠物的名字,还有情人之间的昵称——他们活在幸福的二人世界里,眼里只有对方。这种程序对于局外人来说,简直不知所云。

那是《代码大全》里我最喜欢的论述之一。这得归功于Michael Marcotty。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无我编程:你的工作不代表你 的相关文章

  • JSP JSTL 判断List 大小

    JSTL判断List 大小必须先引入的二个核心包 jsp页面判断获得action设置attribute的List是否为空或者list size的长度 就可以用fn这个标签
  • python写的一个-批量下载股票年报的小工具

    python写的一个 批量下载股票年报的小工具 from urllib import request import requests import os import openpyxl print os getcwd def getKeyL
  • Java中怎么定义字符串?

    字符串是 Java 中特殊的类 使用方法像一般的基本数据类型 被广泛应用在 Java 编程中 Java 没有内置的字符串类型 而是在标准 Java 类库中提供了一个 String 类来创建和操作字符串 在 Java 中定义一个字符串最简单的

随机推荐

  • oracle 学习之:for循环中包涵select语句

    oracle中的for循环用法比较简单 但是在一次用到包涵select语句的for循环时 还是发现了一些自己以前没有注意的东西 我的代码如下 declare val1 date val2 date begin for i in select
  • pc端微信二维码支付流程及问题排查

    场景 在做pc端的支付时 我们常用的就是生成二维码让用户去扫码支付 like this 当然你想像我一样有个二维码支付的图片 还需要先申请微信支付的native支付功能 native支付会提供一个二维码供用户扫码 页面内 通常会有一个按钮
  • Rust学习记录 -> 关于Crates.io的问题

    文章目录 前言 问题描述与解析 1 版本更迭带来的依赖包适配问题 2 openssl 总结 前言 最近我在使用rust语言编写一个商场后端demo时 由于需要与mysql进行交互以及序列化等操作 所以通过crates io下载了许多外部依赖
  • SLAM评估工具evo的使用

    evo官方指南 参考博客 lt 官方手册 这篇参考博客 完全可以掌握evo的基本操作 gt Then 实践出真知 1 安装evo sudo apt install python pip pip install evo upgrade no
  • 阿里云图标使用 (symbol 引用方式)

    阿里云图标网址 https www iconfont cn 一 登录注册 这个简单 就不说了 二 给当前项目找图库 2 1 添加项目 2 2 寻找图标添加入库 添加入库 2 3 打开入库 的图标添加到指定项目 添加到当前项目 1 2 三 项
  • 在线考试平台搭建

    出于工作需要 在万能的Github上找到的考试平台 在此感谢平台的创作者 github https github com YXJ2018 SpringBoot Vue OnlineExam 在线考试系统 下载该项目后 因为各种各样的原因 导
  • 【Vue3】Fragment组件、Teleport组件和Suspense组件

    Fragment组件 在Vue2中 组件必须有一个根标签 在Vue3中 组件可以没有根标签 内部会将多个标签包含在一个Fragment虚拟元素中 好处 减少标签层次 减少内侧占用 Teleport组件 是一种能够将我们的组件html结构移动
  • 【GIT 坑&常见问题】

    文章目录 前言 git github 使用问题 坑 连接不上github 1 过后再连 2 使用某些途径 3 修改git 的http 和https的代理 4 使用VS 在创建远程仓库的时候 别在远程仓库进行修改 git LFS上传超过100
  • C++ try{} catch(…){} 与 Throw()的编译器优化

    try catch 用 try catch 来捕获C 中一些意想不到的异常 这种方法在VC中其实是靠不住的 例如下面的代码 try BYTE pch pch BYTE 00001234 给予一个非法地址 pch 6 对非法地址赋值 会造成A
  • Linux中主线程和子线程的终止次序

    Linux中pthread是我们进行多线程并发时经常使用的 pthread创建的子线程和主线程的终止顺序有什么样的关系 下面通过代码来总结下 在代码测试前 先说下结论 1 主线程和子线程之间没有必然的退出次序关系 主线程退出 子线程可以继续
  • 每日一练python:求输入两个数之间的所有质数

    前言 立个flag 每天更新一则今日学到的知识 为成为一个合格的AI训练师而努力 今天将用两种编程思路来求两个数之间的所有质数 方案一 coding utf 8 输入数据 st input input first number gt nd
  • MySQL读写锁总结

    读写锁 读锁 是一种共享锁 一个事务持有读锁时 不会阻塞其它的读锁 其他事务都可以对该数据进行读取 写锁 是一种排他锁 一个锁持有写锁会阻塞其他的写锁和读锁 从而保证了一个只有一个事务进行写操作 并且防止其他事务读取正在写入资源 避免了脏读
  • mybatis 运用 PageHelper 实现分页

    1 添加pom依赖
  • Charles破解安装

    抓包神器 charles 官网下载安装Charles https www charlesproxy com download 百度找到的资源 https pan baidu com s 1i59ekw1 文件的密码 xclient info
  • Mac 环境下Android studio无法打开解决

    最近在使用mac电脑虽然鼓捣了半天终于能翻墙了 但是gradle下载的龟速真是让我不敢恭维啊好几次都是下载1到2个小时候由于没耐心了不再等了 接下来我们就介绍个解决mac创建工程等待半天无法打开的方法 1 首先我们需要下载对应的greale
  • 查看欧拉系统服务器ip,euler os 查看center进程命令

    euler os 查看center进程命令 内容精选 换一换 如果日志目录下没有生成日志文件 您需要检查Host侧对应进程是否正常运行 如果Host侧进程不存在 请参考启动日志进程启动进程 执行如下命令 执行如下命令 如果日志目录下没有生成
  • Android native 层使用opengl渲染YUV420p和NV12

    Ndk中使用Mediacode解码 android mediacodec 编码demo java NDK中使用mediacodec编码h264 Android native 层使用opengl渲染YUV420p和NV12 android 使
  • 剑指offer_第17题_树的子结构_Python

    题目描述 输入两棵二叉树A B 判断B是不是A的子结构 其中空树不是任意一个树的子结构 class TreeNode def init self x self val x self left None self right None 解题思
  • 细说设计模式七大原则(6):开闭原则

    2 8 1 基本介绍 英文名 Open Closed Principle OCP 定义 一个软件实体如类 模块和函数应该对扩展开放 对修改关闭 开闭原则是编程中最基础 最重要的设计原则 一个软件实体如类 模块和函数应该对扩展开放 对提供方
  • 无我编程:你的工作不代表你

    原文作者 Jeff Atwood Johanna Rothman是这么描述 无我编程 这个概念的 25年前 Gerald M Weinberg写了 程序开发心理学 我在1977年发现了这本书 然后做了一个决定 放弃在电台做DJ的工作 打算做