别说“我已经很努力了”

转自:http://blog.csdn.net/foruok/article/details/40247543

我们程序员的努力与挣扎有时非常尴尬,如果没有结果,都是徒然,都是说不得说不得……


    我自己做项目经理时,干的项目也经常延期……非常惭愧。而延期其实对研发团队成员、产品线、市场、销售、公司领导、客户、用户都是一种折磨。对其它人的折磨这里就不说了,谁被虐谁知道,至于有没有想死或者想灭谁谁的心就甭去管它了。作为程序员,我其实也只能体会到延期对程序员们的折磨。

也是蛮拼的

    在相当长的一段时间内,”也是蛮拼的“这个短语在网络上大行其道,我们先看看它的出处。

    先做剪报吧,这是我的强项。来自百度百科:

”也是蛮拼的“,出自爱奇艺热播剧《白衣校花与大长腿》,然后通过《爸爸去哪儿2》曹格之口使其发扬光大,在网络上被大家所熟知,并广泛传播。

    “也是蛮拼的”意思是:挺努力的意思,但是即使很努力了,却没有成功,具有反讽刺意味。

    本文就取这个意思。

当项目延期时

    我带的项目,很少有按期完成的,快给我根绳子吧……

    当项目延期时,领导一方面很怒,心中火火火,嘴上却要尽量安抚。人还真是矛盾啊,就像某个女人一面夸另一个女人”你很漂亮“一面腹诽”真让我恶心“一样,领导有时面对项目的延期,也是干捉急木办法,既愤怒又无力——他不能把你们都开了啊!

    此时项目经理也很无奈,大家都拼了几个月了,天天加班十一二点,很多人啪啪啪都免掉了,到临上线还要通宵,结果还是不行,上线了又出问题然后再被发回重审回炉再造……领导两眼血红只盼三几分钟就能完成 Hot Fix ,可是项目经理说:其实大家也是蛮拼的……

    领导听见这话操气得很呐,如果他是斧头帮帮主……

    项目经理又说,大家已经很努力了。

    领导再也按捺不住了:“努力有P用,你的工资论努力给的吗?不解决问题,任何的努力都是一坨屎!都是借口。甭拿努力当挡箭牌!你们天天打游戏只要出活儿比什么都强!”

    项目经理:没人打游戏——

    领导:“我是打个比方!别纠缠细节!”

    项目经理:其实大家真的蛮拼的……天天晚上加班,经常搞到凌晨——

    领导:“你们不努力行吗?难道我发给你们薪水,是上你们端着茶杯看报纸的?再说,努力是工作的基本要求!”

    项目经理:对,工作本来就应该努力,其实大家都知道——

    领导:“都知道为什么活没干好?是不是这帮人能力不行?你划拉一遍,谁不行就开掉,招一个新的进来。当然你的能力是大家都清楚的,我是说总有几个人上班时打游戏、聊天、刷微博、上淘宝……都没事儿干,你造吗?”

    项目经理:其实也不能把大家逼得太死,那样——

    领导:“我逼你了吗?”

    项目经理:我是说,从项目管理的角度来讲,应该提出要求,关注结果,让团队成员自己寻找达到目标的路径,没必要规定路该怎么走——只要完成就行。每个人都有自己的工作方式,让他们发挥自己的长处——

    领导:项目完成了?

    项目经理:一开始工期就给的有一些问题……

    领导:为什么不早说?

    项目经理:……

    领导:再给三天时间,一定要保质保量的上线!

    项目经理:好。

