如果老板总是推迟有关需求和总体设计的重大决定怎么办?


12

当开始一个新项目时,我的老板总是避免做出固定的决定。他通常在说:好吧,就开始写点东西,并尽可能通用。当您完成后,我们将看看我们如何继续。他的论点基本上是您永远不知道和“敏捷开发”。

为了使问题尽可能笼统:如果老板不喜欢做决定,您会怎么做?

只是坚持并编写可能在几周后进行大量重构和部分重写的代码?还是继续讨论直到老板做出至少一些决定?这或多或少是我目前的策略。因为这就像物理定律,所以在某些时候需要交付一些东西。要么是因为老板的老板想看到结果,要么是因为某些时候东西变得荒谬。

我还发现老板几乎批评了所有事情。甚至是基于他自己的建议...


1
每SICP演讲,开始LISP :)编写代码
工作

@Job-LISP是为此工作流程设计的吗?;)
Jimbo

Lisp(但我实际上会推荐Clojure)允许对设计进行重大更改。如果使用得当,它允许建立在抽象和改变一个人的心态层图层,添加功能等paulgraham.com/avg.html
工作

Answers:


12

建立原型

刚开始绘制一开始什么都不做的屏幕(想必您有足够的能力做这件事?)

您应该能够使其缓慢地部分运行,并最终在弄清楚您要做什么时重新构造一些不良代码。

一个普遍的问题是,他们在看到一些东西并意识到那不是他们想要的东西之前才知道自己想要什么。我发现,当有人希望您只是开始构建“框架”或类似他所告诉您的“通用”内容时,如果尝试尝试,您将遇到麻烦。框架已经编写好了,您不需要这样做。


听起来真的很熟悉:“一个框架”。在展示了至少两个或三个演示/原型之后,也许我应该等一下。
Jimbo,

4
+1没有人知道他们想要什么。每个人都知道他们不想要的东西。批评很容易获得并且可以提供很多信息。
JohnFx 2011年

4

我从您的消息中收集到了几个问题:0-管理项目不是您的工作,收集最终用户需求也不是您的工作。1-上司不知道确切的要求2-上司不与最终用户谈论这些要求3-上司正在抛出他并不真正了解敏捷的术语4-您正在制定一些解决方案,写了几次,你对此不满意

至于1,2和3,如果您不是高级人士,则无能为力。但是,可以执行以下操作:

答-请他与您分享项目计划。他可能有一个或将要建立一个显示任务和期限的人。其中之一应该是关于分析和需求收集。如果没有建议。

B-准备一些有关需求对软件项目成功的重要性的参考

C-为他准备一份关于什么是敏捷还是不是敏捷的一页。

D-为他准备一份设计阶段的典型输入清单,并让他相信每个输入的价值。

E-建议向团队中增加业务分析师和/或数据建模师。此类角色必须与最终用户一起坐下来,并将为您提供所需的信息或至少是其中的大部分信息。

F-了解其他开发人员如何与这个人合作。

对于#4,您可以建议他使用原型方法或代码生成器,这将帮助他,您和用户对应用程序的功能方面有所了解。大多数工具不能生成完美的GUI,但是至少您可以捕获所需的功能。

在所有情况下,请确保您清楚记录每个迭代,并向他发送电子邮件,告知您收到了什么输入,您做了什么(详细介绍)以及结果如何。确保将结果归因于正确的原因,例如(缺少需求等)。

不幸的是,有些人不接受建议。所以要小心与他交流。

这进展不顺利!

祝好运。


感谢您的详细回答!我目前的职位在大三和大四之间,至少那是我在A期间描述自己的方式:他对任何经验性见识都不感兴趣。B,C:现在不行;-)至少对于当前项目,他对日常问题了解很多。E是个好主意。今天我写了一个小演示,今天我们讨论了很多。尽管我对他不满意的几点感到惊讶。您能解释一下D的意思吗?
Jimbo,

