程序员,不要让自己做兔子(updated)

前段时间和一个朋友聊天,酒席间向我抱怨他那段时间的郁闷:项目经理从客户那里拿来一个需求,实际上就是一个ppt描述,我这个朋友拿过来看后刚开始不觉得什么,一个通常的网站系统又能复杂的了哪去,但是越往后做就越发觉得里面的问题。在ppt描述中很多地方描述的都有矛盾。比如论坛,功能上用户描述的更象留言板,而后来通过项目经理,项目经理又通过客户,得知这个功能确实就是那样子的。朋友心想这不同行业可能会有不同的需求,那就这么来吧,反正只是叫什么名而已。而在“交货”的时候,客户不愿意了,在说一大堆问题当中(当然是口述,看到哪说大哪的那种),其中就有那个BBS的功能,说BBS怎么做的和留言板似的,那么些功能都没有,然后在网上随便打开一个论坛,论坛叫什么名记不清楚了,但是,我敢肯定那是动网的东西。客户指给项目经理说你看人家设计的东西,还是免费的呢,我们花钱的都给做成这样,你们能不能做下去了以后。项目经理回来后,其实之前怎么回事他肯定是忘记了,于是,又给这个朋友一顿打击,说能不能在我这干了。朋友觉得委屈,拿出先前的那个ppt,还好那个ppt还在,给项目经理看说当初客户确实就是这么要的,并且也得到了客户的确认。项目经理似乎也是想起来了,但是,也许是面子下不来吧,就以朋友发生错误还故意找借口说第二天不用来上班了。还好,只是说说而已。

没错,小公司,尤其是对于我们这样刚毕业的学生来说,这种情况会时有发生。

不过这样的事似乎不是你有准备就能避免的了的。还是那个朋友,不过是另一个项目---其实还是一个网站,需求,同样还是一个ppt加一个根本就没有用的word文件,和广告一样,也不晓得朋友的那个公司是怎么回事,总喜欢把ppt当成用户的需求定义文档。朋友这下“尖”了,先把ppt好好看了一看,并且,直接要了客户的联系方式和网上的联系方式,有问题直接和客户沟通,确认,心想这回有了聊天记录,看你以后怎么反悔。于是呼,问题看似解决,但就象阿甘所说,人生就象一盒巧克力,你永远都不知道下一颗是什么。客户的号是天天在线,而ppt里的问题就不用多说了,问题列表给客户发过去后,客户说的好说下午就给答复。不过,也许是没有在程序的头声明“命名空间”,所以这个“下午”便宜器根本就无法确定是哪个命名空间下的,因为每天都是一个“命名空间”,并且都有下午的这个“属性”或者“方法”。于是呼等了又等,那天项目经理问,说进度怎么样了,朋友说正在做底层的东西,一些功能描述的不够详细或者有矛盾,正在等客户那头确认。而项目经理不高兴了,说这么长时间你就没做出一个东西能让我看到做成啥样了?可不么,DAL和BLL的构建你要是能看到啥样子那你就成MATRIX里的Neo了。于是项目经理给客户那头打电话确认这事,客户那头,也许不是同一个领导,也许是把这事忘了,但还好,说了句人话,说“那这样,你先做。明天争取给我们头看看你们那做成什么样子了”……而那个晚上,不晓得朋友是怎么熬出来的,不用想,加班啊,还要不停的听着项目经理的漫骂。而这样赶出来的一个晚上的东西,后果,大家可想而知了。

朋友此类的抱怨还有很多,当然,陈述的时候大都把这种感觉同酒杯里的酒一同拌着郁闷饮了下去。

这些抱怨我想起网上最近流传的一个笑话,关于兔子,狼还有一只老虎的,故事如下:

兔子跟街上走着,迎面碰上了老狼。老狼伸手就给他一大嘴巴:“让你丫不戴帽子”。

兔子很郁闷地回家了,弄一帽子戴着。

第二天又碰上老狼了,又挨了一大嘴巴,“让你丫戴帽子”。   

如是几次,总挨打。兔子想,这么老挨打不是个事儿啊,不行,我得找老虎投诉去。 

刚到老虎家门口,就听老虎在屋里说话。  

“你也不能老这么蛮不讲理打兔子阿,回头兔子找我投诉来,我也不好罩着你啊。好歹咱面子上得过得去,我教你一招。

下回你见着兔子,跟他说:给我弄点儿洗衣服的来。他给你拿肥皂来,你就打他一顿的,说我要的是洗衣粉,谁让你拿肥皂。他拿洗衣粉来,你也能打,说我要肥皂,谁让你拿洗衣粉。

要不然你跟他说,去,给我找个妞儿来。他给你找个胖的,你打他一顿说我要瘦的;给你找个瘦的,你也打一顿,说我要胖的。

这样不结了,你也能打他,我面子上也能说得过去。”

兔子一听,得,咱也别投诉了,回家吧。