努力为什么让人操蛋

    “努力”原本是个褒义词。

    小时候老师给期末评语,如果写上“此子努力向上”之类的,父母都会欣慰的一笑。

    古训也说:少壮不努力,老大徒伤悲。

    努力学习,天天向上。好多学校的墙上都刷这个。

    囊萤映雪,凿壁偷光……这些词都教育学生娃们要努力。

    鬼谷子是个非常了不起的大咖,具有通天彻地之能,什么纵横家、兵家都拜其为祖宗,无论神学、占卜、术数、天文样样精通。他隐居在鬼谷,从不出世,但却左右了战国时期的天下大势。这都是因为它是超级明星秀的超级导师,打造了苏秦、张仪、孙膑、庞涓等天皇巨星。

    苏秦这个人口才很好,也很有远大抱负,师成下山后周游列国,想凭三寸不烂之舌谋富贵功名,可惜各个往后都不鸟他,他花光了积蓄,只好狼狈回乡。兄弟姐妹、嫂子哥哥、父母都不待见他,认为他就是个一事无成的喷子。苏秦很懊恼啊,可他坚信眼下只不过是人贱被人欺,总有一天他会让这些人高攀不起。于是他再次苦读,势必要疯狂涨姿势,振翅高飞。可是时光有限,一天就十二个时辰,有五个却要睡觉,太浪费啦。他还没学会辟谷之术,不眠术也还没入门,更没有周扒皮这样的好老板,只好另外想辙。嗳您别说,用心就是不一样,他后来真的想到了一个办法:把头发用绳子扎起来,悬在梁上,如果自己一打盹,头发就把自己揪醒,夜深的时候,如果觉得自己困了,就拿锥子刺自己的大腿,这样就能保持清醒。这么自虐了一阵,苏秦觉着已有小成,比起告别鬼谷子老师时的年少轻狂、无知无畏强太多了,就再次背着干粮,在一种亲友鄙夷的冷眼下,倔强地转身踏上了列国周游的旅程。

    后来苏秦身佩六国相印,要多牛叉有多牛叉,再加上和他的老同学张仪做了约定——只要苏秦在六国为相张仪就不能帮着秦国统一天下,很长一段时间内俾睨天下风光无限啊,真是宝马香车名驹美眷什么都有了。他回家的时候,嫂子跪在地上恨不能添他的鞋。

    再后来《战国策·秦策一》中这么写道:“(苏秦)读书欲睡,引锥自刺其股。”

    这就是头悬梁、锥刺股的来历。这里边有很多故事,但经过若干年无数父母老师的浓缩,就只有”努力“二字啦。但其实呢,只是因为苏秦成就了大事业,这个“头悬梁锥刺股”才有了正面的教育意义。如果苏秦再次游说列国失败,无言面对父母兄嫂以致心伤流泪最终泣血而亡,想想看,评语估计逃不了“那么努力干啥,瞎子点灯白费蜡”、“就你那熊样,再努力也没球用”之类的……

    我们看问题都是辩证的,也是片面的。这是事实。

    虽然学生娃常常被教育要努力学习,要吃得苦中苦方为人上人,可因为人的才干有区别,加上天朝的教育理念落后,不明白因材施教、因人而异的道理,大部分学生被削足适履,再怎么努力成绩也是一塌糊涂。但为人父母的,总有爱子之心,见孩子已经头悬梁锥刺股了,已经努力了,也就不忍再责怪孩子。于是久而久之,孩子们都学会了:妈咪、爸比,我已经很努力了……这种一招鲜在父母那里比较管用,因为他们看到你晚上埋头孜孜不倦的读书(其实可能在埋头看漫画或者玩手机)到十二点,觉得既然孩子都这么拼了,结果怎么样就别再强求了吧……

    在职场中,也有这么一种心理在作祟。

    其实很多人是拿“努力”做挡箭牌:我都这么努力了,你难道还好意思怪我吗……

    人艰不拆么,亲!

    但对掏钱让你干活的老板来说:一切都是扯蛋,交活才是硬道理。

    老板奉行的是邓主席的理论:不管黑猫白猫逮住老鼠就是好猫。他们可没有父母那么好脾气那么心疼你。所以,要展示结果,光说努力不出结果,难免让人怀疑你的诚意,终究会给人留下打酱油的印象。

    当老板已经面临非常严重的交付压力,被客户把一个头骂成九个大的是偶,你还在那里磨磨叽叽说“我已经很努力了”,老板估计活剥了你的心都有了。

    我们要谨记:没有结果时,不要随便说“我已经很努力了”这种会招致巨大副作用的废话。

努力要有价值

    前面已经说过,只有成功的结果摆在那里时,努力才是一枚勋章。成功者总是要保持优雅,哪怕一晚没睡,也要做个头发抹点眼霜让自己看起来精神一些,只要别人看到成功,不要让别人看到背后的辛酸。要顺着这个思路干下去,这才是值得推荐的。一旦你成功了,自会有人发掘成功背后的努力,就像苏秦那样。这个时候,也就是当别人说你努力的时候,你才是真的努力了,你的努力才有价值。如果你失败了,却像祥林嫂一样叨叨“我已经努力了”,只会让听者厌烦,甚至怀疑你的能力。

    多干事儿,少说“我已经很努力了”这种废话,因为越是把努力挂在嘴边越难成就——因为你不断在给自己嗑药么,自我安慰的迷幻药。嗑药嗑得多了,难免加强“失败也无所谓”这种暗示,暗示得多了就成了事实了。

