3. 估算任务的预计完成时间 任务:在项目起步阶段估算出完成全部工作所需要的时间。 挑战:在尚未着手之前猜测某件可能发生的事情将耗时多久,根据含糊的要求做出估算并为这些说不清楚的问题分配处理时间。 群众观点:“我发现在真正进入实践阶段之前,要对编程工作中可能出现的意外状况做出预判真的很难……” “我发现估算是最难的工作,因为大部分人都把估算当成承诺。” “……任务的实际执行时间根本不可能被准确预测……” 2. 解释我是做什么的(或者不做什么) 任务:向非程序员(包括家庭成员、朋友、非技术同事等)解释自己的岗位职责是做什么的以及不能做什么。 挑战:某些全身心爱着我们的人确实弄不明白我们到底靠什么谋生。再有,有些家伙不断要求我们帮着解决任何与计算机有关的问题。 群众观点: “尝试向任何人做出解释——我不知道怎样修复他们的计算机。” “向我的家人解释我是干什么的。” “我已经无数次向外行们解释,程序员并不代表没日没夜地编程!!” “我需要向人们解释,我不是电子城里那些每天给人装盗版操作系统和其它盗版软件的家伙。”
1. 命名难题 任务:为变量、程序、函数、类、对象以及数据库组件等起名字。 挑战:即使是在一个小型程序或者应用当中,我们也必须要想出很多个相关名称。选择名称的目的是为了表达某种事物的内容或者作用,这项工作贯穿于应用程序始终且必须足够简洁。 群众观点:“想出有意义的变量名称。” “为数据和函数起一大堆有意义的名称。” “在计算机科学领域只有两个大难题:缓存失效与事物命名。” “……如果你在去除重复和改正糟糕名称方面表现突出,我可以负责任地讲——你已经是一位面向对象设计的高手了。” |