第二天,兔子在街上又撞上老狼。老狼大喝一声:去,给我找点儿洗衣服的来。   

兔子不慌不忙:你是要洗衣粉阿,还是要肥皂啊?   

老狼一听,嗯?有一手啊。又说:去,给我找个妞儿来。  

兔子还是不慌不忙:你是要胖的啊,还是瘦的?  

老狼一听勃然大怒,伸手就给兔子一个大嘴巴:“让你丫不戴帽子!”

兔子那个哭啊、、、、、、、、~!

这个故事与朋友的遭遇,各个角色似乎勉强能对上,但是,每次回忆起朋友的诉苦我都会很自然的联想到这个故事。兔子如果想做一辈子的兔子的话,永远做底层的那些东西,那么,就象故事中想描述的:“我就是想打你了,还需要什么理由吗?谁让你是兔子”。

当然,客户似乎还没有不讲理到那个程度,而项目经理也没有可恶到那种地步。不过,在这里我还是想引一下JillZhang朋友博客上的一个文章,项目经理是这样当的,看过的朋友我想很多都会联想起类似这样的文章,不过,就如上所说,人生,就象一盒巧克力,你永远都不知道下一个是什么。很多事我们都无法预料的。小公司的小团队,多少有会有这样的问题发生,而基于小项目的这样的团队,如果非要一个项目经理那样去当,那是不可能的,因为有时候项目经理比“公仆”还忙呢,所以这类问题自然多的很。

而再有一点我想到的,就是作为一个程序员,不要以为管理以自己一点关系都没有,即使真想做一辈子技术,下一辈子的“蛋”,还是如那篇文章中所说,项目经理,就是那样当的。很多东西你不知道怎么回事的话你根本就不知道该怎么去做,即使你能看出怎么去做,细节上的差别你是看不到的,还有比如怎么与客户打交道,与客户的哪些人打交道,遇到什么样的客户应该说什么样的话,选择一个什么样的时间与客户交流,等等等等,太多的东西需要去学了。比如朋友遇到的问题,怎么把那个ppt变成我们需要的一个客户的需求文档,这不仅是技术层次上的事。如果这些东西如果一个程序员永远都学不会的话,除非技术真的牛到不能再牛的地步了,不然,那就快快乐乐的做一辈子兔子吧。

补充:写到这里可能也会有人抬杠,说自己的公司里40多岁的程序员多的是,你就说人家是兔子?他们在公司里都是很受尊敬的。我想,虽然他们看上去是程序员,但已经不是很简单的程序员了,没错,就是那种技术很牛的人,甚至可以引导客户的需求方向,对于那些长辈,我佩服他们的学习能力之外,还佩服他们的钻研能力,那种年龄的钻研能力,不是我们这个年纪能学习到的。他们多少年的行业经验了,就是那种非常熟悉自己做的是什么的,与其说是程序员,倒不如说是行业专家。所以,你还能用一个程序员的角度来看他们吗?

[以下为补充内容:2006-10-5]

最近写过不少类似的内容,似乎抱怨的成分居多,不过对于刚毕业的我们来说,尤其是在东北这样的城市,尤其是那些还没有走出去的同学,尤其是还在小公司里做小项目的朋友,并且还是很不成熟的,这样的事接触到的会比较多,当然,也有一些是经历过的。

不过,根据这些经历与经验,还是迎合一下此篇的主题:在公司,类似这样的情况,当作为一个程序员的时候,有些东西不能只靠领导和项目经理去做,就象各位的随笔中所说的那些项目管理或者沟通的工作,实在不行,就自己去做,所以也正如此篇所说:程序员,不要让自己做兔子。恩,应该就是这个意思。这样,自己也会在这个过程中成长起来.相对于大公司来说,在合理的安排任务分工的情况下,项目经理是绝对不会给你这样的机会的.事物都是有两方面的,当你失去一样东西的时候,肯定还能得到另外一样东西.只不过是看你是否能找的到了.

