Articulo de referencia

Productividad de la programación

La productividad de la programación (también llamada productividad del software o productividad del desarrollo ) describe el grado de capacidad de los programadores individuales...

La productividad de la programación (también llamada productividad del software o productividad del desarrollo ) describe el grado de capacidad de los programadores individuales o de los equipos de desarrollo para crear y evolucionar sistemas de software. Tradicionalmente, la productividad se refiere a la relación entre la cantidad de software producido y el costo invertido en él. Aquí, la clave reside en encontrar una forma razonable de definir la cantidad de software.

Terminología

La productividad es un tema importante que se investiga en disciplinas tan diversas como la manufactura, la psicología organizacional, la ingeniería industrial , la gestión estratégica, las finanzas, la contabilidad, el marketing y la economía. Los niveles de análisis incluyen el individual, el grupal, el divisional, el organizacional y el nacional. [ 1 ] Debido a esta diversidad, no existe una definición clara de productividad ni de sus factores influyentes, aunque se han realizado investigaciones durante más de un siglo. Al igual que en la ingeniería de software , esta falta de consenso sobre qué constituye realmente la productividad se percibe como un obstáculo importante para un debate fundamentado sobre la misma. [ 2 ] Las siguientes definiciones describen el mayor consenso sobre la terminología. [ 3 ]

Productividad

Si bien no existe una definición de productividad comúnmente aceptada, parece haber consenso en que la productividad describe la relación entre la producción y los insumos:

Productividad = Producción / Insumos

Sin embargo, en las distintas disciplinas se pueden encontrar diferentes nociones y, en particular, diferentes unidades de medida para la entrada y la salida. La industria manufacturera suele utilizar una relación directa entre el número de unidades producidas y el número de unidades consumidas. [ 4 ] Las industrias no manufactureras suelen utilizar horas-hombre o unidades similares para permitir la comparación entre la salida y la entrada.

Un acuerdo básico es que el significado de productividad y los medios para medirla varían según el contexto que se esté evaluando. En una empresa manufacturera, los posibles contextos son: [ 3 ]

  • la máquina individual o el sistema de fabricación;
  • la función de fabricación, por ejemplo el ensamblaje;
  • el proceso de fabricación de un solo producto o grupo de productos relacionados;
  • la fábrica; y
  • todo el sistema de fábricas de la empresa

Mientras se consideran los procesos de producción clásicos, una métrica directa de productividad es simple: cuántas unidades de un producto de calidad específica se producen con qué costos. Para el trabajo intelectual, la productividad es mucho más compleja. ¿Cómo medimos la productividad de autores, científicos o ingenieros? Debido a la creciente importancia del trabajo del conocimiento (en contraposición al trabajo manual), [ 5 ] muchos investigadores intentaron desarrollar medios de medición de la productividad que se puedan aplicar en un contexto no manufacturero. Existe un consenso general en que la naturaleza del trabajo del conocimiento difiere fundamentalmente del trabajo manual y, por lo tanto, es necesario tener en cuenta factores además de la simple relación producción/insumo, por ejemplo, calidad, puntualidad, autonomía, éxito del proyecto, satisfacción del cliente e innovación. Sin embargo, las comunidades de investigación en ninguna de las dos disciplinas han podido establecer aún medios de medición de la productividad ampliamente aplicables y aceptados. [ 1 ] Lo mismo ocurre con el área más específica de la productividad en programación.

Rentabilidad

La rentabilidad y el rendimiento están estrechamente vinculados y, de hecho, a menudo se confunden. Sin embargo, dado que la rentabilidad se define generalmente como la relación entre los ingresos y los costos

Rentabilidad = Ingresos / Costos

Su alcance es mayor que el del desempeño; es decir, el número de factores que influyen en la rentabilidad es mayor que el de los factores que influyen en la productividad. En particular, la rentabilidad puede variar sin que cambie la productividad, por ejemplo, debido a condiciones externas como la inflación de costos o precios. Además, la interdependencia entre productividad y rentabilidad suele ser diferida; es decir, las mejoras en la productividad rara vez se reflejan en una rentabilidad inmediata, sino que es más probable que se materialicen a largo plazo.

Actuación

El término desempeño es incluso más amplio que productividad y rentabilidad, y abarca una gran cantidad de factores que influyen en el éxito de una empresa. Por lo tanto, instrumentos de control de desempeño reconocidos, como el Cuadro de Mando Integral, incluyen la productividad como un factor fundamental, aunque no exclusivo. Otros factores relevantes son, por ejemplo, la percepción que tienen los clientes o las partes interesadas sobre la empresa.

Eficiencia y eficacia

Eficiencia y eficacia son términos que generan confusión, ya que a menudo se confunden y, además, la eficiencia suele confundirse con la productividad. La diferencia entre eficiencia y eficacia se suele explicar informalmente como: eficiencia es hacer las cosas bien y eficacia es hacer las cosas correctas . Si bien existen numerosas definiciones, [ 3 ] hay cierto consenso en que la eficiencia se refiere a la utilización de los recursos e influye principalmente en el insumo requerido del índice de productividad. La eficacia, por otro lado, influye principalmente en el resultado del índice de productividad, ya que suele tener consecuencias directas para el cliente. La eficacia puede definirse como "la capacidad de alcanzar un resultado deseado".

