<<软件研发之道>>经验法则4---不要认为别人是笨蛋

2023-11-02

 转载自: http://book.51cto.com/art/201107/277211.htm

 

参考书籍<<软件研发之道>>

我在这里重申:软件是一种知识产权。你必须运用智慧才能开发出软件。你在工作中调用的智慧越多,你最终得到的知识产权的价值就越高。很明显,人们必须不断思考。

曾经有人问我:“你认为在软件开发中最困难的事件是什么?”

我毫不犹豫地回答:“让人们思考。”

信不信由你,大多数人都不愿意思考。他们认为自己愿意思考,但事实恰恰相反。人们很容易不假思索并贸然给别人戴上傻瓜的帽子(我们微软是这样说的):“那家伙是个傻瓜!”永远没人会在意傻瓜的所作所为。即使他做出了贡献,人们也会认为他只是个累赘、傻瓜。

当然,你不能将任何工作托付给傻瓜来完成。你对傻瓜的最大期望,就是他不会造成任何破坏,不会使工作变得一团糟。至少可以说,这是你的团队成员的最低期望。

 

或者你可能就是傻瓜。你是不是觉得搞不清工作的内容,感到缺能力,这里你也成为了累赘。

我们微软无法接受这种情况。我们需要大家主动投入-----每个人都出一份力。每一名团队成员都能够说出如何缩短产品上市时间、产品什么时候推出新版本。每个人心里都有清晰的概念。你必须让团队所有成员积极思考

判断一个是否在思考,最简洁的方法,是看他是否注意倾听他人的观点和批评意见。认真思考的人听到了可能比自己更好的想法时,会克制住争强好胜的念头。他们会要求自己以谨慎的态度,公平正确地评估新得到的、可能很有价值的信息。

他们能够听出哪些话不够客观,是对方自我意识太强的反映,因为他们完全理解了人性的本质,并运用这种理解对原始信息进行提炼。

善于思考的人能够以最纯粹的方式评估收到的全部信息。因引,他们能够避免以下两种现象:

第一种现象称防范心理,往往因为信息接受方误解了批评意见造成的。创造知识产权的过程需要大量的情感和创造性投入。在创作者看来,对产品及其创建过程提出批评或更好的

想法,似乎都是对他本人的批评。如果接受完全沉浸在思考之中,那么就不会存在防范心理。因为经过反复思考,他将会对信息进行“净化”,过滤掉其中的自我威胁和主观因素

不过,能这样的人并不多见。

 
不要认为别人是笨蛋

对于善意的忠告,懒于思考的人不是想听更多信息以深入思考别人的意见,而是从一开始就设立层层防卫。这难免会造成正面的冲突,开始猛烈反驳他人的意见,因而无法准确评估收到的信息。如果一方锲而不舍地向另一方提出忠告或批评,接受方就面临一个进退两难的境地:要么认为忠告和批评确实具有价值(但已经被断然拒绝),要么认为对方是一个将自己观念强加于他人的傻瓜。往往会给提出善意忠告的一方戴上傻瓜的帽子。

第二种现象比第一种现象更为常见,即互相排斥。自己提出的忠告被对方因为恐惧或其他心病再三拒绝,于是也同样会认为拒绝接受自己好意的一方是傻瓜。

认为他人是傻瓜会造成严重的后果,代价高昂,有伤感情,但你会不由自主地这样做,特别是当你遭到断然拒绝的时候。而且,如果上级认为某个人是傻瓜,那么他的下属亦步亦趋,也同样会这么想。

当然,要解决这个问题,你必须进行深入思考,分析他人提供的信息中有哪些积极因素,并虚心接受建议。如果接受方难以接受你的建议,想办法让他容易接受。至少,向他说明你的感受,并指出他的拒绝让你很沮丧。相反,如果有人不断向你提出"恶意"反馈或"糟糕"的建议,那么你需要自我反省,确保本能的防卫心理不会影响你做出准确判断。如果你将这种做法作为团队的行为准则,那么,一旦有人犯错,其他团队成员会立即指出这种错误,并因此形成一种良好的沟通氛围。

