Creo que un programador que crea aplicaciones empresariales es muy diferente de uno que crea un marco de almacenamiento en caché. ¿Cuáles son los principales tipos de programadores y la diferencia entre ellos?

Resulta que he escrito tanto aplicaciones comerciales como un marco de almacenamiento en caché, por lo que me daré una oportunidad. Creo que esta es una pregunta interesante y también me gustaría una respuesta más completa, tal vez algún tipo de taxonomía teniendo en cuenta las muchas dimensiones del trabajo, etc. .

Pero aquí hay un comentario sobre el caso particular que mencionas:

Al escribir aplicaciones comerciales, a menudo hay que comprender gran parte del negocio, discutir con las diferentes personas involucradas y aprender a la organización a comprender qué tipo de soluciones se necesitarían realmente. Luego presénteles a las personas y discutan mejoras adicionales, etc. No tengo mucha experiencia aquí, pero imagino que a veces puede ser como ser parte de las actividades de desarrollo empresarial. Entonces, muchas interacciones humanas, tal vez políticas organizacionales, etc.

Al hacer algo puramente técnico como un marco de almacenamiento en caché, el desarrollador puede permanecer casi exclusivamente en el ámbito de las computadoras. Una vez fui contratado (bueno, vendido 🙂 para mejorar el rendimiento de un CMS propietario y la solución fue crear una especie de marco de almacenamiento en caché allí. El sistema y las características y todo ya estaba allí. No tuve ningún contacto (no ni siquiera los veo nunca) con los usuarios finales. Solo colaboré con el desarrollador principal interno del CMS, realicé pruebas de rendimiento y colaboré con el otro tipo para crear el sistema de almacenamiento en caché allí. Volvió a realizar pruebas para ver cómo mejoraba el rendimiento Estaba contento y también AFAIK a todos los demás, pero no aprendí nada sobre el negocio o las personas allí ni nada de eso.

A veces, el término “programador de sistemas” se usa para referirse a este tipo de trabajo puramente técnico. Si escribe un controlador para algún disco duro nuevo o algo para un sistema operativo (como el kernel de Linux), el trabajo se define puramente técnico, similar al caso del marco de almacenamiento en caché.

Mientras que en el desarrollo de aplicaciones a veces la mayor parte del trabajo es tratar de averiguar los requisitos comerciales, etc.

Así que creo que esto hace una gran diferencia en el trabajo, por ejemplo, dependiendo de cuánto le guste trabajar con personas y problemas confusos en lugar de centrarse en cosas técnicas. No sé qué tan bien se cubre esto en educación, literatura, etc. No creo que haya encontrado mucho. Supongo que me gustan los dos tipos de trabajo de desarrollo, he disfrutado los dos tipos de proyectos, pero nunca antes pensé realmente o me di cuenta de lo diferentes que han sido … así que gracias por preguntar y A2A.

Hay muchos tipos diferentes de programación, aunque no siempre está claro dónde hacer distinciones porque hay mucha superposición. Por cierto, estoy hablando en términos de tipos de programación en lugar de tipos de programadores, porque una persona puede tener múltiples especialidades.

Estoy tratando de armar una lista aproximada en mi cabeza, pero ya puedo ver que sería más largo de lo que tengo tiempo para explicar en este momento.

En cuanto a la diferencia entre la programación de funciones empresariales y la programación de sistemas técnicos, hago ambas cosas en mi posición y estoy de acuerdo en que son bastante diferentes. La descripción de Tony Alatalo de esa diferencia está bien formulada, y no tengo nada que agregar.

Los diferentes tipos de programadores generalmente se basan en habilidades especializadas, por ejemplo, programadores integrados versus programadores gráficos versus programadores de kernel. En el espacio general de la informática empresarial, no hay mucha diferenciación. ¡Los mejores deseos!

Trataré de poner algo de perspectiva. La Lista de los principales tipos de programadores es bastante larga y tal vez esté creciendo …

Ninguna de las listas a continuación es lo suficientemente larga como para ser llamada parcial, estas son las cosas que surgieron de la parte superior de mi cabeza.

Enumeraré algunos y explicaré cómo es solo la parte superior del iceberg.
No olvide que, además, se utilizan muchos idiomas:
C
Montaje específico de arquitectura (ARM, Itanium, x86 …)
C ++, D, Java, C #
Python, Ruby, Perl
R
MATLAB, Fortran

Desarrolladores:

Desarrolladores de kernel:
Linux
Conductores
Controladores de red
IOMMU
Pila de red
Programador

Unix
Ventanas
Androide

Desarrolladores de sitios de Internet.

Desarrolladores de GUI.

Firmware / Desarrolladores integrados.
Investigadores de GPU.
Dispositivos médicos
Tarjetas de red

Virtualización
Contenedores
Maquinas virtuales
Red definida por software (SDN)
Almacenamiento definido por software (SDS)

Desarrolladores de aplicaciones (Resumen para todos los demás).