技术

IT这个行当之需求与时间管理 golang结构体和包中的类型或基础类型定义方法 golang中结构体的初始化方法(new方法) 项目管理总结 python函数式编程之-装饰器(Decorators) python文件批量处理 Go,互联网时代的C Python推导式演变(Comprehensions) 项目管理感悟 golang学习简单例子 了解GitHub工作流【译】 PHP Socket的使用 Apache 日志文件格式及简单处理 Python脚本--下载合并SAE日志 PHP命名空间及自动加载 基于CSS3实现尖角面包屑 部署Ceilometer到已有环境中 OpenStack Ceilometer Collector代码解读 OpenStack Ceilometer数据存储与API源码解析 OpenStack Ceilometer中的Pipeline机制 OpenStack Ceilometer Compute Agent源码解读 学习Python动态扩展包stevedore 学习Python的ABC模块 Python包管理工具setuptools详解 OpenStack Horizon 中文本地化 WSGI学习 在虚拟机单机部署OpenStack Grizzly 学习使用python打包工具distutils python包工具之间的关系 给OpenStack创建Ubuntu镜像 OpenStack Grizzly Multihost部署文档 为什么使用pip而不是easy_install HTML中meta标签viewpoint的作用 交互式编程-IPython 页面提速之——数据缓存 给OpenStack创建Win7镜像 Ceilometer的命令行使用 部署一个ceilometer-horizon项目 给OpenStack创建Windows XP镜像 几种企业的存储系统 概念模型、逻辑模型、物理模型的区别 五中常见的开源协议整理(BSD,Apache,GPL,LGPL,MIT) OpenStack监控项目Ceilometer的一些术语 VNC和远程桌面的区别 OpenStack Ceilometer项目简介 虚拟化与云计算中KVM,Xen,Qemu的区别和联系 调试和修改OpenStack中的Horizon部分 JavaScript变量作用域 kanyun worker原理 kanyun server服务 在OpenStack中部署kanyun kanyun的api-client命令 sae下的python开发部署和一个简单例子 OpenStack Nova内部机制 PHP可变变量 JS中防止浏览器屏蔽window.open PHP操作Session的原理及提升安全性时的一个问题

标签


IT这个行当之需求与时间管理

2014年04月15日


在项目中经常被业务方逼得紧不要抱怨,你没有时间被逼得像牲口一样工作,这个时候,你需要的是暂停一下想一想,为什么会像牲口一样?而这正是让你变得聪明的机会。

现状分析

1. 需求不合理

>  你有没有去Review业务方给你的这么多的需求,哪些是合理的,哪些是不合理的。工程师都要在拿到需求后一定要问——“为什么要做?架构影响度有多大?有多少用户受益?”,回答不清这个问题,没有数据的支持,就不做。

2. 内在能力不足

> 需求人员你不但要对用户把握得很好,也会对软件工艺把握得很好。你不但会开出外在的功能性需求,也同样会开出内在的让软件系统更完善的非功能性需求。你不要再迁就用户,而是引导用户。不是拍拍脑袋,听极少数的用户抱怨就要开需求了。这样就不会无限制地加功能,而是把握产品灵魂控制并简化功能。你会为自己要做的和不做东西的感到同样的自豪。”。要明白一个道理***“做一个半成品不如做好半年产品”***(更多这样的观点请参看《Rework摘录和感想》)

3. 做事不高效

> 做事情是要讲效率的。喜欢使用一种叫T-Shirt Size Estimation的评估方法来优先做投入小产出大的“Happy Case”。当一个管理者的智慧无法衡量一支团队的产出的时候,他就会把“工时”当做最后的救命稻草,死死抱住——这是他唯一听得懂的东西了。”靠加班超越对手?!劳动密集型么?认为加班是公司的核心竞争力,或是超越对手的手段,是一种相当 Ridiculous 的想法。这说明管理者们已经想不到自己公司的核心价值了。

另外,我还要多说几句:

> * 条件受限是好事,因为条件受限可以让你小材大用,让你没有办法再用蛮力来完成工作,让你必需去思考使用知识密集型的解决方案来更聪明的解决问题。

> * 工作狂往往不得要领。他们花大把大把的时间去解决问题,他们以为能靠蛮力来弥补思维上的惰性,其结果就是折腾出一堆粗糙无用的解决方案。

> * 就像人肉手动的织布机一样,当面对大量订单的时候,一个简单粗暴的方法就是拼命地加人和拼命地工作来换取更大的生产力。只有你在人手不够或是人力成本太高的情况下,你才会去想是不是可以优化一下工具,制造一个更有效率更有生产力的工具。

