转一个书评 - Hollywood Secrets of Project Management Success

《Hollywood Secrets of Project Management Success》是一本很奇特的书,且不说内容如何,Hollywood 一词就够吸引你的眼球的吧。作者 Jame 博士有着20多年的IT系统设计与过程管理经验,他通过拜访多位 Hollywood 的电影制片人,总结出 Hollywood 电影行业的许多IT行业可以借鉴的管理经验,著成该书。

在这之前,很少有人会把电影摄制与软件开发联系在一起,但 Jame 却发现电影摄制与软件开发过程是非常相似的,两者都非常的复杂,需要创新,都需要需求获取、财政预算、进度控制、风险控制……研究电影摄制过程管理经验,可以带给我们很多的启发。一部部卖座强劲的美国大片是如何在好莱坞诞生?在上百年历史长廊中,好莱坞就没有一家电影制片厂面临破产危机,没有一个制片人或者导演面临下岗危机?如果有,那么他们是如何“转危为安”的,我们又可以学到什么呢?让 Jame 来告诉你吧。

 Jame 按Hollywood的电影摄制过程:构思、前期制作、制作、后期制作、发布五个大阶段展开,将软件开发的需求获取、需求分析、需求变更、预算控制、团队构建、开发计划、开发实现、测试、部署贯穿其中,每章后面提供了18个小案例,或成功或失败,让你受益颇多。

 

 

 

 

 最后想说的是,将电影制作与软件开发进行对比,的确很有创新意义,但 Jame 在书中所述有点过于理论化。虽然有很多真实案例供参考,但是软件本身还是比电影复杂多得多,可变性更大,可控性更难。当然,Jame 初衷也不是说要提出一种新的软件开发过程,而是希望我们可以从电影行业的管理过程中吸收精华,应用到 RUP、Agile、MSF 等已有的先进过程当中。毕竟,过程应该是自己创造或者裁剪出来的,而不是仅仅靠学来的,只有用起来的过程才是对自己有意义的过程。

好的,下面是一个antd select级联选择器的示例代码: ``` import React, { useState } from 'react'; import { Select } from 'antd'; const { Option } = Select; const CascaderSelect = () => { const [cities, setCities] = useState([]); const [regions, setRegions] = useState([]); const handleCountryChange = (value) => { setCities([]); setRegions([]); // 根据选中的国家,设置城市选项 if (value === 'china') { setCities(['beijing', 'shanghai', 'guangzhou']); } else if (value === 'usa') { setCities(['new york', 'washington', 'los angeles']); } else if (value === 'japan') { setCities(['tokyo', 'osaka', 'kyoto']); } } const handleCityChange = (value) => { setRegions([]); // 根据选中的城市,设置地区选项 if (value === 'beijing') { setRegions(['haidian', 'chaoyang', 'dongcheng']); } else if (value === 'shanghai') { setRegions(['pudong', 'minhang', 'xuhui']); } else if (value === 'guangzhou') { setRegions(['yuexiu', 'tianhe', 'haizhu']); } else if (value === 'new york') { setRegions(['manhattan', 'brooklyn', 'queens']); } else if (value === 'washington') { setRegions(['northwest', 'northeast', 'southeast']); } else if (value === 'los angeles') { setRegions(['hollywood', 'beverly hills', 'santa monica']); } else if (value === 'tokyo') { setRegions(['shibuya', 'shinjuku', 'harajuku']); } else if (value === 'osaka') { setRegions(['umeda', 'namba', 'tennoji']); } else if (value === 'kyoto') { setRegions(['higashiyama', 'nakagyo', 'shimogyo']); } } return ( <div> <Select style={{ width: 200 }} onChange={handleCountryChange}> <Option value="china">China</Option> <Option value="usa">USA</Option> <Option value="japan">Japan</Option> </Select> <Select style={{ width: 200, marginLeft: 10 }} onChange={handleCityChange}> {cities.map(city => ( <Option key={city} value={city}>{city}</Option> ))} </Select> <Select style={{ width: 200, marginLeft: 10 }}> {regions.map(region => ( <Option key={region} value={region}>{region}</Option> ))} </Select> </div> ); } export default CascaderSelect; ``` 这个示例代码中,我们使用了React的useState Hook来管理组件的状态,根据选中的国家和城市设置城市和地区选项。在Select组件中,我们使用了antd的Option组件来设置选项,onChange事件用来处理选项的变化,根据选中的值来动态更新组件的状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值