¿Qué diferencia al software profesional de los proyectos personales?

Escala / Eficiencia

El software profesional generalmente se ocupa de más “cosas”. En un proyecto personal, puede tener un usuario, menos de diez categorías, un puñado de widgets. En el mundo, es posible que vea un sistema multiusuario, una lista de elementos no tan curada y millones de registros.

La escala generalmente se optimiza contra el presupuesto. Se le proporciona un entorno con poca energía a propósito y necesita aprovechar al máximo cada dólar invertido.

Riesgo para la seguridad

Enredar en un proyecto personal generalmente no hace daño a nadie. Pero los errores en el ámbito profesional pueden afectar los trabajos de las personas o las inversiones de sus usuarios.

Una gran cantidad de técnicas empleadas en software a gran escala se trata de mitigar y negociar la cantidad de riesgo introducido con cada solución. El software de juguete generalmente no genera mucho riesgo, por lo que cualquier solución es “la” solución.

Impacto

El potencial de impacto suele ser mucho más “amplio” y más notable. Si soluciono un error en una aplicación CRUD, sé que esto afectará a X muchos usuarios que lo usan a diario. Pero si soluciono un error en mi proyecto favorito, ni siquiera estoy seguro de cuántos seguidores tengo, si es que tengo alguno.

La única excepción a esto es si está trabajando en algo nuevo y fundamental, como un marco para un nuevo lenguaje de programación. El impacto potencial es entonces infinito, pero la garantía de impacto es mucho menor.

Técnicas reales:

Sospecho que quería una lista concreta de cosas que diferencian los proyectos más grandes de los más pequeños … Así que aquí hay una lista no exhaustiva:

  • Capacidades de auditoría
  • Fuente controlada por versión
  • Datos de aplicación controlados por historial / versión
  • Construcción / integración automatizada
  • Despliegue automatizado
  • Pruebas automatizadas
  • Múltiples usuarios / roles / niveles de seguridad
  • Almacenamiento de datos consultable (relacional o de otro tipo)
  • Distribuido / “en la nube”
  • Naturaleza asincrónica
  • Cifrado
  • Cuadros de mando / informes
  • Seguimiento de problemas
  • APIs
  • DSL
  • Múltiples consumidores en cada punto de MVC
  • Gestión de activos
  • Múltiples equipos de desarrollo.

More Interesting

¿Cómo son las entrevistas de ingeniería de software en Japón?

¿Cuál es el lenguaje de programación más utilizado para la ciberseguridad?

Tengo un rango de 38862 en SRMJEEE 2016. ¿Puedo obtener ingeniería de software? ¿Y es bueno?

¿Por qué crear más lenguajes de programación? ¿Cuáles son los lenguajes de programación más interesantes creados recientemente y cuáles son las ideas fundamentales que requieren su creación, en lugar de expresar las ideas como una parte nueva de un lenguaje existente?

¿Se puede evitar quedar atrapado con software sin licencia usando Linux?

¿Hay organizaciones que patrocinan Raspberry Pi para que un estudiante universitario aprenda y cree aplicaciones si tengo un objetivo claro?

¿Por qué Google hace un uso extensivo de Python para desarrollar sus aplicaciones y software?

¿Cómo puede alguien desarrollar habilidades como ingeniero de control de calidad?

¿Cuál es la diferencia entre el tiempo de recorrido de la matriz en Pila, Montón y Datos?

¿Qué es la integridad (profesional)? ¿Cuáles son sus mejores / peores experiencias con colegas de alta / pobre integridad?

¿Cómo se construyen los sistemas de software complejos?

¿Por qué son útiles herramientas como Maven si Eclipse puede construir proyectos automáticamente?

¿Cuáles son las mejores herramientas UML para Linux?

¿Qué deben saber los ingenieros de software principiantes sobre ingeniería de software?

¿Qué hacen los arquitectos de software?