> * 在中国,劳动力的成本不高,而管理者们的智力和能力有限,所以,在这个环境下,尤其在KPI和数字的重压下,管理者们是非常非常容易想到需要靠加人或是加班来提高产能的。所以,他们放弃了知识密集型的创新,而采用了劳动密集型的简单粗暴的方式,长期下来,导致了自己再也不会思考,导致了只会使用人肉解决问题。

只要你进入了劳动密集型,靠人和靠加班来解决问题,并沉迷并深 陷其中不能自拔,项目也不可能成功。

4. 需求总是变化

> 需求总是会变化的,不要抱怨需求变化太快。你应该抱怨的是为什么我们没有把握好方向?老变?这个事就像踢足球一样,你要去的地方是球将要去的地方,而不是球现在的地方。你要知道球要去哪里,你就知道球之前是怎么动的,找到了运动轨迹后,你才知道球要去像何方。如果你都不知道球要去向何方,那你就是一只无头苍蝇一样,东一下西一下。

思考

> 当你忙得跟牲口一样,你应该停下来,问一下自己,自己成为牲口的原因,是不是就是因为自己做事时候像就牲口一样思考?

很多人不知道什么叫效率,他们以为效率就是:单位时间单位人数下干更多的活。这是错的!效率不是比谁干的活多,而是比谁干得活有更大的价值。效率的物理公式是:有用功/总功。换句话说,效率就是:单位时间和人数产生的价值。 所以,提高效率,并不是加人,也不是干更多的活,而是,你这么多人干出来了多少有价值的东西。

有了公式,我们也就知道怎么来提高效率了。

1. 增加有用功

> * 你得多问问你的需求方,为什么要加这个需求?干这个事到底有多大的价值?能让多少人受益?
> * 你得多问问你的需求方,能不能稍微简化一下需求,这样可以让我付出的努力更少一些?
> * 你得要多去思考一下,你是在干一个建筑队的活呢?还是在干一个装修队的活?
> * 你得要多去思考一下,业务上和用户的最大的痛点是什么?

关于增加有用功,再说两点:

> * 像乔布斯那样,告诉你的产品经理或是业务方,你现在提的10需求,我只能做3个,会是哪3个?为什么是这3个?有用功的来源不是拼命做需求,而是砍需求。
> * 关于创造价值,我们要干的不是像百度的“竞价排名”那样,把钱从别人口袋里搬运到自己的口袋里,而是要像“英国工业革命”或是“硅谷”那样,把价值真正的创造出来。

2. 降低总功

> * 你得多问问自己,你有多少时间是在干一些支持性而不是产出性的工作?
> * 你得多问问自己,有没有残酷无情地减少重复劳动的劳动密集型的工作?
> * 你得多问问自己,自己的管理者和员工的能力和素质有没有在降低你的团队执行的成本?

3. 形成合力

> 有一个很不错的产品经理对我说,他看了南京那两个小女孩被饿死的消息,感到很震惊。与之有关联的每一方都说自己尽力,但是最终结果人还是饿死了,你几乎不敢相信这是真的。

类比一下我们的项目,这种事似乎又发生在我们的公司当中,尤其是大公司中。每一个团队都说自己尽力了,结果项目就是没做好,底层团队说自己只干底层,已经尽力了,前端说自己只负责前端,也尽力了,后端说自己只管后端,不管前端和底层,运维说对于这样的设计和部署自己也尽力了,研发,运维都这样说,自己尽力了。你会发现,你几乎很难批评他们,因为他们的确如他们所说的那样,把他们自己的那块都做得很好了,而且的确做得很好了。但是,最终的结果却是:整个项目问题很多。

> 所以说,效率不是每个团队各自的效率,而是整个团队对整个产品负责的共同使命,这样才会现整体的效率。没有整体的效率,只有个体的效率,最终也等于没有效率。

希望

> 我希望新入行的同学们对自己的工作有基本的坚持,我知道你们会因为骨感的现实而妥协,但是我希望你们就算在现实中妥协了也要在内心中坚持尽可能高的标准,不要习惯成自然,最后被社会这个大染缸给潜移默化了。因为你至少要对自己负责。

*** 芝兰生于空谷,不以无人而不芳!君子修身养道,不以穷困而改志!-----共勉 ***


golang-python学习心得
微信公众号:golang-python
个人微信ID:fuhao1121
网址:http://fuhao715.github.io
QQ:243312452
编程学习心得轻松学编程
回复:『 p 』查看python课程回复
回复:『 g 』查看golang课程回复
回复:『 m 』查看项目管理
回复:『 w 』查看其他文章
点击"阅读全文"进入http://fuhao715.github.io