程序员,不要让自己做兔子(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. 用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

    https://zhuanlan.zhihu.com/p/25928551 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类 ...

  2. wamp因配置错误而导致apache无法启动的问题

    在使用wamp搭建一个PHP项目环境时,却出现了apache无法启动的问题   通过查看window的错误日志才发现apache出现了错误   错误的原因说的很清楚,是因为配置文件中的Director ...

  3. 如何检查显卡类型,DirectX和OpenGL的版本

    How To: Check the graphics card type and OpenGL version From: http://support.esri.com/technical-arti ...

  4. Direct2D教程VII——变换几何(TransformedGeometry)对象

    目前博客园中成系列的Direct2D的教程有 1.万一的 Direct2D 系列,用的是Delphi 2009 2.zdd的 Direct2D 系列,用的是VS中的C++ 3.本文所在的 Direct ...

  5. js 时间加减

    //js格式化时间 "yyyy-MM-dd hh:mm:ss" Date.prototype.Format = function (fmt) { var o = { "M ...

  6. python2.7安装setuptools-36.6.0报ascii' codec can't decode byte 0xce in position 7问题

    解决办法1: 原文链接:http://blog.csdn.net/all_over_servlet/article/details/45112221 修改编码为gbk,修改D:\Python27\Li ...

  7. Grunt、Gulp和Webpack对比

    1.Grunt处理Sass转换成CSS过程 2.Gulp处理Sass转换成CSS过程 3.Webpack执行原理 4.区别 (1)grunt和gulp都类似于webapck的中的scripts,属于任 ...

  8. Java JDBC编程套路教程

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5847020.html  学习Java开发,一个必须掌握的知识点,就是数据库操作.当程序需要用到的数据达到一定程 ...

  9. Java常用的非受检异常

    IllegalArgumentException 非 null 的参数值不正确 IllegalStateException 对于方法调用而言,对象状态不合适 NullPointException 参数 ...

  10. kettle Spoon.bat运行闪退

      1.情景展示 启动kettle的Spoon.bat闪退,并没有进入kettle的启动界面. 2.原因分析 使用条件: jdk版本需>=1.6: java需配置环境变量. 如果满足了上述前提条 ...