为新项目选择“更好”或更熟悉的技术?

我正在寻找一个全新项目的工作,这是我作为我的第一个独立可销售项目一直在思考的问题。 从广义上讲,它是一个基于Web的服务应用程序,我的第一选择,服务器语言非常简单……我过去常常从Java Web应用程序中了解Java。

但是我在做Web应用程序方面的经验涉及JSP,Servlets和JSTL …我知道像Hibernate / Spring这样的新技术背后的想法,但从未使用它们。 所以我们编写了自己的DAO,通过编写生成XML / JSON页面的特殊mini-JSP页面来处理AJAX等。

我并不认为Spring / Hibernate是任何Java Web项目的“唯一”或“正确”方式,但它们被广泛使用。 另一方面,不仅试图学习这些增加了初始开发时间,而且我将利用我的学习尝试来构建生产系统。

我记得乔尔的一篇早期文章说过(我会解释,因为我找不到它)

“无论什么都很酷, 总是使用首席开发人员(或开发团队?)最了解的技术”

我想知道人们怎么想的?

ps:这应该是CW吗?

注意酷炫新框架的诱惑! 我目前正在攻击一个只有登录,一些主要是静态页面的小小网页应用程序,以及一些通过电子邮件请求某些信息的表单。 我可能需要两天的时间来做MVC风格的传统Servlet / JSP。 相反,由于时间表有些松懈,我决定使用这个项目来加速Spring,Spring MVC和Spring WebFlow。 虽然我很可能只是密集,但我花了好几个星期的时间来绕过正确的做事方式,我仍然不完全相信我正在做的一切,而且应用程序仍未完成。 幸运的是,由于懈怠,我没有整体项目进度滑落的危险,但我总是问自己,我是否要废弃它并重新开始。

不过,我已经吸取了教训:下一次,除非我之前用于制作项目,否则我不会推动新框架。 那就是说,我很高兴我现在明白spring(或者至少我认为我这样做)并且下次再次使用它会毫不犹豫。

那么下次我将如何学习新的框架呢? 如果有一个项目负责人(在这种情况下,我是一个团队的项目负责人,那里没有帮助)我会使用他们实施的框架。 如果没有,或者我想学习项目负责人没有使用的框架,我会在我自己的时间用它作为一个副项目。 学习很好。 通过将未经测试的技术投入其中来使公司工作处于危险之中并不是那么好。

我是一名顾问,我看过很多项目,开发人员开始使用servlet + JSP,因为这是他们所知道的,开始时非常简单。 但是,它为团队提供了编写自己平台的机会/借口, 这比使用其他人并编写应用程序更有趣 。

随着项目的发展,该团队重新发明了越来越多的车轮,其中不少车轮最终正方形 。 这就是我进入图片的地方 – 为这个半灵活平台添加新东西变得如此复杂,以至于开发人员无法跟上添加function修复错误而无需增援。 只是为了增加侮辱伤害,内部开发人员通常是那些被指派去做无聊的bug修复的人,因为bug修复需要更多的知识,这些内容已成为团队专有的持久性和Web框架,所以那些gosh-danged顾问可以做一些有趣的新事物。

现在,你不应该仅仅因为人们一直在互相讨论关于它的真棒的博客文章而使用框架,但是你也应该意识到这些框架存在的原因(以及为什么使用它们)有很好的理由。 如果您根本没有使用任何Web框架,我建议您使用Spring MVC,Wicket或其他任何试用版。 它们并不能解决所有问题,并且它们确实会产生一些问题,但总体上通常会提高生产率,特别是如果您正在制作高级用户界面。

我一直在进行普通JDBC已经足够持久化的项目,并且不需要比servlet + JSP更高级的Web框架,但这些项目是少数。 如果没有使用一两个框架,你永远不会知道你的项目是否属于那个不需要的项目的少数民族,或者它是否是大多数人的一部分。

不要一次尝试所有东西 – 一次采用一种新技术。

我可以肯定地说Spring值得考虑。 它可以为您提供尽可能多的服务,但它并不会让您感到烦恼。

例如,在一开始您可能只需要dependency injection。 然后,您将需要有关数据库交互和事务管理的帮助。 然后,您将决定将MVC模式应用于您的Web应用程序。 之后,您可能会意识到系统的组件是相互发送JMS。 等等等等。

对于所有这些情况,Spring拥有自己的简单,直观,轻量级的解决方案。

启动新项目时,限制要使用的不熟悉的技术/框架的数量。 每个框架都需要时间来学习,每个框架都有问题,特别是如果没有正确实现。

如果可以,我建议您查看Play框架 。 它是Java的Web框架,专注于开发人员的工作效率。 如果你愿意,你可以选择使用Spring / Hibernate,但你不受此限制。 它有一个非常容易学习的实现,如果你正在寻找它,你应该能够在一天之内得到一个好主意。

这取决于客户想要的(在咨询领域)。 你必须学习新技术。 客户是否愿意为此付费?

并非所有新的警告都是已知的,而较旧的警告则certificate了更多。

当然,如果每个人都这么想,我们这些天都会被VB困住。 你必须寻找适当的平衡,并自己学习很多东西,这样你就可以对可用的技术,它们的优缺点进行客观的观察。

我个人肯定会建议看看spring,我发现它为我节省了无数个小时。 如果你需要一个ORM层,那么hibernate也很有用(而spring也与hibernate有很好的集成)。 他们肯定不是“唯一的”甚至是“正确的”做事方式(这是非常主观的),但他们既节省了我的时间和精力,特别是spring。

任何未知技术都有一个主要陷阱。 你不知道龙在哪里,你不知道如何用“头发”来磨新技术。

学习需要花费时间,而且您需要在预算中考虑到这一点。 你的估计也很可能太低了……