¿Cuáles son algunas compensaciones comunes en el desarrollo de software?

Rápido, bueno o barato y espacio vs. tiempo

Triángulo de gestión de proyectos

“Rápido, bueno o barato” no es exclusivo del desarrollo de software. Más bien, es la misma ‘triple restricción’ que se aplica a casi todos los proyectos sujetos a restricciones del mundo real.

Básicamente, dice que puede tener su software rápidamente, puede tenerlo (muy) de alta calidad, o puede hacerlo ‘barato’ o con poco esfuerzo, pero solo puede elegir dos.

Compensación espacio-tiempo

“Espacio vs. Tiempo” es común en informática. En términos simples, para ciertos problemas, una solución podría optimizarse para espacio (RAM o requisitos de almacenamiento) o tiempo (ciclos de CPU o E / S), sacrificando uno por el otro.

Un ejemplo trivial sería el uso de un caché . Un caché almacena valores recuperados o calculados previamente (del sistema de archivos o una consulta de base de datos) en (generalmente) memoria local. Al consumir más espacio, reducimos el tiempo que tomará para consultas posteriores para ese valor.

Lo contrario ocurre cuando comprimimos archivos. Mediante el uso de algoritmos de compresión (como Zip o RAR), sacrificamos un poco de tiempo abriéndolos y leyéndolos (además de escribirles) a cambio de consumir menos espacio en el disco duro.

Algo similar sucede a mayor escala con sofisticados sistemas de correo electrónico que realizan deduplicación , por ejemplo, si alguien, por ejemplo, envía un archivo adjunto grande a un grupo, el sistema solo almacena el archivo adjunto una vez, pero hace que parezca que cada destinatario tiene su propia copia .

La respuesta de Alistair ya es bastante buena. Pero mi favorito personal sería

Tiempo de desarrollo vs agilidad / claridad

¿Hace algo rápidamente, de la manera sucia y posiblemente perjudica la velocidad del desarrollo futuro … O invierte tiempo por adelantado para diseñar interfaces adecuadas, al tiempo que presenta la posibilidad de que estos marcos no se aprovechen más en el futuro?

More Interesting

He completado B.Com con 48% de calificaciones. Ahora, ¿qué debo hacer a continuación para obtener un trabajo bien remunerado?

¿Por qué una clase Java no muestra 'Ejecutar como' -> 'Aplicación Java' en Eclipse IDE cuando los argumentos del método principal son 'int [] args' en lugar de 'String [] args'?

¿Los ingenieros de software necesitan ser buenos para trabajar con otros? ¿Por qué o por qué no?

¿Qué empresa ofrece la mejor seguridad de aplicaciones web con un precio mínimo?

¿Es el ambiente de trabajo realmente tan duro para los ingenieros de software de Amazon, como lo retratan los artículos recientes del NY Times?

¿Por qué las pruebas de mutación son importantes en la ingeniería de software?

¿Qué software de integración continua utiliza y por qué le gusta?

¿Cuál es la mejor manera de aprender sobre ingeniería de software?

Si no planeo obtener un BS en CS, ¿qué debo estudiar para obtener una base sólida como programador?

¿Cuál es la mejor lista de software de elearning a partir de 2017?

¿Qué compañías de software han tenido que reescribir el backend de su producto porque no pudieron mantener / innovar su código existente?

¿Cuál es la mejor pieza de software jamás escrita y en qué idioma?

¿Cómo se crean las actualizaciones de software?

Recientemente me gradué con una maestría en informática y estoy trabajando como desarrollador de QlikView. Quiero cambiar mis campos a cualquiera de los anteriores o como nuevo ingeniero de software graduado. ¿Cómo debo proceder?

¿Cómo gestionas los egos con un equipo de desarrolladores remotos?