En general, se asume que la eficiencia se puede cuantificar, por ejemplo, mediante tasas de utilización, con mucha más facilidad que la efectividad.

Calidad

Tangen afirma: «Las mejoras en la calidad, aparte del hecho de que los productos sin defectos aumentan los niveles de producción, no deberían incluirse en el concepto de productividad». [ 3 ] Sin embargo, la mayor parte de la literatura clásica en disciplinas no relacionadas con el software, especialmente en el área de manufactura, no analiza explícitamente el papel de la calidad de la producción en el índice de productividad. [ 6 ] Trabajos más recientes de disciplinas no manufactureras se centran más en el conocimiento, el trabajo de oficina o el trabajo administrativo y, por lo tanto, analizan cada vez más el papel de la calidad con respecto a la calidad. [ 5 ] [ 1 ] [ 7 ] [ 8 ] [ 9 ]

Drucker subraya la importancia de la calidad para la evaluación de la productividad de los trabajadores del conocimiento: «Por lo tanto, la productividad del trabajo del conocimiento debe apuntar primero a obtener calidad, y no una calidad mínima, sino una calidad óptima, si no máxima. Solo entonces se puede preguntar: "¿Cuál es el volumen, la cantidad de trabajo?"» [ 5 ]

Saari capta la importancia de la calidad con su fórmula extendida para la productividad: [ 8 ]

Productividad total = (Calidad y cantidad de la producción) / (Calidad y cantidad de los insumos)

Sin embargo, parece que estos esfuerzos por incluir la calidad en la determinación de la productividad aún no han dado como resultado un concepto operacionalizable. Actualmente, sigue sin estar claro cómo cuantificar los términos vagos de "calidad y cantidad de la producción" y "calidad y cantidad de los insumos", y mucho menos cómo calcular la relación entre ambos.

Lo último

En el desarrollo de software las cosas son más complicadas que en la producción de bienes. El desarrollo de software es un proceso de ingeniería.

COCOMO II

Boehm was one of the first researchers that systematically approached the field of software productivity. His cost estimation model COCOMO - now COCOMO II[10] - is standard software engineering knowledge. In this model, he defines a set of factors that influence productivity, such as the required reliability or the capability of the analysts. These factors have been widely reused in other similar productivity approaches. The rest of the model is based on function points and finally source lines of code (LOC). The limitations of LOC as a productivity measure are well-known.

Jones's software productivity

Jones is the author of a series of books on software productivity. Besides several theoretical considerations his main contribution is the systematic provision and integration of a large amount of data relevant for productivity analyses. In at least two of his books,[11][12] he gives a number of productivity factors but also points out that for each project a different set of factors are influential. These factors can form a basis for productivity assessments and for comparison with industrial averages.

This is one such list:

The 20 factors whose quantified impacts on software projects have been determined from historical data are the following:

  • Programming language used
  • Program size
  • The experience of programmers and design personnel
  • The novelty of requirements
  • The complexity of the program and its data
  • The use of structured programming methods
  • Program class or the distribution method
  • Program type of the application area
  • Tools and environmental conditions
  • Enhancing existing programs or systems
  • Maintaining existing programs or systems
  • Reusing existing modules and standard designs
  • Program generators
  • Fourth-generation languages
  • Geographic separation of development locations
  • Defect potentials and removal methods
  • Existing documentation
  • Prototyping before main development begins
  • Project teams and organization structures
  • Morale and compensation of staff[12]

Function points

Los puntos de función fueron propuestos en 1977 por Albrecht como una medida de tamaño de software superior a las líneas de código (LOC). Se basan en la especificación del software y, por lo tanto, buscan medir el tamaño de su funcionalidad en lugar del código en sí. Esto se debe a que el tamaño del código no solo depende del tamaño de la funcionalidad, sino también de la habilidad del programador: los mejores programadores producen menos código para la misma funcionalidad. Los puntos de función han sufrido varios rediseños a lo largo de los años, impulsados ​​principalmente por el Grupo Internacional de Usuarios de Puntos de Función (IFPUG). Este grupo es grande, con más de 1200 empresas miembros, lo que demuestra la amplia aceptación de esta medida. Sin embargo, en muchos ámbitos aún carece de aplicación práctica, ya que a menudo se concibe como aplicable únicamente a sistemas de información empresarial.

Ingeniería de software basada en el valor

Varios investigadores propusieron la ingeniería de software basada en valores o impulsada por la economía como un paradigma importante para la investigación futura en ingeniería de software. Boehm y Huang señalan que no solo es importante realizar un seguimiento de los costos en un proyecto de software, sino también del valor real ganado, es decir, el valor para el cliente. [ 13 ] Explican que es importante crear el caso de negocio del software y mantenerlo actualizado. En esencia, la ingeniería de software basada en valores se centra en el valor para el cliente, medido principalmente en unidades monetarias.

