¿Cuáles son algunas especialidades de desarrollo conocidas / comunes? [cerrado]


10

En una respuesta que publiqué en otra pregunta, noté que es probable que haya una especialización cada vez mayor en el desarrollo de software: hay expertos o especialistas para un tipo dado de programación.

Me pregunto, ¿qué especialidades se sabe que existen en cantidades razonables en la industria ahora (no en la academia), que no son específicas de la tecnología (por ejemplo, para esta discusión las formas de triunfo no son una especialidad)? También estoy interesado en la industria en la que tal especialista tendría que trabajar si fuera necesario.

Respuestas:


18

A mi modo de ver, hay dos categorías de especialización:

  1. especialización en un campo de programación particular;
  2. o especialización en un dominio problemático.

Los ejemplos de un tema de programación serían:

  • Incrustado
  • GUI
  • Visualización
  • Pruebas

Luego hay especialización en un dominio de problema particular como

  • Financiero
  • Científico
  • Médico
  • Casi cualquier industria importante puede considerarse un dominio problemático

Creo que es una distinción importante.


4

La programación de sistemas integrados (en los que he estado involucrado durante más de 30 años) requiere una mentalidad bastante diferente a la de cualquier otro tipo de desarrollo de software. El rango de potencia de cómputo varía ampliamente, desde microcontroladores de 8 bits que cuestan 30 centavos en cantidad hasta microprocesadores de 32 bits que ejecutan Linux u otro sistema operativo común. Actualmente estoy haciendo proyectos en ambos extremos de esta escala. La memoria de código en los micros más pequeños solo puede ser de unos pocos KB, con solo unos pocos cientos de bytes de RAM. Un micro de 16 bits de rango medio que cuesta $ 3 en cantidad podría tener 256 KB de almacenamiento de programas y 16 KB de RAM.

Además de los recursos de memoria limitados, uno de los aspectos de la programación incorporada que es diferente a otras áreas de desarrollo de software es que el programador a menudo trata directamente con el hardware a nivel de registro, ya sea en el micro o en un periférico conectado a el micro a través de buses seriales como UART, SPI o I2C. Por esta razón, los micros integrados de gama baja generalmente se programan en lenguaje C o ensamblador.

Los sistemas integrados a menudo se enfrentan a eventos en tiempo real, por lo que un programa de firmware incorporado generalmente tiene muchas rutinas de interrupción y posiblemente un pequeño RTOS (SO en tiempo real). La depuración de tales sistemas a menudo requiere asistencia de hardware utilizando un par de líneas dedicadas en el micro para que los puntos de interrupción se puedan establecer de forma remota desde una PC. Los analizadores lógicos, analizadores de bus y osciloscopios son herramientas adicionales utilizadas para depurar estos sistemas.

Debido a los aspectos de hardware del desarrollo integrado, los desarrolladores a menudo tienen algo de experiencia en electrónica. (Tengo títulos en EE y CS).


1

El rol / equipo de "Desarrollador DBA" existe pero no es lo suficientemente común o apreciado.

Hablando de tiendas más grandes, un equipo de producción de DBA puede tener unas 1000 instancias de SQL Server para administrar y monitorear, proporcionar recuperación ante desastres, establecer enlace con equipos de SAN, redes y sistemas operativos, etc.

¿Quién está ahí para los equipos de desarrollo? ¿Afinación? Índices? ¿Diseño? ¿Estándares de codificación?

Dicho esto, como desarrollador DBA, he conocido a muchos desarrolladores de clientes que saben más sobre bases de datos que yo ... :-)

Por supuesto, el conocimiento del negocio también es útil. si lo contratan para mejorar algún código que fija los precios de derivados complejos en la banca de inversión, entonces cierta experiencia en el tema es casi tan importante como las habilidades de codificación.


0

También existe la distinción de conocer un tipo particular de solución de software, como cualquiera de los siguientes:

  • Planificación de recursos empresariales
  • Gestión de la relación con el cliente
  • Sistema de gestión de contenidos

Es probable que haya otros, pero estos son otra forma de especialidad en la que uno podría trabajar para casi cualquier tipo de empresa haciendo una personalización de lo anterior potencialmente. En mi caso, he trabajado en un sistema de gestión de contenido durante un par de años, y diría que es una especialidad en cierto sentido.

Es posible que algo como el desarrollo web no sea lo suficientemente específico, ya que puede haber muchas especialidades dentro de esta área, ¿o contaría para lo que desea?


Hmm, espero especialidades que sean distintas de sus habilidades de implementación. Por ejemplo, un especialista en IA no necesita usar C ++ / Prolog / cualquier lenguaje. El desarrollo web tal como lo veo en estos días une la implementación fuertemente con las tecnologías (asp.net mvc! = RoR - el conocimiento traducible es principalmente conocimiento general de programación y plataforma)
Steven Evers
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.