¿Es el trabajo de los programadores diseñar la base de datos?

16

He sido programador durante los últimos seis años. A lo largo de mi carrera, he trabajado en muchas aplicaciones web.

La mayoría de las veces, cuando se necesitaba una base de datos, nos la dieron a nosotros (los programadores) o teníamos alguna base de datos heredada para trabajar. Si no es así, tuvimos que crear y diseñar la base de datos por nuestra cuenta, lo que no fue tan difícil.

¿Pero se supone que, como programadores, creamos la base de datos completa desde cero cuando tenemos que construir una nueva aplicación donde los datos son tan importantes y tenemos requisitos desordenados con un modelo de datos complejo?

¿No es lo mejor para la aplicación y la empresa que un experto lo haga?

No estoy tratando de huir del diseño de la base de datos, pero es algo muy importante para hacerlo bien.

ashishjmeshram
fuente
2
La respuesta es sí. ¿La respuesta correcta aquí ayudará a su gerencia a cambiar de opinión? No lo creo. Y por otro lado, será una muy buena experiencia tener. ¿Por qué no intentar diseñar el esquema de datos?
eminemence
9
"DB expert" y "programmer" no son mutuamente excluyentes. Querrá un experto para diseñar la base de datos. Ese experto podría ser un programador.
Lord Tydus
10
¿Es mi trabajo como soldado saber montar a caballo? Esto puede o no ser parte del entrenamiento, pero si por alguna razón su supervivencia depende del caballo, entonces la respuesta es obvia. Si la descripción de su trabajo está cambiando, es sorprendente, entonces quizás busque en otro lado. Yo personalmente recogería estas habilidades de db solo porque no me gusta depender de otros.
Trabajo
@Job no podría haberlo dicho mejor :)
Songo

Respuestas:

32

En primer lugar, es su trabajo si el gerente del proyecto se lo dice. Las empresas más pequeñas a menudo no tienen expertos en bases de datos a tiempo completo. De todos modos, no hay (y no debería haber) una distinción clara entre desarrolladores y expertos en bases de datos: cualquier buen desarrollador tendrá un conocimiento considerable sobre las bases de datos, y cualquier buen DBA sabrá cómo codificar, al menos en el lenguaje de la base de datos para procedimientos almacenados .

Si bien el diseño de la base de datos es una parte bastante central de una aplicación, no es más importante "acertar" que otras partes centrales de las que dependerá mucho otro código.

Y al igual que el código, la idea de que consigas un súper experto para sentarse y pensar mucho durante una semana y luego escribir el diseño perfecto que nunca necesitará cambiar es una ilusión. El diseño de la base de datos puede y cambiará a medida que se desarrolle la aplicación.

Por lo tanto, es realmente beneficioso tener el DB diseñado por un programador (que entiende bien los DB), porque entonces tienes a alguien que conoce ambos lados. Eso es ciertamente mejor que hacerlo alguien que solo entienda los DB y no tenga nada que ver con el resto del trabajo de desarrollo.

Michael Borgwardt
fuente
¿Podría decirme la diferencia entre un DBA y un desarrollador de bases de datos en lo que respecta al diseño de bases de datos?
Songo
@Songo: OMI no debería haber diferencia.
Michael Borgwardt
1
¿De Verdad? ¡Siempre pensé que un DBA se trataba más de ejecutar una base de datos y ajustarla mientras que un desarrollador de bases de datos está más preocupado por el diseño y modelado de bases de datos!
Songo
3
El administrador de la base de datos y el desarrollador de la base de datos son dos cosas diferentes. Las pequeñas y medianas empresas normalmente no saben la diferencia. Cuando trabaje en un sistema empresarial grande, puede tener dba, desarrollador de inteligencia empresarial (servicios de análisis, almacén de datos) y un desarrollador de bases de datos. Para nosotros esos son trabajos muy diferentes.
CodeART
1
@CodeWorks: Sin duda son diferentes, pero IMO es un antipatrón organizacional para afianzar una especialización excesiva de ese tipo, ya que hace que la colaboración entre personas que solo conocen su especialización sea muy problemática.
Michael Borgwardt
4

Es común que los programadores hagan la base de datos. Muy común. Desafortunadamente, muchos programadores no tienen experiencia con el DB. No entienden cómo informar contra big data, los conceptos de data marts, esquemas en estrella, etc. Algunos ni siquiera entienden los conceptos básicos de la normalización.

Si un hombre tiene las habilidades para hacer todo a nivel experto, es un muy buen producto. Un ejército de un solo hombre puede hacer lo que un equipo de 10 hombres puede hacer en una fracción del tiempo con 1000 veces la calidad. No es una exageración.

