为什么应用程序开发人员可以处理数据库问题,而数据库开发人员则尽量避免应用程序问题?

4
根据我的经验,这是“后端”(数据库开发人员)和“前端”人员(应用程序开发人员、客户端和服务器端)之间的一个争议问题。在这个问题上,曾经有过许多激烈的酒吧讨论。
我只想知道,这是因为人们有不同的思维方式,或者是懒得学习更多并感觉在自己所知道的领域很舒适,还是其他原因。

我认为暗示数据库人员懒惰是非常冒犯的。仅仅因为我选择了与你不同的专业,并不意味着我愚蠢或懒惰。 - HLGEM
我并没有说我是一个应用程序开发者... 当我说“懒惰”时,这是基于我的经验,数据库人员不倾向于从各个角度审视系统的设计。他们认为这不是他们的工作。我很乐意学习双方,并通过这样做提出更好的解决方案。 - Ferdeen
12个回答

20

我可能会重新表达这个问题:为什么(一些)应用程序开发人员认为他们可以在不真正了解数据库的情况下做“数据库相关工作”?而数据库开发人员通常不会认为他们可以在没有一定的培训和经验的情况下编写出一个好的应用程序!


+1 非常好 - 我们开发人员很容易陷入这种傲慢的状态。 - Andrew Hare
哇 - 我最快获得的“好答案”徽章!我不仅可以假设这个主题触及了许多数据库开发人员的敏感神经! - Tony Andrews

10

这涉及到抽象层次。在典型的商业应用程序中(软件方面),数据库是最低级别的抽象。在外围抽象层上工作的开发人员比内部抽象层上的开发人员更有可能了解内部抽象层,因为对于依赖它们的外部抽象层而言,内部抽象层表现得越无知表现得就越好。

这是因为内部抽象层最好在不了解依赖它们的外部抽象层的情况下执行。

因此,网站演示层的设计师可能会对他们所依赖的服务器端代码有一定的了解,因为他们与之交互。但是在服务器上工作的开发人员根本不需要了解设计方面的任何知识。


4

我认为这是需要知道的基础。应用程序开发人员通常需要知道如何连接数据库,添加记录,删除记录等等...随着新技术的出现,例如LINQ,开发人员可以在实际代码中编写数据库查询。

另一方面,数据库开发人员只需要知道如何编写数据库查询,因为那是他们的工作,可能不需要担心应用程序层面的代码。


2

因为程序员在工作中经常需要理解和与数据库交互,但数据库管理员通常不需要在其工作范围之外进行编程(除了在DBMS中)。


1

我认为这源于在SQL编程中看起来很容易,而要开始学习只需要一点点的知识(对于程序员来说,学习SELECT * FROM Table非常容易)。应用程序编程并不是这样。它在短时间内变得非常复杂,这使很多人望而却步。现在我并不是说数据库人员比其他人聪明,只是他们所做的事情看起来比构建应用程序更容易。


然而,一个熟悉数据库的人在编写会通过网络或被多次使用的代码时,通常不会使用 select *。 - HLGEM
没错,这就是我的观点。表面上看起来很容易构建能够“工作”的查询。它可能很差,但它完成了工作,这就是为什么很多程序员会涉足数据库开发的原因。付出的努力与基本结果之间的比例很低。 - kemiller2002

1
如果你开发应用程序,那么很有可能,迟早你会需要将应用程序连接到后端。
相反的情况并不一定成立。

1
我认为这源于需求。如果你考虑每个人的角色,程序员需要做与数据库相关的工作远比数据库工作者需要做编程任务要多得多。

1

根据我的经验,我开发过“数据库”和“应用程序”(按照您的命名法...),我想状态管理方面有很大的区别。

正确设计的数据库始终处于“干净”的状态,并且每个事务都保持这种一致性。因此,在开发数据库时,您必须非常清楚地将数据抽象成表格,并指定哪些更新是合法的等等。

我发现大多数应用程序开发人员(包括我自己 :)) 在保持应用程序中的一致状态方面做得很草率。任何非平凡的界面都有比适度的数据库更多的可能状态需要管理,而且要确保它始终处于干净的状态并不容易。分析用户执行的每个可能步骤也更加困难。


1

根据我的经验,应用程序开发人员并不处理所有与数据库相关的事情。考虑到与数据库相关的所有管理工作,如备份、复制等。

一个典型的数据库管理员(至少在我参与的大多数项目中)负责与项目数据库相关的所有事务 - 所有管理工作,与应用程序开发人员合作进行性能调整,提供有关应用程序使用的SQL的建议,编写一些存储过程代码,创建(或至少审查和咨询)物理数据库设计等。

那么,从应用程序开发人员的角度来看,数据库人员是不是“懒惰”,或者“对他们已经知道的东西感到满意”?我自己也是应用程序开发人员,有很多关于我们项目中使用的数据库的事情我不知道。


1

我的教育背景确保了我对数据库的工作原理有一个不错的理解。我进入这个领域时希望能够从事很多数据库相关的工作,因为我是一个Web应用程序员,我想这就是我的职责所在。

我的两份开发者工作都是在两家可以被描述为微小的公司(包括我在内只有2个人,然后就只有我一个人;3名开发人员的微小公司,短暂地还有第四个人)。我没有观察到立即需要一个专门的数据库工程师,也没有在任何资源不足以雇佣一个专门的数据库工程师的公司工作过。我可以设想一些情况可能会改变这种状况(包括新工作:P)。

至于其他方面,我同意抽象化也是一个因素,作为开发人员,我们处于顶层/外部看着。我无法想象在没有DB技能的情况下进行Web应用程序开发,而我认为SQL/DB管理既是一个重要的工具,也是我需要保持锐利的领域。

我要补充说的是,我将数据库方面视为一个独立的领域。这之间有许多可以相互转换的技能,但是有很多专业知识我需要掌握才能变得更好,并且成为一个好的程序员并不意味着我在后端方面也做得很好(幸运的是,我不是一个好的程序员;))。另外,我可以肯定地说,这就是她说的话。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接