你更喜欢什么样的编程方法?成功与自由

时间:2008-12-04 21:37:11

标签: process methodology

您是否希望完全自由地完成所有开发技术,或者您更愿意采用更安全,更无聊的方法,最终有更好的工作机会?黑客与工程师?画家vs电工?

15 个答案:

答案 0 :(得分:11)

“自由或没有”的态度是少年和烦人的,现实世界不会这样。

给我建立过程。

答案 1 :(得分:5)

经济学。如果它让我赚钱并且不是不道德的,那我就是为了它。

答案 2 :(得分:4)

我喜欢把事情做好。这意味着使用既定的开发工具和合理的流程,同时在该流程中具有创造性。英语中最伟大的诗歌是按照严格的韵律和韵律规则写成的,而且似乎也不乏创造性。

答案 3 :(得分:3)

取决于你是否聪明。

如果你聪明,那么自由。你会取得成功。

但问题是,没有人能够诚实地告诉他们自己是否聪明。

答案 4 :(得分:3)

我不认为自由与无聊是有效的。定义的轻量级过程也很灵活,当然是可行的。直到有人能告诉我他们善于发展,我才可能不会允许这么多自由。

遵循拙劣的非弹性过程也可能是有害的。

需要很多常识,但这是一件困难的事情,这在开发人员和组织之间各不相同。没有一种尺寸适合所有人。

答案 5 :(得分:2)

就个人而言,我更喜欢尝试新想法,新技术,新流程的自由,但我认为它应该是自我调节的。也就是说,我认为技术,流程等需要证明自己是有益的。在团队环境中要求个人表达自由可能不是建立团队的好方法,但我认为团队应该对改进新想法持开放态度。但是,一旦团队采用了一个流程/技术,如果团队没有像你那样看待它,那么继续坚持自己的方式(即使更好)会适得其反。

答案 6 :(得分:2)

这不是一个有效的问题。您可以自由地遵循流程,也可以行使自由,不遵循流程。无论您是否遵循流程,您仍然拥有自由。

答案 7 :(得分:2)

这是一种错误的二分法。强加的过程与成功无关。例如,在电话公司中,对软件开发人员施加了大量的过程(天真地阅读“瀑布式”开发),大量时间浪费在编写详细的设计文档上,然后当软件突然传递给客户时发现他们所要求的并不是他们想要的。那时资源几乎耗尽,每个人都输了。强加的流程会杀死项目。

另一方面,当Amitabh Srivastava对Windows团队施加一些基本的分析和测试要求时,错误率下降了,至少在我的微软朋友中,生产力和士气都上升了。我假设在KDE项目开始要求每个人都使用valgrind时发生了类似的事情。突然间,没有更多的内存错误和令人困惑的核心转储。

总的来说,我认为强加有用的工具比强加进程更成功。支持或反对工具效用的证据可以相当快地积累。我见过的唯一一个成功的“过程”是不止一双眼睛应该看到代码。实现这种观察的机制并不重要。

开发人员的自由完全是另一个问题。我很幸运,因为我有一份工作,我几乎完全可以自由选择有关我的开发环境的所有内容。 (例如:我在Red Hat商店工作,但我有预算购买计算机并安装Debian。)因为我有超过20年的持续软件开发经验,所以我通常可以选择哪种语言和工具。使用。但另一方面,我可以在任何语言或环境中合理地工作。使用perl或C ++可能会让我减慢2或3倍,并且使用Lua或Haskell会加速我解决某些问题,但我最终会到达那里。

但是我和其他开发人员一起工作过,他们的语言和工具的安全区非常有限,如果有这样的自由,谁会乐意选择一个非常错误的工具。我曾经被要求作为一名顾问,试图帮助一个小组加速一个24小时编译小程序的编译器。事实证明,编写它的人是专家系统人员,他们使用基于规则的推理引擎编写了一个编译器。他们让它发挥作用,但这是错误的技术。

我也看到将开发人员限制在特定的环境或语言并不能保证成功。我认为自己是一个非常糟糕的perl程序员;我基本上像对类固醇的awk一样对待perl。我是一个完全白痴。然而,我不得不处理由其他人编写的perl代码,这些代码远比我能写的任何东西都差,因为他们从未学会思考问题或如何组织代码。

我想我现在最好不再咆哮。

答案 8 :(得分:1)

在较大的小组中工作是成熟的,有记录的过程的价值。

只要你在一个小团队(2-4人)中工作,你们对每个人都很了解并且你们都有一个共同的目标,那么你可以在没有定义过程的情况下工作得很好。

只要有10个人需要合作,你至少需要一些基本规则,以便每个人都站在同一个方面。

当你做一个有100个人的项目时,你将无处可去,除非你有非常具体的规则和明确的过程。

就我个人而言,我更愿意,如果我能做任何我喜欢的事,其他人都按照严格的程序工作; - )

答案 9 :(得分:1)

自由有不同的方面。当你被限制改变一半的代码库,因为它已经“测试”了(即使编码很差),我会说这是一个你需要自由的情况,但我不认为你在谈论这个。 / p>

黑客风格自由,使用任何必要的工具来解决问题,并将问题作为主要目标解决,这些日子让我感到害怕。

我从未见过在某些时候不需要调试/修复的代码,并且调试/修复似乎总是比初始编码花费更多时间,所以将第一轮调试/维护/增强作为尽可能容易成为您的首要目标。

这与“自由”冲突,因为“自由”通常意味着你能够选择让其他人更长时间处理的机制 - 而且很可能是其他人会进行第一轮维护。

答案 10 :(得分:1)

如果你把自由的焦虑放在新项目领域的创造力而不是发明另一个发展过程怎么办?

答案 11 :(得分:1)

“成功与自由”意味着如果你可以自由决策,那么该计划就不会成功。

我认为你真的要重新考虑这一点。根据我的经验,开发人员需要自由选择最佳的实施方法,如果审查后比“经过试验和测试”的方法更好,那么它将由团队其他成员保留和使用。但是他们仍然需要确保他们编写的代码在完成他们要执行的任务时是成功的。

答案 12 :(得分:1)

在这种情况下,“自由”似乎只是一个与不愉快的概念相关的情绪积极的词。它可以很容易地被“顽固”或“粗心”所取代。甚至问题本身也被描述为“我想做什么”与“什么可能有用”。

当然,任何人都可以自由选择任何道路。但我个人不会把我生命中的一刻投入到我不关心的事情上,如果我关心它,我会竭尽全力最大化它成功的机会。我认为这根本不是“限制性”。

答案 13 :(得分:0)

是否坚持传统智慧或“跳出框框思考”的问题在大多数学科中都存在,而不仅仅是编程。我认为必须根据具体情况来决定。

我参加的会议上,最受欢迎的论文似乎是对事物的深入分析 - 就像他们一样。与SO不同,流行的想法被投票赞成。

如果在该领域没有严重问题,这将是可以的。许多(如果不是大多数)软件仍然过于膨胀(恕我直言)并且遭受长期性能问题。事情就像他们一样稳定,但他们还够好吗?

我认为我们需要新的想法,这些想法在一段时间内一定是不受欢迎的,非常规的,有风险的。

我很高兴SO允许讨论非传统的想法,而不是作为火焰,而是作为质疑现状的方法。

答案 14 :(得分:0)

它不依赖于你最终要构建的内容吗?

这些人遵循既定流程:http://www.fastcompany.com/magazine/06/writestuff.html