¿En qué se diferencia el rol de ingeniero de datos del de ingeniero de software?

Como John Coogan señaló, estos títulos son bastante ambiguos, pero las compañías están haciendo una publicación explícita de estos trabajos / títulos / roles hoy en día.

Considero que es un buen recurso que establece claramente algunas de las tecnologías / habilidades requeridas (o utilizadas) para los roles de ingeniería de datos y de lo que trata esta ciencia / ingeniería de datos se detalla en [1].

Los roles de ingeniería de datos también requieren el siguiente conjunto de habilidades [2] con todas estas fuentes y tipos de datos diferentes:

  • Experiencia en sistemas distribuidos a gran escala.
  • Conocimiento de lenguajes como Java, C ++, Pig Latin y HiveQL
  • Modelado predictivo, procesamiento de lenguaje natural y análisis de texto.
  • Gestión de datos
  • Integración de datos estructurados y no estructurados.
  • Una gama de demandas de latencia de datos
  • Soporte arquitectónico para escalabilidad y procesamiento de alta velocidad.

Los ingenieros de datos deben tener una inclinación por las estadísticas, la minería de datos, la PNL y el aprendizaje automático.

Sería bueno tener algunas de estas habilidades también:
Hadoop
R
HBase / Cassandra
scikit
Cuidador de elefantes
Escaldado [3]
Cascalog [4]

El rol de ingeniero de software puede variar ampliamente de escribir código de front-end a código de back-end, es bastante diverso. El rol de ingeniero de datos es algo especial.

Esto es lo que creo:
“Un ingeniero de ciencia de datos es un ingeniero de software, pero un ingeniero de software no es necesariamente un ingeniero de ciencia de datos”.

Referencias
[1] http://radar.oreilly.com/2010/06…
[2] http://www.itbusinessedge.com/cm…
[3] https://github.com/twitter/scald…
[4] https://github.com/nathanmarz/ca…

Las otras respuestas aquí son geniales, pero es interesante considerar por qué un ingeniero de datos tiene responsabilidades y habilidades tan diferentes que un ingeniero de software.

Los ingenieros de datos se centran principalmente en la integración de múltiples sistemas, lo que conlleva tres desafíos importantes:

  • Amplitud y evolución: el ecosistema de gestión de datos está evolucionando tan rápidamente que los ingenieros de datos deben familiarizarse constantemente con las nuevas tecnologías, evaluar cuáles son maduras o aplicables a sus proyectos y aprender esas tecnologías con suficiente profundidad para integrarlas bien. Creo que este es un requisito mucho más fuerte que el ritmo de aprendizaje esperado para los ingenieros de software (que aún es intenso). Hay menos espacio para especializarse, mientras que un ingeniero de software puede ser un Java puro (lenguaje de programación) o un desarrollador de .NET Framework, por ejemplo.
  • Herramientas y secuencias de comandos: los ingenieros de datos deben ser muy pragmáticos al adoptar una amplia gama de lenguajes y herramientas, especialmente los lenguajes de secuencias de comandos que sirven como pegamento importante para unir sistemas dispares. Otros lenguajes de secuencias de comandos y paquetes especiales como R (lenguaje de programación) y MATLAB pueden ser necesarios para el procesamiento de números altamente especializado y específico del dominio. Este es más comúnmente el dominio de un Científico de Datos (otro título ambiguo), mientras que un Ingeniero de Datos puede enfocarse en facilitar el uso de tales herramientas específicas de dominio en el sistema que están construyendo.
  • Especialización profunda: los ingenieros de datos deben ser ingenieros de software muy capaces para las ocasiones en que deben desarrollar un componente de software a medida para su sistema. Esto puede incluir desde UDF especializados para bases de datos o sistemas como Apache Hive y Apache Pig, formatos de codificación o compresión patentados, y correcciones de errores matizadas hasta software de código abierto.