Lo mejor para el programador es hacerlo (menos personas), suponiendo que el programador sepa lo que está haciendo. Por supuesto, hay miles de fallas para señalar también.

Lord Tydus
fuente
Creo que esto sucede mucho en todos mis pequeños equipos. Se espera que los desarrolladores con poca experiencia en DB diseñen (no tan duro en la superficie) y sintonicen (mucho más difícil) bases de datos bajo su código. Siempre desearía tener un DBA a mi disposición.
Plataforma
1
"No es una exageración". Lo es, a menos que pueda calificar este reclamo de alguna manera.
Burhan Ali
4

Es una pregunta interesante: hay un fuerte argumento de que la mayoría de los desarrolladores decentes deberían entender cómo estructurar adecuadamente una base de datos relacional, es decir, deberían ser capaces de producir un esquema normalizado y, basándose en la experiencia y patrones comunes, hacer razonables decisiones sobre cómo deben estructurarse los datos almacenados (para mí es en su mayoría evidente por sí mismo, pero sé que no todos lo ven de esa manera).

Además, si nos fijamos en Entity Framework Code-first que sugiere que el mismo pensamiento que se aplica a la construcción de un modelo de datos de bajo nivel producirá un esquema razonable, o al menos una pista.

Entonces, no, no creo particularmente que necesite un experto en bases de datos para diseñar un esquema de base de datos, al menos no para bases de datos pequeñas y medianas (que son las cosas en las que he trabajado).

El problema es que el diseño de un esquema bueno (o al menos adecuado) no es toda la historia, especialmente si la base de datos tiene que escalar. Me parece que el "valor agregado" aportado por un DBA está en obtener las cosas que no sean el esquema básico correcto: índices, configuración de almacenamiento, mantenimiento de la base de datos (mantener el tamaño de los archivos bajo control, reconstruir índices, etc.), ser más inteligente con usuarios y roles, y así sucesivamente.

Un buen programador debería aportar una cartera diversa de habilidades: debería ser más que un codificador [insertar idioma de elección] e incluiría la comprensión de las bases de datos en esa cartera.

Murph
fuente
4

Creo que la capacidad de diseñar una base de datos relacional razonable es esencialmente una necesidad para los programadores no junior.

Dicho esto, particularmente para aplicaciones grandes, es vital que la base de datos sea "correcta" la primera vez (esquema, indexación, etc.). Si la empresa tiene acceso a un DBA calificado, esa tarea debe recaer en su plato; en general estarán más calificados. Potencialmente, la revisión / discusión debe hacerse con el desarrollador principal que accederá y trabajará con la base de datos en el lado del cliente para que no haya sorpresas. Si no hay DBA, el programador diseña la base de datos.

Bobby Everyteen
fuente
1
Los administradores de bases de datos no son necesariamente analistas de datos. Requiere diferentes conjuntos de habilidades para ajustar una base de datos y normalizar datos relacionales, respectivamente.
Gilbert Le Blanc
1

Veo dos preguntas aquí:

  • ¿Deben los desarrolladores de bases de datos modelar la lógica empresarial?
  • ¿Debo saber cómo conservar los datos en la base de datos?

Lógica de negocios

  • La lógica empresarial no vive en una base de datos. Es un modelo conceptual que debe ser independiente de otras capas dentro de su sistema.

  • Siempre puede reemplazar una base de datos con otra, o incluso puede decidir usar soluciones NoSQL para abordar posibles problemas de rendimiento.

  • Los desarrolladores de bases de datos pueden participar durante el proceso de modelado, pero normalmente esto lo hacen personas con un conocimiento completo de un dominio problemático. En nuestra organización, esto lo hacen los desarrolladores del lado del servidor.

  • Muchos piensan que la base de datos es la base de su aplicación. Haga una base pobre, y el sistema caerá. No estoy de acuerdo con esto. Veo la base de datos como un medio de almacenamiento que siempre se puede reemplazar.

Datos persistentes

  • Debe saber cómo conservar los datos en diferentes medios de almacenamiento, incluidas las soluciones SQL y NoSQL.

  • El nivel de experiencia requerida variará con el tamaño del sistema en el que está trabajando.

  • Las pequeñas empresas esperarían que usted tenga ese conocimiento, cuando las grandes empresas normalmente contratan expertos para abordar los requisitos relacionados con el rendimiento, la escalabilidad y la seguridad.

Resumir:

  • El modelo de dominio es la base de su sistema, no la base de datos.

  • Si trabaja para una empresa pequeña en un proyecto relativamente pequeño, entonces probablemente debería diseñar la base de datos usted mismo.

  • Si trabaja para una gran empresa en un sistema empresarial, entonces probablemente tenga más sentido pasar el trabajo a los expertos de dominio.

CodeART
fuente