死亡行军

在任何软件项目开始之初,开发团队往往还在做前一个项目的收尾工作。如果这是一个特别漫长而且困难的项目(几乎所有软件项目都是如此),那么,这段结束期被人们贴切地称做"死亡行军"。

如果前一个项目的收尾工作拖得太久(比方说,先前已经延迟了几次,又出人意料地拖延数月),如果管理层的沉默和容忍已经到了极限,如果客户对于产品未能履行承诺而大发雷霆,如果媒体(或你的同事)也在暗中嘲讽,那么,令人愉快的项目收尾工作可能会演变为一次"死亡行军"。即使一切工作均已顺利如期完成("如期"是一个关键概念),如此漫长的项目也会让团队成员感到筋疲力尽,身心都需要休息。他们构想中的优良设计在他们自己手中到头来业已降格为一款平庸的产品。在整个项目开发过程中,他们一直在做不得已的让步。他们清楚,为了如期交付产品,产品中存在着多少漏洞,代码是多么地差劲,又存在有多少无人能懂的糟糕代码。他们担心产品根本无法正常运行。在整个过程中,不断的妥协让他们放弃了对技术的完美追求。虽然他们并不为此感到自豪,但对于能够如期交付产品,他们却觉得宽慰。尽管面临严峻的挑战,但他们依然坚持到了最后。在一个工作分配均衡的项目中,每一名团队成员所做的个人牺牲都是一种英雄行为,都是成功交付产品的关键因素。事实也确实如此。每个人付出的巨大努力都非常重要,不可或缺。

现在他们想要休息、得到回报、进行休整、参加培训、做点研究,并在最喜爱的计算机上玩点儿轻松的事情。

但是,需要注意的是,他们已经历尽千辛万苦,勉勉强强地完成了上一个项目,整个团队已经把结束上一个项目看做是最终的目标,最后的胜利及终结。这种专注与决心是如期交付前一个项目的关键。要想如期交付软件,整个团队必须全力投入这个唯一的目标。但现实情况是,一波未平,一浪又起,另一个项目又接踵而至,这会导致各种不良反应。此刻,软件开发人员表现出的最常见反应(身心俱疲)将成为最大的危险。

身心俱疲

开发人员觉得身心俱疲对于软件领域的影响,就如同巴拿马运河的建筑工人患上疟疾一般可怕。在身心俱疲时,你不愿再接受任何工作。你会感到疲劳和沮丧,提到软件开发就头疼。其症状包括以下几点。

软件产品让人恶心,这种感受挥之不去。

认为管理层毫无计划,无可救药。

一想到下一个版本就觉得不舒服。

对于任何解决问题的尝试都有一种愤世嫉俗的悲观。

完全听不进别人的忠告,挂在嘴边的话就是"那家伙是个傻瓜"。

对计算机失去了兴趣。