设计需要输入。例如,数据模型(在分析时创建),业务规则,安全要求,用例,基本体系结构(它是Web,Windows窗体还是其他)。输入方法因方法论名称而异,但是,它们全都使开发人员意识到设计的外观。
NoChance 2011年

4

我曾经有过这样的老板-实际上,我会开玩笑说他的座右铭是“优柔寡断是灵活性的关键”。

无论您从事什么开发工作,与老板相比,您可能更能解决客户的问题。如果您不知道客户要解决的问题是什么(与规范不一样),则说明有人没有正确地收集他们的要求。

草绘一些页面布局,或构建非/半功能原型。但是做点什么。从您的帖子中还不清楚您是要构建全客户端软件还是要构建Web应用程序,但是后者的优点在于您可以尽早发布,也可以经常发布。从准系统开始,然后从那里开始。错误的开始如果引起一些对话和做出一些决定,就没有害处。

对于我们的客户,我们有一句关于$ WORK(内部网络应用程序)的说法:“我会给您一些东西,以便您可以告诉我您想要什么。” 准备丢掉第一稿,但您可能会惊讶于您实际上很少需要这样做。


3

向他指出,敏捷书建议您尽可能推迟决策,但仅此而已。每个决定都有一个必须做出的决定,也许您现在就在那里。

另一方面,也要问自己。您是否真的需要确定要为此应用程序使用哪个持久层?还是可以开始将其写入CSV并使其足够抽象以便以后做出决定?


对我来说,技术决定或多或少是很明确的:编程语言,如何选择库或持久层。他对此有很强的见解,老实说,我真的不在乎那些选择是否理智。更多的是类似的东西:屏幕会是什么样?用户将能够做什么样的事情以及如何做?我已经想出了很多想法。但是,几乎不可能提出抽象的想法并问他是否同意一个想法。
Jimbo,

3

编写您自己的规格文档,并在进行解释的地方进行审查,然后他在该文档上签字。然后您将成为老板,而您的老板将进入更多的人际关系管理问题,而不是技术问题。


2

与您的老板和客户进行“向上管理”对话,找出一些解决方案,为团队选择最佳解决方案,找出其他解决方案中的缺陷,并“管理”您的经理做出“正确”的决定。

当然,请确保他认为这是他/她的全部想法。(尤其是当一切出错时!)


当软件工程师转为社会工程师时.. :)
MattDavey 2011年

1
严重的是,大多数软件问题都是可以解决的,它与其他半水袋的通信通常是有问题的...
NWS

1

您需要设计和实现一些东西。由于您的老板不会做出决定,因此请自己做出决定。在执行决策之前,请花一些额外的时间来记录您的决策和假设。将其发送给可能涉及的任何人,包括您的老板。希望这份清单所包含的范围比您的老板还多,因为这会给他施加一些压力,使他做出一些决定,因为他知道其他人知道您已经准备好继续前进了。当您以书面形式做出决策时,特别是如果您做出其他人不同意的决策时,您会很快收到反馈,您会感到惊讶。在此之前,我将继续您所做的决定,直到另行告知。

如果您结束浪费时间来实现老板不想要的东西,那是他的责任,而不是您的责任,因为他知道您要走的路。

同样,有些人起步很困难,但是一旦看到切实的东西,他们就会开始思考。也许您的老板就是这样,告诉您您打算以书面形式做的事情会让他动起来。


0

自己做决定并开始编码。当然,以灵活的方式进行开发会有所帮助(如果您还没有阅读过Robert C Martin的敏捷模式,原理和实践),但是如果没有做出任何决定,那么世界上所有的灵活性都将无济于事。您可能会发现自己必须发展自己的想法是必需的,然后根据需要对其进行修改。通常,客户/老板不知道自己想要什么,直到他们看到自己想要的东西,或者直到他们看到自己不想要的东西。这可能会使您脱离成为开发人员的范围,但这就是生活。我经常发现我和我的同事正在有效地进行业务决策。有时这些问题不会受到质疑,我所做的决定开始推动业务发展,纯粹是因为没有其他人会做出决定。确保列出所有您的假设和决定(无例外),并向老板提出。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.