当真的努力了又无法完成

    真有这种情况,预期可以完成,但实际无法完成。这个时候怎么办?我真的已经努力了啊……也不能说吗?

    不是不能说,是要用事实说话,努力要可见。

    比如说领导让你实现P2P打洞,给你一星期时间。你答应下来,可是到周五的时候你没能完成。这个时候怎么办?怎么样才能让领导相信你真的是已经努力了?仅仅一句“我已经很努力了”是不够的,这会让人有“尽人事听天命”的感觉,这种感觉是 Out of Control 的感觉,是摆明了用努力为自己脱罪的感觉,人人都不喜欢。

    你想想看,假如你家装修,工头告诉你水电改造两个星期完成,结果临了告诉你没弄完,你是什么感觉?你急着用婚房呢,丈母娘催你催得屁股冒烟了,距离过年就剩下那么三几十天了,瓦工还没动,你拖不起啊——佳期如梦啊。这时候你肯定怀疑工头根本没尽力,一天八个小时可能只有八分钟在干活,只有他给你一个说法,比如需要四种水管、每种多少,需要3中电线、8种开关,而这些材料应该什么时候就绪你却没有提供,或者因为有特殊要求某些材料他跑了八个建材市场花了一星期时间都没买到……只有这样具体的原因和数据出来,你才能在理论上接受,但情感上还是会感到愤怒。

    软件开发也是这样。你必须让你的努力可见,这样领导才可能从逻辑上接受任务没有完成这个事实。比如你可以说:

    从类型上看,NAT有四种类型,对称型、全锥形、限制锥形、端口限制锥形。我周一完成了类型分析,设计了对称型和全锥形的穿透算法。

    周二完成了限制锥形、端口限制追星的算法。整理了四种类型的穿透算法,写了文档。发现需要一个配置公网地址的服务器来辅助完成穿透。

    周三我找网管协调服务器,网管说没有设备,需要申请。我绘制了Udp打洞和Tcp打洞的流程,完成了服务器端的代码。

    周四……

    周五……

    假如你像上面那样说,让你的努力可视化,那你就可能得到谅解,也可能得到进一步的支持。因为你所做的努力是朝着完成的方向去的,有实际的价值啊,只是因为时间周期和资源的问题而导致了延期……


-----------回顾分割线-------------------

  • 漫谈程序员系列:无BUG不生活
  • 漫谈程序员系列:程序员的生活就这样吗
  • 漫谈程序员系列:看看你离优秀有多远
  • 漫谈程序员系列:程序员零门槛?
  • 漫谈程序员系列:3D打印能打印出程序猿吗
  • 漫谈程序员系列:群星闪耀的黄金时代
  • 漫谈程序员系列:受刺激啦,开篇啦
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java集合框架-概述

Java集合框架的由来: 其实在Java2(jdk1.2)之前,Java是没有完整的集合框架的。它只有一些简单的可以自扩展的容器类,比如Vector,Stack,Hashtable等。 为什么存在容器类: 容器类(集合类)可以存储多个数据,既然数组可以存储多个数据…

MySQL Binlog增量同步工具go-mysql-transfer实现详解

go-mysql-transfer产品手册:https://www.kancloud.cn/wj596/go-mysql-transfer/2111996 一、 概述 工作需要研究了下阿里开源的MySQL Binlog增量订阅消费组件canal,其功能强大、运行稳定,但是有些方面不是太符合需求,主要有如下三点&#x…

数据结构实验之栈五:下一较大值(一)

题目描述 对于包含n&#xff08;1<n<1000&#xff09;个整数的序列&#xff0c;对于序列中的每一元素&#xff0c;在序列中查找其位置之后第一个大于它的值&#xff0c;如果找到&#xff0c;输出所找到的值&#xff0c;否则&#xff0c;输出-1。 输入 输入有多组&#xf…

与 C++11 多线程相关的头文件

C11 新标准中引入了四个头文件来支持多线程编程&#xff0c;他们分别是<atomic> ,<thread>,<mutex>,<condition_variable>和<future>。 <atomic>&#xff1a;该头文主要声明了两个类, std::atomic 和 std::atomic_flag&#xff0c;另外还…

数据结构实验之栈二:一般算术表达式转换成后缀式

题目描述 对于一个基于二元运算符的算术表达式&#xff0c;转换为对应的后缀式&#xff0c;并输出之。输入 输入一个算术表达式&#xff0c;以‘#’字符作为结束标志。输出 输出该表达式转换所得到的后缀式。示例输入 a*b(c-d/e)*f# 示例输出 ab*cde/-f* #include<stdio.h…

INFINI GATEWAY 极限网关初体验 ElasticSearch 两个集群数据同步

文章目录极限网关-配置说明配置文件日志、数据目录定义入口定义路由定义流程定义资源使用Demo写入两个ES集群极限网关-常见问题shutdown: ORM handler is not registered极限网关地址极限网关-配置说明 极限网关的大部分配置都可以通过 gateway.yml 来进行配置&#xff0c;配置…

std::thread详解

转自&#xff1a;http://www.cnblogs.com/haippy/p/3236136.html 上一篇博客《C11 并发指南一(C11 多线程初探)》中只是提到了 std::thread 的基本用法&#xff0c;并给出了一个最简单的例子&#xff0c;本文将稍微详细地介绍 std::thread 的用法。 std::thread 在 <thread&…