这时,你懒得去翻看PC Week和Infoworld等技术刊物(Dr. Dobb's和Midnight Engineering也不例外),也觉得科幻小说无聊至极。虚拟现实游戏也开始变得像人工智能一样无聊。对于新版本的MFC更是置之不理。甚至最新型号的计算机也无法引起你的兴趣。

遇到这种情况,团队主管(他们自己也可能会感到身心俱疲)应立即采取防范措施,因为虽然这种情绪的传染性并不强,但如果条件适宜,它也会在几星期或几个月内影响到团队中的大部分成员。开发人员身心俱疲造成的基本问题是,对于开发出伟大软件至关重要的工作激情已经消失殆尽,他们失去了前进的方向,甚至完全丧失工作动力

工作激情在软件开发中的作用不容忽视。对一些人而言,计算机是他们自我表达和自我发现的工具。计算机对于他们就像是钢笔对于诗人、调色板对于

画家、编译器对于软件开发人员一样重要。一旦这种激情耗尽,他们就再也没有兴趣开发那些看不见但却彼此关联且动态变化的"比特流"了。

我在此调侃陷入身心俱疲状态的开发人员,因为和所有软件开发人员一样,我害怕进入这种状态。身心俱疲对于开发人员意味着艺术感的终结,是一种误入歧途,一种萎缩,一种退化。

 
身心俱疲

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

<<软件研发之道>>经验法则4---不要认为别人是笨蛋 的相关文章

  • 【深度学习】RetinaFace人脸检测简要介绍

    介绍 Insight Face在2019年提出的最新人脸检测模型 原模型使用了deformable convolution和dense regression loss 当时在 WiderFace 数据集上达到SOTA 基网络有三种结构 基于
  • Java使用base64格式上传图片

    使用蚂蚁金服ui直接返回的是base64格式的图片 通过post方式进行请求 然后在控制器中以字符串的形式进行接收 接收之后进行转图片存储处理 只保存路径到数据库中 base64字节转图片代码 package com utils impor
  • qsort函数实现对任意数据的排序

    学会使用qsort函数排序 qsort介绍 compare函数介绍 不同的数据类型相应的比较函数定义 对数组元素为数字的 数组元素为字符时比较函数定义 结构体数据比较函数定义 qsort介绍 qsort函数是一个库函数 它的作用是对数据进行
  • 14.1 矩阵幂级数

    文章目录 矩阵的幂 矩阵幂的极限 谱半径与范数 矩阵幂级数 矩阵的幂 现在讨论下矩阵的n次方的问题 比如下面的矩阵 A 1
  • 医学图像配准MATLAB实现

    医学图像配准MATLAB实现 医学图像处理在临床诊断 肿瘤治疗和医学信息融合等领域中起着至关重要的作用 医学图像配准作为医学图像处理中的重要研究方向之一 其目的是将通过不同机器或技术获取到的不同角度或时间段的医学图像进行对比 以便医生或研究
  • 七种排序算法

    排序算法主要分为三大类 分别是插入排序 选择排序和交换排序 其中插入排序包括直接插入排序和希尔排序 选择排序包括直接选择排序和堆排序 交换排序包括冒泡排序 快速排序和归并排序 各种排序算法的时间复杂度和空间复杂度如下 一 插入排序 1 直接

随机推荐

  • android之fragment与fragment、activity与activity、fragment与activity之间的通信

    Broadcast广播接受者可以实现所有通信 activity与activity之间的通信 当下一个activity关闭时传值给上一个activity 主要用得到startActivityForResult和onActivityResult
  • epoll_create和epoll_create1

    名字 epoll create epoll create1 创建epoll文件描述符 摘要 include
  • 创建自定义类的对象数组

    源代码 public class Student static int number 0 静态变量的访问可以不用创建类的实例就可就可使用 lt 类名 属性 gt 的方法访问 String name 学生姓名 Student 无参构造函数 S
  • 【HDLBits 刷题 12】Circuits(8)Finite State Manchines 27-34

    目录 写在前面 Finite State Manchines 2014 q3c m2014 q6b m2014 q6c m2014 q6 2012 q2fsm 2012 q2b 2013 q2afsm 2013 q2bfsm 写在前面 HD
  • C++中的虚函数表和虚函数在内存中的位置

    目录 结论 今天在看别人面经的时候发现了这个问题 一时间发现自己也说不清楚 还想当然的以为 虚函数表既然是类对象公有的 那么应该在静态存储区 想当然终究只是想当然 经过试验得知 这种想法是错误的 由于不同的编译器在虚函数表上的实现可能不同
  • Jdk1.8新特性 - 方法引用

    一 说明 方法引用使用一对冒号 标识 通过方法的名字来指向一个方法 是函数式接口的另一种书写方式 通过方法引用 可以将方法的引用赋值给一个Function变量 Lambda表达式一般用于自己提供方法体 而方法引用一般直接引用现成的方法 二
  • Linux系统shell脚本之根分区监控

    Linux系统shell脚本之根分区监控 一 脚本要求 二 脚本分析 三 执行脚本 查看执行输出文件 一 脚本要求 1 编写一个shell脚本 脚本名为disk per sh 2 脚本检测根分区使用率 如果根分区超过80 则显示使用率 且提
  • ES6笔记(解构)

    1 解构 解构通俗点说 就是通过一种特定格式 快捷的读取对象 数组中的数据的方法 基本用法 如果右边是对象 左边也要用对象的格式 解构出来就是变量了 再也不是属性了 解构对象 var oUser name aaa age 20 es5读数据
  • [QT_001]解决Ubuntu下Qt无法连接MySQL数据库[Linux环境]

    准备 简要思路 编译Qt下MySQL项目 使其重新生成libqsqlmysql so这个动态库 而后进行替换 编译项目过程中 项目配置文件需要引入使用到MySQL的头文件和库 所以需要安装MySQL 我的环境 1 Ubuntu 18 04
  • 对受控组件和非受控组件的理解,以及应用场景?

    一 受控组件 受控组件 简单来讲 就是受我们控制的组件 组件的状态全程响应外部数据 举个简单的例子 class TestComponent extends React Component constructor props super pr
  • 笨人可以学计算机吗,为什么有的笨人一旦开窍,其人生就像开了挂似的呢?

    前言 真正的天才 是懂得在别人面前装糊涂的人 但如果他受到某种刺激 装糊涂也就没有必要了 低调惯了的人 总有一天 会一鸣惊人 韬盛和夫 大自然有一种特有的现象 自作聪明的动物往往不会活的太长 而那些看起不起眼的动物 往往隐藏着巨大的力量 笨
  • Bootstarp入门教程(6) 表格

    基本案例 为任意 table 标签添加 table可以为其赋予基本的样式 少量的内补 padding 和水平方向的分隔线 table
  • Redis中的事务

    1 Redis事务的定义 Redis事务是一个单独的隔离操作 事务中的所有命令都会序列化 然后按照顺序地执行 事务在执行的过程中 不会被其他客户端发送来的命令请求所打断 其实就是一个缓存队列 将所有任务放入 然后再某一个阶段 将其中的任务拿
  • C语言(Head First C)-9_1:静态库与动态库:静态库

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 9 1 静态库与动态库 静态库 我们已经见识过标准库的威力了 现在是时候在代码中发挥这种威力了 本章内容 创建自己的库 并在多个程序中复用相同代码 通过动态库在运行时
  • DATA_FORMAT = 'NCHW' 和DATA_FORMAT = 'CHWN'

    转载自https blog csdn net qq 39622065 article details 81228915 NHWC batch in height in width in channels NCHW batch in chan
  • nginx日志文件删除后空间不能释放,必须重启服务才能释放空间

    一台nginx服务器发现磁盘空间撑爆了 进去看全是日志文件把磁盘写满了 可是用rm删除log文件后发现磁盘空间并没有被释放 明明文件没有了呀 郁闷 于是google下 未释放磁盘空间原因 在Linux或者Unix系统中 通过rm或者文件管理
  • 千万级规模高性能、高并发的网络架构经验分享

    from https www cnblogs com shanyou p 5048099 html utm source tuicool utm medium referral 架构以及我理解中架构的本质 在开始谈我对架构本质的理解之前 先
  • 最长回文---Manacher算法解析(俗称:马拉车算法)

    题目链接 https cn vjudge net contest 320014 problem E Problem Description 给出一个只由小写英文字符a b c y z组成的字符串S 求S中最长回文串的长度 回文就是正反读都是
  • vsCode快捷方式设置(ubuntu版本)

    ubuntu版本的vscode 快捷键设置的地方 文件 gt 首选项 gt 键盘快捷方式 按键绑定 gt 更改按键绑定
  • <<软件研发之道>>经验法则4---不要认为别人是笨蛋

    转载自 http book 51cto com art 201107 277211 htm 参考书籍 lt lt 软件研发之道 gt gt 我在这里重申 软件是一种知识产权 你必须运用智慧才能开发出软件 你在工作中调用的智慧越多 你最终得到