我认为只有在团队例外和同意的情况下才能达成软件决策。 但大多数情况会有所不同。
您如何描述贵公司在软件开发周期中做出决策的方式? 这是民主吗? /这是听写吗? /这是无政府状态吗?
以下是我从朋友那里听到的消息: “这不是民主,我是经理,我决定做什么”。
您怎么看?
答案 0 :(得分:2)
团队决策很少及时提供最佳结果。通常有很多方法可以解决问题 - 性能,质量,可维护性等,以减少潜在的解决方案,在最佳环境中,具有最多经验和知识的领导者做出最终决策(希望在收集来自团队)。因此,我同意应该有一个人做出决定并对结果负责 - 希望你处在一个决策者被追究责任的环境中,并且根据技能和能力选择领导 - 否则,未来将是凄凉和痛苦......充其量
答案 1 :(得分:1)
这将取决于软件团队的规模,团队成员的敏感度以及代码库的成熟度。
我的上一个项目一次有大约8名团队成员在代码中工作,因此每项任务都非常精细,每个人只影响他们正在处理的少量代码,并且我们不断进行代码审查确保我们的变化“符合”项目的整体方案。
我目前的项目(在一家新公司)是我从头开始编写的应用程序,但还没有人使用它,所以我成为独裁者并确切地决定事情的样子。我可以对代码进行广泛的更改,随意更改设计模式,重命名和重构广告。并且在其他人必须进入代码之前,需要进行大量的自我控制以确保代码对于局外人有意义。但我的希望是,当我完成后,其他任何人都可以直接进入并接管。 (否则我将永远维护这段代码。)
答案 2 :(得分:1)
有人必须做出最终决定。有时(通常)团队中的每个人都不会就某事达成一致。一个优秀的团队将有一个“巴克停在这里”的人做出没有共识或仍在挥之不去的决定。很多时候我被要求成为那个人。我将大部分决策委托给我信任的团队领导,但不时,码头无法就方向达成一致。我为公司设定了架构指导并加以执行。我使用每个团队成员的意见,指导和我的判断来打破僵局。我不会说它是专制的,但它也不是一个完整的民主国家。
答案 3 :(得分:0)
最糟糕的情况是,它有点无政府状态。
在大型项目的规划阶段,我们与业务分析师坐下来进行一些Q& A会议,编写规范草案,并与主题专家讨论业务需求的具体细节。然后我们的团队起草设计文档和流程草稿。
此后的某个时刻,所有地狱都破裂了。该公司看到了最初的发布,并突然意识到它没有澄清它的要求,或者我们没有澄清他们的要求,或者他们一开始并不知道他们要求的是什么。测试人员测试应该花费的时间是开发人员重构所花费的时间。
最初的粗略但也许相对优雅的解决方案变成了一堆注释掉的代码,其中应用了奇怪且不稳定的变通方法和填充程序,这些都挑战了每个人的能力,使他们不必拥有自己的堆栈溢出的心理笔记,关于什么工作方式适用于什么代码的情况。
时间浪费,人们感到压力,并且不可避免地会在测试中发现更多问题,这些问题必须得到解决。最终它可能变成Looney Tunes中的东西,厨房用具,船桨,人和海洋衬里的大杂烩都堆叠在一起,并且彼此之间不稳定地平衡(有点像那个花费时间平衡岩石的怪异艺术家的家伙在彼此之上)。
关于你朋友的评论,只要那个人愿意与团队讨论,那种领导风格就好了。经理是一名经理,部分原因是他们管理得很好(希望如果),如果他们也能很好地编写奖金,但如果不是,他们需要接受团队中比他们更精明的人的建议。如果做不到这一点,总会出现一个可以引用的后备立场,“无论我是聪明还是愚蠢,我得到同样的报酬”。
答案 4 :(得分:0)
我们的团队非常小:一个办公室有3名开发人员,隔壁办公室有业主。但即使如此,我还是说大多数决定都是在整个团队中讨论的,最终大的决定由业主决定。它效果很好。但我认为根据团队规模以及决策对业务的重要程度来调整决策过程是有意义的。在大多数情况下,小团队的决策更容易。
答案 5 :(得分:0)
决策过程必须反映团队和公司的需求。我在这里见过很多种,甚至在同一家公司里面。因素包括:
我个人认为,当人们认为自己与决策有利害关系时,团队会更好地工作。当你坚信你已经掌握了你现在所处的重大决策时,更容易投入100%的努力。软件工程不是无人机工作,如果人们在没有承担决策责任的情况下继续工作,他们只做了一半的工作,因为他们不会在决策中寻找缺陷或制定计划来克服这些缺陷。
我还认为,如果你不能说服你(可能是理性的和聪明的)同事你的想法是好的,那么你可能错了。即使你是一切的经理/建筑师/神。如果你不能承认你可能是错的,你就没有掌权。如果你不相信你的同伴是理性和聪明的,那么是时候找一份新工作了。