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.
- ¿Qué opinas del ensayo de Edsger Dijkstra "Sobre la crueldad de enseñar realmente informática" y por qué?
- ¿Por qué tenemos tantos tipos de datos elementales en lenguajes de programación?
- ¿Qué tan bueno es el equipo de ingeniería en Crowdfire?
- ¿Cuáles son las ideas del desarrollo de software personalizado?
- ¿Existe algún software inteligente que pueda resolver errores automáticamente?
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.