令人信服的同事使用MVC

时间:2009-09-14 18:14:53

标签: php model-view-controller zend-framework

我即将开始一项新项目的工作,我遇到了一些问题。他们不是MVC的忠实粉丝。

这让我感到困惑的原因是,他们声称他们目前正在使用Zend Framework,而实际上并非如此。他们几乎没有使用数据库模型类,而这就是它。没有MVC,没有扩展Zend类来实现他们的目标。

我工作的最后一个项目非常重视Zend。项目完成后,我们留下了一个很好的MVC框架。非常干净的控制器,大多数重型逻辑都在它所属的模型中,并且是一个很好的模型网关系统。使用手写SQL从那里转到sphagetti代码是一种震撼。

所以,我问你,StackOverflow社区。我如何说服我的同事转向MVC框架?我觉得他们害怕使用MVC,因为这意味着两个已建立的程序员(这是一个小型创业公司)的学习曲线。我一直在考虑使用MVC和一个单独的SVN存储库(在我自己的时间)完成当前项目的副本,并在几周内向他们展示,看看他们的想法。

关于如何将同事转换为MVC的任何想法?

7 个答案:

答案 0 :(得分:16)

有一篇好文章你应该读“他们在学校里没有教过的最重要的事情”。其中之一是社交技巧。我觉得你在这里摔倒了。

首先,你是团队中的新人。你是谁告诉他们做什么或怎么做?如果你改写代码,如果情况更糟,你就是个白痴。如果你成功了,那你就是个蠢蛋。无论哪种方式,你要么是笑柄,要么是出路。

您需要做的是解决以下问题:“我如何才能学会融入这个团队,帮助项目取得成功并做出贡献?”从这个角度来看,向别人展示你比他们知道的更多而且他们是白痴并不是解决方案。

扩大你的观点 - 你的问题可能是10%技术问题,40%学习如何作为团队的一部分,30%的社交和20%的沟通。

从项目的角度来看,您认为更重要的是什么?你认为按时完成项目会怎样?

a)每个人都在错误的框架内富有成效地和谐地工作。 b)团队分成一个人在一个框架中工作,另外两个人忽略了他,每个人都让团队经理/管理层看起来很糟糕。

你说过你的作品,现在闭嘴并做他们告诉你做的工作,做得好,做得快,如果你愿意的话,把你想要的MVC放入其中(你的部分)只要你不告诉别人怎么写他们的代码:)如果你很好,你可以更快地完成它,然后让他们做更多的工作,并重复上述步骤。

一旦你赢得了他们的尊重,并且理想的是友谊,那么请再次尝试提出这个问题。

答案 1 :(得分:4)

如果这是一个“小型创业公司”,员工中没有技术人员,您可能不会再有时间从管理层返工已经完成的大部分事情。 “上市时间”是他们可以用作解释的关键字 - > “让它先行,快速”。

我也不喜欢它,但这可能是你的现实。

答案 2 :(得分:3)

这是“你永远不应该做的事情”之一。

http://www.joelonsoftware.com/articles/fog0000000069.html

目前正在向MVC转移资源的最佳用途吗?

你不能把你自己时间的时间算作“免费”,因为这是作弊。如果完全按照你自己的时间完成,你可以在0小时的公司时间做任何事情 - 重写RoR,用Lisp编写等等。

所以,让我们说你需要花费N个小时来编写它。您是否还在回归测试所需的时间内添加了它以确保它完美无缺?没有?再加上2N小时。如何让其他开发人员熟悉新代码?没有?再加上2N小时。

所以,我们现在可能已经达到了5个小时。在下次发货之前需要完成的其他事情是什么?你还可以在这些额外的5N小时内完成这个日期吗?如果是这样,那之后的发货日期是什么?可以在5N小时内完成的项目是否比在MVC中重写更有价值?

重写会带来什么好处,时间和维护?

从项目管理的角度来看,您可能没有考虑过这个问题。从这个角度来看,我个人怀疑改写是最好的利用你的时间。

答案 3 :(得分:2)

尝试说服他们使用您的首选模型不太可能有效,最重要的是因为他们很可能看不到您所做的相同好处。

小步骤效果最佳。不要出去重写一天2周的工作,你只会让自己看起来像个屁股。

相反,只要做最好的事情,同时与同事保持密切联系。除非他们迟早认为他们都知道所有人(在这种情况下,根本就没有希望),否则他们会就问题向你提出建议。只要解释一下,为什么会这样,你会解决这个问题。

尽量不要把它作为一个全知的人,但总是准备参数。并且不要指望在几周内取得成功。这需要时间,但如果你的同事值得他们的工作,他们最终会了解到这些好处。

当然,如果他们有反对使用任何模型的非常具体的论据,或者特别是MVC,你只需要尊重这种情绪。

答案 4 :(得分:1)

您可以尝试了解他们的优先事项。

如果他们想快速完成工作,那么存在一个框架原因就是做大量的样板工作,节省了编写工作所需的时间。

如果他们想要可维护的代码,那么在常规结构中以常规设计模式布置代码会有明显的好处。

如果他们想要可验证的代码(我对PHP中的可测试性不太了解),肯定以众所周知的模式扩展类会带来更大的可测试性。

如果它只是无能,那么教育是唯一的答案(还有什么比使用精心设计的框架更好的方法呢?)。

答案 5 :(得分:0)

基本上,您要做的是对您的工作环境进行相当深刻的更改。即使对于具有出色社交技能的人来说,这也是一项非常难的事情。你将不得不采取在很长一段时间内发生的小步骤,敏锐地意识到自我,说服人们,最后实际兑现你的承诺,即改变将会变得更好。

我不久前听过一个关于这个主题的相当不错的播客/采访:link。那里有很多有用的信息。最令人震惊的是,很多人根本就不喜欢改变,也不会做。你必须让它们成为这个过程的一部分并让它们得到投入。

答案 6 :(得分:0)

你可能无法说服他们,但你有权发表意见 - 毕竟你是团队的一员。无论你是不是新人都无关紧要。