Por último, es más común que los ingenieros de datos creen soluciones donde tengan acceso directo a los clientes (generalmente internos), casos de uso e incluso datos sin procesar. En realidad, esto puede facilitar la creación de sistemas muy especializados y la depuración de errores complejos, dependientes de datos y reproducibles. Esta estrecha relación con el usuario final puede permitir un cierto estilo de desarrollo iterativo y creación de prototipos que es menos común para los ingenieros de software.

Esta es una pregunta un poco difícil porque el ingeniero de datos y el ingeniero de software son títulos de trabajo bastante ambiguos, pero esto es lo que sé:

Habilidades:
Ingeniería de datos:

  • Mucho más enfoque en estadísticas, sistemas distribuidos, arquitectura de bases de datos.
  • Los principales lenguajes para análisis / scripting incluyen: R, Matlab y Python.
  • Los lenguajes para producción incluyen: Java, C ++, Pig Latin.

Ingeniería de software:

  • Mucho más amplio, puede referirse a casi cualquier tipo de programación o desarrollo.
  • En estos días, los ingenieros de software tienen una gran demanda de proyectos web, móviles y de infraestructura.
  • Esto puede abarcar desde proyectos web que utilizan tecnologías web de front-end como Javascript, JQuery, Backbone.js y otros marcos, hasta el desarrollo de aplicaciones web con Ruby on Rails, Python y Django, Node.js, Java, Scala o cualquier otro idioma.
  • En el frente móvil, los ingenieros de software generalmente trabajan con Objective-C para el desarrollo de iOS, Java para el desarrollo de Android o HTML5 para aplicaciones móviles basadas en la web.
  • Los ingenieros de software también trabajan en todo tipo de proyectos que impulsan varios tipos de software.

Antecedentes educativos:
Ingeniería de datos:

  • Por lo general, requiere un título más avanzado (maestría o doctorado) para la mayoría de los roles de científicos de datos.
  • Los fondos están menos estrictamente relacionados con la informática. Los matemáticos, estadísticos, físicos y economometristas suelen ser grandes ingenieros de datos.

Ingeniería de software:

  • A menudo se centra más en la informática y la experiencia de programación específicamente.
  • Las habilidades fundamentales de CS como la filosofía Unix, las estructuras de datos, los algoritmos, las redes, las pruebas y el diseño de la experiencia del usuario son importantes.
  • A menudo, la experiencia educativa es tan valiosa como la cartera de trabajo que un solicitante ha construido.

Recursos adicionales:
¿Cómo se comienza a escribir programas prácticos de aprendizaje automático?
Lo que CS Majors debe saber: http://matt.might.net/articles/w

More Interesting

¿Fases del ciclo de vida del desarrollo de sistemas frente al ciclo de vida del desarrollo de software?

¿Cuál es la arquitectura de Spotify?

Como desarrollador junior, ¿qué oportunidades profesionales existen para combinar mi formación científica y mi conjunto de habilidades de software?

Para los ingenieros de software, ¿es productivo su entorno de desarrollador en el trabajo?

¿Cómo explicaría las pruebas de software a cualquier persona que no tenga ningún conocimiento sobre las pruebas?

Ingeniería de software: ¿Cómo documentan los programadores su trabajo?

¿Siempre usas la inyección de dependencia?

¿Por qué muchas personas odian las tecnologías de Microsoft?

¿Las entrevistas de tecnología de software son realmente independientes del lenguaje?

Tengo 25 años, una mujer trabaja en una empresa de software. Ya no deseo continuar en este campo. ¿Cómo paso mi tiempo de calidad en casa una vez que renuncio?

Cómo abordar un requisito de software del cliente para desarrollar un software CMS personalizado como WP (aplicación web, preferiblemente en Rails)

¿Las API de mensajería de texto (por ejemplo, Twilio, Nexmo) me permiten enviar mensajes como desde mi número de teléfono?

¿Cuál es el mejor software para la gestión de mis servicios, mis conversaciones regulares con mis clientes y, lo más importante, mis revisiones y progresos?

¿Cuál es la razón detrás de la primera web móvil más tarde?

¿Ha mejorado significativamente tu vida después de entrar en la profesión de ingeniería / programación de software?