程序员,不要让自己做兔子(updated) 网上最近流传的一个笑话,关于兔子,狼还有一只老虎的,故事 我就是想打你了,还需要什么理由吗?谁让你是兔子 项目经理是这样当的的更多相关文章

  1. Java 程序员每天都在做什么?

    作为一名 在大.中.小微企业都待过 的 Java 开发者,今天和大家分享下自己在不同公司的工作日常和收获.包括一些个人积累的工作提升经验,以及一些 Java 学习的方法和资源. 先从我的第一份 Jav ...

  2. Java全栈程序员之01:做个Linux下的程序猿

    Windows10正在成为史上口碑最差的Windows系统 (图侵删) 我曾经花了数次1小时去寻找解决方案去关闭自动更新,包括停掉服务.修改注册表等等.但是都没有成功. 微软自身是知道这个问题的,但就 ...

  3. .Net程序员之不学Java做安卓开发:Android Studio中的即时调试窗口

    对学.Net的人来说,JAVA开发是一场噩梦. .net中的即时窗口,调试时直接在里面写代码,对程序中的各种方法/属性进行调用,很方便. Android Studio中找了好久,参考如下网址,也有类似 ...

  4. .Net程序员之不学Java做安卓开发:奇怪的Java语法

    1.final关键字:用以修饰类时,表示类不可以被继承,指向基本数据类型或者引用类型时,该类只可以在声明的时候初始化 2.@Override 类似C# 中override关键字,表示对父类的重写.网上 ...

  5. 《程序员代码面试指南》第一章 栈和队列 设计一个有getMin功能的栈

    题目 实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小的元素的操作 要求 1. pop.push.getMin操作时间复杂度都是O(1) 2. 设计的栈类型可以使用现成的栈结构 java代码 ...

  6. 程序员/PM怎么让项目预估的时间更加准确

    项目时间的估算对项目的成败至关重要.项目时间管理包括了项目按时完成所需的各个过程.但是,在实际项目中,经常出现项目延期,估算严重不准确的现象. 一个我曾经共事过的很有经验的项目经理曾宣称说,他会拿程序 ...

  7. 一个想法照进现实-《IT连》创业项目:创业时该不该用新手程序员

    前言: 距离上一篇文章,转眼已然一个多月了,这段时间没出来和大伙汇报创业的进度,怪我了. 最近又感冒了,已经一个多星期了,还在感冒中,不过感冒也不能偷懒了,每天都有大把的事情等着我解决~~~ 不过今天 ...

  8. 做什么职业,也别做程序员,尤其是Java程序员

    千万别做程序员,尤其别做Java这种门槛低,入门快的程序员(别跟我说Java搞精通了也很牛之类的,原因不解释,做5年以上就知道了),程序员本来就是我见过最坑爹的职业了...Java程序员更是,现在满地 ...

  9. 代码传奇 | 身价10亿的程序员 雷军当年也为他打工——WPS之父 求伯君

    他的前半生,值得我们每一个人深思. 在普通人眼里,他寂寂无名,只有年岁稍长的文化人,才听说过他传奇般的存在. 在IT人眼里,他是块活化石,中国第一的大旗除了他,没人敢抗! 他是求伯君,从一个浙江穷山村 ...

随机推荐

  1. Mahout源码目录说明

    http://www.cnblogs.com/dlts26/archive/2011/08/23/2150230.html mahout项目是由多个子项目组成的,各子项目分别位于源码的不同目录下,下面 ...

  2. MongoDB: 如何删除一个collection中的一个字段?

      Try this: If your collection was 'example' db.example.update({}, {$unset: {words:1}}, false, true) ...

  3. LogCat用法2

    如果adb devices显示设备的状态是offline, 这是可以看手机的通知栏,会有一个"触摸以设置USB"这样一个类似的提示,触摸它以后会要求你选择USB的用途,选择第二个' ...

  4. POJ 3009:Curling 2.0 推箱子

    Curling 2.0 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14090   Accepted: 5887 Desc ...

  5. ASP入门(六)-Response对象

    Response对象可以从服务器向用户发送输出的结果. Response几种常用方法 方法 描述 BinaryWrite 向浏览器输出二进制的内容 Clear 清除已经缓冲的HTML输出 End 停止 ...

  6. 解析Linux操作系统文件目录

    解析Linux操作系统文件目录 随着Linux的不断发展,越来越多的人开始使用Linux,对于那些刚刚接触的人来说,恐怕最先感到困惑的就是那些“不明不白”的目录了.如果想熟练使用Linux,让Linu ...

  7. C# 动态解析表达式

    需求 我们很难捉摸用户的思维,即使使用非常正式的文档规范某些数据的定义.结果的标准等,也不能抵挡住用户不断变化的需求,但他们有个万变不离的东西——你做这个东西要是万能的,即输入参数类型.个数等发生改变 ...

  8. Apache Kafka学习 (一)

    前言:最近公司开始要研究大数据的消息记录,于是开始研究kafka. 市面上kafka的书很少,有的也版本比较落后,于是仗着自己英文还不错,上官网直接学习. ^_^ 1. 开始 - 基本概念 学习一样东 ...

  9. PHP传值与传址(引用)

    传值和传引用的区别在于,如果一个参数比较大,占用大量的内存空间,那么传引用的话就会节省拷贝空间. 传值:是把实参的值赋值给行参 ,那么对行参的修改,不会影响实参的值 传引用 :真正的以地址的方式传递参 ...

  10. Hadoop2.7.4 在 Windows 10(64位) 详细配置

    网上查询资料,实际配置后整理记录. 一.下载安装配置 1.8.0 以上版本 java 环境 完成后,使用 java -version 命令查看是否成功. 二.下载 hadoop-2.7.4.tar.g ...