Peopleware

El famoso libro Peopleware: Productive Projects and Teams de De Marco y Lister [ 14 ] puso de relieve la importancia de los factores relacionados con las personas ante un público más amplio. Recopilaron experiencias de numerosos proyectos de software con buenas y malas prácticas de gestión que influyen en la productividad del equipo. Tanto ellos como otros autores demostraron que estos son aspectos decisivos en la ingeniería de software, pero hasta entonces solo habían podido describirlos de forma anecdótica.

Factores que influyen en la productividad de la programación

Probablemente existan numerosos factores que influyen en la productividad de los programadores, tanto individuales como en equipo. Por ejemplo, el proceso de desarrollo de software utilizado probablemente influye en la eficacia y eficiencia de un equipo.

La personalidad de los programadores de software influye en los estilos de codificación utilizados, lo que a su vez influye en la productividad de los programadores. [ 15 ]

En 2007, la tira cómica xkcd popularizó el concepto de " Pico Ballmer" : un programador que, con la cantidad justa de embriaguez , alcanza un estado de alta productividad. El Pico Ballmer recibe su nombre del ex director ejecutivo de Microsoft, Steve Ballmer , [ 16 ] y probablemente sea un juego de palabras con la serie de líneas espectrales de hidrógeno Balmer, que lleva el nombre de Johann Balmer . [ 17 ]

Referencias

  1. 1 2 3 Ramírez, YW, Nembhard, DA Medición de la productividad de los trabajadores del conocimiento: Una taxonomía. Journal of Intellectual Capital, 2004, 5, 602-628
  2. Neal, A., Hesketh, B., Anderson, N., Ones, DS, Sinangil, HK, Viswesvaran, C. (eds.) Manual de psicología industrial, laboral y organizacional: Productividad en las organizaciones. Sage Publications Ltd, 2002, 8-24
  3. 1 2 3 4 Tangen, S. Desmitificando la productividad y el rendimiento, Revista Internacional de Productividad y Rendimiento, 2005, 54, 34-36
  4. Chew, BW. Guía práctica para medir la productividad. Harvard Business Review, 1988, 66, 110-115.
  5. 1 2 3 Drucker, PF Productividad del trabajador del conocimiento: El mayor desafío. California Management Review, 1999, 41, 79-94
  6. Thomas, BE y Baron, JP Evaluación de la productividad de los trabajadores del conocimiento: Revisión de la literatura Laboratorio de Investigación de Ingeniería de la Construcción (USACERL), 1994
  7. Al-Darrab, IA. Relaciones entre productividad, eficiencia, utilización y calidad. Estudio del trabajo, 2000, 49, 97-104.
  8. 1 2 Saari, S. Productividad: Teoría y medición. En Actas de la Conferencia Europea de Productividad (EPC), 2006
  9. Ray, P., Sahu, S. Medición y evaluación de la productividad de los empleados administrativos. International Journal of Operations & Production Management, 1989, 9, 28-47
  10. Boehm et al. Estimación de costos de software con COCOMO II, 2000
  11. Jones, Casper (2000). Evaluaciones de software, puntos de referencia y mejores prácticas . Boston, Mass.: Addison-Wesley.
  12. 1 2 Jones, Casper (1986). Productividad en la programación . Nueva York: McGraw-Hill Book Company. págs. 85-86 . ISBN  9780070328112OCLC 611260287. Consultado el 14 de abril de 2020 . 
  13. Barry Boehm, Li Guo Huang. Ingeniería de software basada en el valor: un estudio de caso. IEEE Software, 2003
  14. Tom DeMarco, Timothy Lister. Peopleware: Proyectos y equipos productivos, 1987
  15. Karimi, Zahra; Baraani-Dastjerdi, Ahmad; Ghasem-Aghaee, Nasser; Wagner, Stefan (2016). "Vínculos entre las personalidades, los estilos y el rendimiento en la programación informática" . Journal of Systems and Software . 111 : 228–241 . arXiv : 1611.10169 . doi : 10.1016/j.jss.2015.09.011 . S2CID 400518 . 
  16. "Pico Ballmer" . xkcd . Consultado el 7 de octubre de 2023 .
  17. "323: Ballmer Peak - explicación xkcd" . www.explainxkcd.com . Consultado el 7 de octubre de 2023 .

Lecturas adicionales

  • Estimación de costes de software con Cocomo II , Barry W. Boehm et al., Prentice Hall, 2000. ISBN 978-0-13-026692-7.
  • Desarrollo de productos en la mitad de tiempo: Nuevas reglas, nuevas herramientas , Preston G. Smith y Donald G. Reinertsen, Wiley, 1997. ISBN 978-0-471-29252-4.
  • Productividad en la programación , Capers Jones , McGraw-Hill, 1986. ISBN 978-0-07-032811-2.
  • Estimación de costos de software , Capers Jones , McGraw-Hill, 2007. ISBN 978-0-07-148300-1.