Kafka 详细配置参数说明

参数值参数文件描述auto.create.topics.enableserver.properties【说明】是否允许自动创建Topic&#xff0c;若是false&#xff0c;就需要通过命令创建Topic。【默认值】true【取值范围】true或falselog.cleaner.backoff.msserver.properties【说明】检查是否有日志需要清理的时…

数据结构实验之栈三:后缀式求值

题目描述 对于一个基于二元运算符的后缀表示式&#xff08;基本操作数都是一位正整数&#xff09;&#xff0c;求其代表的算术表达式的值。输入 输入一个算术表达式的后缀式字符串&#xff0c;以‘#’作为结束标志。输出 求该后缀式所对应的算术表达式的值&#xff0c;并输出之…

std::mutex详解

Mutex 又称互斥量&#xff0c;C 11中与 Mutex 相关的类&#xff08;包括锁类型&#xff09;和函数都声明在 <mutex> 头文件中&#xff0c;所以如果你需要使用 std::mutex&#xff0c;就必须包含 <mutex> 头文件。 <mutex> 头文件介绍 Mutex 系列类(四种) st…

java中stack集合框架

栈(Stack):数据结构的一种,存储特点:Last In First Out. Stack 类表示后进先出&#xff08;LIFO&#xff09;的对象栈. 栈结构在生活中的体现: 1):QQ消息. A,B,C三个人先后发送消息,我们查看的时候发现最顶上的是最新的消息. 2):手枪弹夹的装和发射: 要来实现栈的存储,底层…

ElasticSearch Pipeline 为新增数据设置更新时间

文章目录模拟测试测试返回结果实际应用创建Pipeline查看创建Pipeline新增数据测试查看新增数据创建索引时直接设置Pipeline模拟测试 测试 POST _ingest/pipeline/_simulate {"pipeline": {"processors": [{"set": {"field": "t…

队列的基本操作

链式存储 typedef int QElemType; typedef int Status;//具体数据类型具体定义 typedef struct QNode//队列结点结构体 { QElemType data; QNode *next; } QNode, *Queueptr; typedef struct // 链队列类型 { Queueptr front; // 队头指针&#xff08;结构体类…

c++阻塞队列

基于C11的阻塞队列简单实现 转载请说明出处&#xff1a;http://blog.csdn.net/cywosp/article/details/9157379 在多线程编程中阻塞队列(Blocking Queue)是一种常用于实现生产者和消费者模型的数据结构。其与普通的队列区别在于&#xff0c;当队列为空时&#xff0c;从队列获取…

java中ArrayList类的操作

ArrayList类是Java集合框架出现之后用来取代Vector类的: 二者底层原理都是基于数组的算法,一模一样. 区别: Vector: 所有的方法都使用了synchronized修饰符. 线程安全但是性能较低. 适用于多线程环境. ArrayList:所有的方法都没有使用synchronized修饰符. 线程不安全但是性…

Elasticsearch Painless Script详解

文章目录1. Painless 简介Painless 的用途2. 参数3. 首选参数4. 简短脚本形式5. 通过 Painless 脚本访问字段6. 示例6.1 案例 1&#xff1a;Script Processsor6.2 案例 2&#xff1a;文档更新计数6.3 案例 3&#xff1a;搜索时的 Script 字段6.4 Script :Inline v.s Stored6.5 …

算术表达式的转换

题目描述 小明在学习了数据结构之后&#xff0c;突然想起了以前没有解决的算术表达式转化成后缀式的问题&#xff0c;今天他想解决一下。因为有了数据结构的基础小明很快就解出了这个问题&#xff0c;但是他突然想到怎么求出算术表达式的前缀式和中缀式呢&#xff1f;小明很困惑…

Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程

内容目录&#xff1a; Reactor实现架构对比面向对象的Reactor方案设计函数式编程的Reactor设计示例对比两者的时序图对比结论 Reactor事件驱动的两种设计实现&#xff1a;面向对象 VS 函数式编程 这里的函数式编程的设计以muduo为例进行对比说明&#xff1b; Reactor实现架构对…

ElasticSearch 快照 备份、恢复数据

文章目录ElasticSearch 设置备份文件地址注册快照存储库查看快照存储库保存结果创建快照异步创建指定索引进行快照查看全部快照在服务器查看备份的数据恢复数据本机恢复其他服务器恢复常见问题报错 doesnt match any of the locations specified by path.repo because this set…

java中LinkedList类的操作

LinkedList类是双向链表,单向队列,双向队列,栈的实现类: LinkedList类实现单向队列和双向队列的接口,自身提高了栈操作的方法,链表操作的方法. 在LinkedList类中存在很多方法,但是功能都是相同的.LinkedList表示了多种数据结构的实现,每一种数据结构的操作名字不同. 面试题:编…