我在中关村的子里开了一家茶馆,但生意甚是冷清?/span>每天太阳一下山我都会关店回Ӟ偏y要关张时q来了两个儒雅的中年人。我l两人了一壶茶Q顺耛_听他们聊起了开发管理,听他们说的倒也有理Q就记在了自q本本儿上?/span>
q两个茶客,一个叫大志Q一个叫李铮。大志是个十q开发经验的老工E师Q现在管理一?0人的开发团队。李铮也是类似的工作l历Q但两年不见Q他已经是某个知名公司的CTO了?/span>
两hg几年没见Q但男h的交情跟见不见面关系不大。双斚w报了一下自q现状Q李铮恭喜大志有了个儿子Q大志祝贺李铮步步高升?/span>
本来我听着q些俗套惌他们d好休业走人,但大志接下来的抱怨让我又有了兴趣?/span>
大志说带50人的开发团队好累,自己一直在努力但L觉有~憾。李铮自然要问,现在带团队篏在哪里。大志说来自产品部门的需求多的堆U如山,而且做出来的效果和品需求相差甚q,部门内部也不好管理,每个员工都很重自己Q但q活的速度忽快忽慢Q质量也参差不齐?/span>
李铮又让?/span>了一壶碧螺春Q品着香茗开始和老朋友探讨问题了?/span>
“首先_zd不完是没搞定需求方Q活q不好是没搞好内?#8221;Q李铮开宗明义的列出大纲Q?#8220;接下来的事情很复?/span>Q?/span>让我们来M个流E简?/span>?#8221;
大志不是那种强硬的开发经理,于是他的问题是对品部门的需求有求必应,好似一个活菩萨了。但大志毕竟不是千手观音Q当他手头有一千个需求的时候,他就抓不q来?/span>?/span>所以开发ȝW一个要做的?/span>认产品需?/span>是否合理Q合理性包括方案自w的可行性,以及技术团队有没有能力执行q个计划?/span>
先说从可行性上拒绝需求,q个时候我们的角色不是一个开发者,而一个冷静的旁观者。如果没有用户会用这U品,或者这个品是一个灾难性设计,那我们应该请产品ȝ或者公叔R把q个创意直接毙掉?/span>
再就是从本部门的角度拒绝需求。你是开发经理,你最了解本团队能胜Q什么工作。如果公司的需求过于苛刻,让我们在资源/规划上无法完成工作,那我们也必须需求顶回去?/span>
比如说你带领一个通讯开发团队,某天有个客户有需求要求在语音通话q程中入电子提C音Q比如说“您的电话已经拨打?0分钟Q请注意休息”。在产品和销售看来,你可以把电话x通就接通,x断就挂断Q想监听q听,想降噪就降噪Q这应该不是难事吧?/span>
但你自己知道Q接通挂断都是事件性操作,监听是单向复制语韛_容,降噪已经有很成熟的技术方案。偏偏这个插入语xC的需求,看v来很单,却会涉及事g触发、双斚w话变三斚w话再切回双斚w话、录韛_成时去除电子提示音等多个复杂而且生僻的操作?/span>
最后我们拒掉这个需求的理由是技术实现复杂、没_的h手、会改变现有的稳定结构、市场需求暂不强烈,然后专心致志的去完成那些更迫切的需求了?/span>
李铮又提刎ͼq合理的、在处理中的需求,也经常因为双Ҏ通不C而发生南辕北辙的情况。品h员经常和开发h员说的一句话是“q不是我惌?#8221;Q?/span>q话q不是刁难hQ我们应该想办法解决q个沟通问题?/span>
首先Q我们要让需求提出有一个合理和可靠的流E。如果一个品经理QQ上一个留a可以直接调动一个开发小l埋头干z,或者某个开发小l自己就能代表开发部门推掉一个品需求,那这个公司的理太?/span>?/span>。我们应该让产品部门提交需求时坚持C套审核流E,保证产品ȝ、公叔R层(可选)、开发ȝ都审核过才能q行开发;而这个开发需求经q开发ȝ审核和分配工作以后开发h员就必须能按时保质量的完成?/span>
程上正了Q剩下的q沟通问题了。首先品经理们提的需求要先自己想的清楚写的明白,是审核需求时能跟公司写清楚这个品的目的和特点,实施需求的时候能量详细的写清楚自己要实现的每个细节。通篇必须用写作来完成Q因ZW之时h能三思,而脱口而出是不会思?/span>且容易E忘的?/span>
产品人员写个百万字的说明文档Q然后开发照着文档做就行了Q开玩笑Q新华字怸所有字都是对的Q你背过字典q学会中文了?产品写的说明文档是对自己思\的文字呈玎ͼ但他写的东西q不能保证别不误解。最常见的D例就?#8220;舟已行二日即?#8221;q个甉|了?/span>我们甚至可以_产品的设计说明我们读的时候必然会有误解!
要避免单Ҏ通的信息丢失Q?/span>我们做信息校验吧。在正式开发之前,开发h员和产品人员要反复开两次头会,既要做开发工期规划,也要让品有旉_修产品计划。最重要的就是双方要怺向对方说明自己听C什么,开发h员要把品的需求复q给产品人员dQ双方肯定能发现彼此认知的分歧?/span>
q样的沟通可能要往q三五次Q虽然会消耗一两周的时_但开发能d弄清除了产品的需求,产品也认可了开发h员的沟通习惯和职业态度Q这样可以节省下好几周给产品修复bug的时间?/span>
大志q声收佩服,原先自己L惌省时间尽快搞定品需求,l果每次不是开发方向错了耽搁了工期,是一周赶工做目Q俩月不停修漏洞?/span>
接下来李铮又说v了部门内部管理。李铮认为研发分ZU员工:开发组?/span>、技?/span>牛h和普通开发h员,三类人员的用方法完全不同?/span>
员工cd | 技术水q?/span> | 责Q?/span> | 执行?/span> | 沟通能?/span> | 理隑ֺ | 支持他h能力 | 对工作要?/span> | 代表团队负责 |
普通开?/span> | ?/span> | 待定 | ?/span> | 未知 | 态度好但能力?/span> | ?/span> | 学习Z/团队氛围 | 无需?/span> |
技?/span>牛h | ?/span> | ?/span> | ?/span> | 未知 | 能力好但有性格 | 中等 | 严/待遇/个h价?/span> | 无需?/span> |
开发组?/span> | ?/span> | ?/span> | ?/span> | ?/span> | 既是理也是被管理?/span> | ?/span> | 升迁Z | 必须 |
现在最大的问题是这?/span>开发组?/span>没当队长的觉悟Q却更愿意当排头兵,l常亲自上阵写大量的代码Q结果把普通开发甚x技术牛?/span>都晾h了。最?/span>牛h觉得自己不被重视Q新员工觉得没什么提升,他自׃在繁杂的开发工作和队内部理上篏的焦头烂额。我们要引导q些技术带头h大部分工作量交出去Q重点做团队的负责人?/span>
有了工作分派Q我们还要有制度来督促和奖惩员工Q监督员工很Ҏ存在公^性疑虑,我们都喜Ƣ正向激励员工但l常苦于权限不够Q惩|员工则大多抹不开面子?/span>
李铮的徏议是做一个巨大的白板Q上面写上每个员工要在几月几日完成什么工作,能完成就合|完不成工作也是Q何h都看到的。这个监督机制是公开透明的,是该奖励q是惩罚是显而易见的?/span>
?下来要奖励员工,李铮和大志都甌C季度奖金Q但大志手下鲜有拿不到全额奖金的职工Q个别职工拿不到奖金立刻׃认ؓ自己受到了歧视;而李铮的团队只有 七成的h能拿到季度奖Q还只有数几个人是全额奖金Q整个团队反而没有抱怨奖金的多少。除了季度奖之外Q培训、职位升q、正式表彰、组l业余活动都能很?效的Ȁ励员工?/span>
?理的可以宽容但不可以和E泥,盲目的一团和气ƈ不会让懈怠的员工心存感激Q反而会让积极的员工心怀不满。每个公司可以制定不同的理制度Q但C有时?惩罚坏员工是Zl好员工一个交代。无论是奖惩都要切记不能做滥好hQ奖惩力度太M让大家看d惩制度,Zh有奖或法不责众也会让制度变成W话?/span>
说到q里大志恍然大悟Q激动的要以茶代酒敬李铮三杯Q李铮却没着急,他说“我还没说完哪Q你们公司的q维人员现在怎么P”
大志对运l很满意Q他_“我们现在的运lh员就五个人,归我l一理Q有故障总能及时处理Q对开发工作也很配合,基本没有提过什么需?#8230;…”
“没提q什么需求,那你们的q维也做不了什么事情吧?#8221;李铮抢过话头Q?#8220;q维太弱势的公司是没有多?/span>q维能力?/span>?#8221;
大志想了想也对,貌似现在的运l只能检查监控、处理硬件和|络故障Q真要是应用服务器有什么问题还要靠开发h员提供解x案?/span>
?铮又谈v了运l和开发的关系Q运lh员要对^台稳定性负责,开发h员的每次变更E序都会影响q_E_性。如果运l太q弱势没有话语权Q那像一个胆怯的?兵不敢查访客证g一PҎ无法胜Q工作。因开发的E序变动Dq_宕机Q因E序生僻D无法监控或很难恢复,因新手程序员的不规范操作D意外……q些q_E_性事件一旦出玎ͼq维都可以把责Q推给研发Q公怹可能会原谅运l和开发?/span>
但是Q你是一个管理h员,必须惛_在公司看来业务已l中断了。要让运l把工作做好Q只有让他们变得强势Q这样他们才能担当v自己的责LQ?/span>在开发阴׃的运lh员只能做监控值班人员Q无法ؓ自己的工作负责?/span>
两个人又聊了一会风月琐事,再也没提和部门管理的事情。等C们离开茉以后Q我把他们说的话都C来了Q原来带好开发团队是q么单,明天我就把茶馆关了,我也d聘开发ȝ厅R?/span>
本文 “让技术做的更清晰” 博客Q请务必保留此出?a >http://caoyameng.blog.51cto.com/4975863/854550
response.setContentType() 的作用是使客L览器,区分不同U类的数据,q根据不同的MIME调用览器内不同的程序嵌入模块来处理相应的数据。例如web览器就是通过MIME cd来判断文件是GIF囄。通过MIMEcd来处理json字符丌Ӏ?br />
Tomcat的安装目录\conf\web.xml 中就定义了大量MIMEcd Q你可也ȝ一下?br />
做用表单上传文gQ想在服务端验证上传文g的类型,只允怸传GIF,JPG,ZIPQ?我们有两U方? 查文件的扩展名的ҎQ很单快P 但是 a.jsp 改名?a.jpg能可以绕q检查上传了?br /> 查文件的MIMEcd的方法,在IE7与Firefox下有一点区别(见下表)Q?有不同浏览器上传表现不一致。Firefox下ZIP与EXE文g的MIMEcd同ؓapplication/octet-stream?/span> |
表中例出的是在服务器端(tomcat5.5Q接收不同浏览器上传的文件时Q取得的MIMEcd
用IE7上传 | 用Firefox3.0上传 | |
GIF |
image/gif |
image/gif |
JPG |
image/pjpeg |
image/jpeg |
ZIP | application/x-compressed | application/octet-stream |
JSP |
text/html |
text/html |
EXE | application/octet-stream | application/octet-stream |
常见MIMEcd例表Q?/p>
序号 |
内容cd |
文g扩展?/p> |
描述 |
1 |
application/msword |
doc |
Microsoft Word |
2 |
application/octet-stream bin |
dms lha lzh exe class |
可执行程?/p> |
3 |
application/pdf |
|
Adobe Acrobat |
4 |
application/postscript |
ai eps ps |
PostScript |
5 |
appication/powerpoint |
ppt |
Microsoft Powerpoint |
6 |
appication/rtf |
rtf |
rtf 格式 |
7 |
appication/x-compress |
z |
unix 压羃文g |
8 |
application/x-gzip |
gz |
gzip |
9 |
application/x-gtar |
gtar |
tar 文档 (gnu 格式 ) |
10 |
application/x-shockwave-flash |
swf |
MacroMedia Flash |
11 |
application/x-tar |
tar |
tar(4.3BSD) |
12 |
application/zip |
zip |
winzip |
13 |
audio/basic |
au snd |
sun/next 声音文g |
14 |
audio/mpeg |
mpeg mp2 |
Mpeg 声音文g |
15 |
audio/x-aiff |
mid midi rmf |
Midi 格式 |
16 |
audio/x-pn-realaudio |
ram ra |
Real Audio 声音 |
17 |
audio/x-pn-realaudio-plugin |
rpm |
Real Audio 插g |
18 |
audio/x-wav |
wav |
Microsoft Windows 声音 |
19 |
image/cgm |
cgm |
计算机图形元文g |
20 |
image/gif |
gif |
COMPUSERVE GIF 囑փ |
21 |
image/jpeg |
jpeg jpg jpe |
JPEG 囑փ |
22 |
image/png |
png |
PNG 囑փ |
|
text/html HTML
text/plain TXT
text/xml XML
text/json json字符?/span>
备注:原文摘自