stringtranslate.com

Productividad de programación

La productividad de programación (también llamada productividad de software o productividad de desarrollo ) describe el grado de capacidad de los programadores individuales o de los equipos de desarrollo para crear y desarrollar sistemas de software. La productividad se refiere tradicionalmente a la relación entre la cantidad de software producido y el costo invertido en él. Aquí la delicadeza radica 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 fabricación, 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 y 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 acuerdo común sobre lo que realmente constituye la productividad se percibe como un obstáculo importante para una discusión fundamentada de la productividad. [2] Las siguientes definiciones describen el mejor consenso sobre la terminología. [3]

Productividad

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

Productividad = Salida / Entrada

Sin embargo, en las distintas disciplinas se pueden encontrar diferentes nociones y, en particular, diferentes unidades de medida para los insumos y los productos. 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 los productos y los insumos.

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 contextos posibles son: [3]

Mientras que los procesos de producción clásicos se consideran una métrica directa de la 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 complicada. ¿Cómo medimos la productividad de los autores, científicos o ingenieros? Debido a la creciente importancia del trabajo del conocimiento (en oposició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. Se acepta comúnmente que la naturaleza del trabajo del conocimiento difiere fundamentalmente del trabajo manual y, por lo tanto, se deben tener en cuenta factores además de la simple relación producto/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 disciplinas han podido establecer medios ampliamente aplicables y aceptados para la medición de la productividad. [1] Lo mismo se aplica al área más específica de la productividad de la programación.

Rentabilidad

La rentabilidad y el rendimiento están estrechamente relacionados y, de hecho, a menudo se confunden. Sin embargo, como la rentabilidad suele definirse como la relación entre los ingresos y los costes

Rentabilidad = Ingresos / Costos

Tiene un alcance más amplio que el desempeño, es decir, el número de factores que influyen en la rentabilidad es mayor que el número de factores que influyen en la productividad. En particular, la rentabilidad puede cambiar sin que se produzca ningún cambio en la productividad, por ejemplo, debido a condiciones externas como la inflación de costos o precios. Además de eso, la interdependencia entre productividad y rentabilidad suele ser tardía, es decir, las ganancias en productividad rara vez se reflejan en ganancias de rentabilidad inmediatas; es más probable que las ganancias en rentabilidad se realicen en el largo plazo.

Actuación

El término rendimiento 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 ello, instrumentos de control del rendimiento bien conocidos, como el Cuadro de Mando Integral, incluyen la productividad como un factor central, pero no único. Otros factores relevantes son, por ejemplo, la percepción que los clientes o las partes interesadas tienen de la empresa.

Eficiencia y eficacia

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

En general, se supone que la eficiencia se puede cuantificar, por ejemplo, mediante tasas de utilización, considerablemente más fácilmente que la eficacia.

Calidad

Tangen afirma: "Las mejoras en la calidad, aparte del hecho de que los productos sin defectos se suman a 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 fabricación, no analiza explícitamente el papel de la calidad de la producción en la relación de productividad. [6] Los trabajos más recientes de disciplinas no relacionadas con la fabricación se centran más en el conocimiento, el trabajo de oficina o de cuello blanco 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: "La productividad del trabajo del conocimiento debe apuntar, por tanto, en primer lugar a la obtención de la calidad, y no a la calidad mínima, sino a la óptima, si no a la máxima. Sólo entonces se puede preguntar: "¿Cuál es el volumen, la cantidad de trabajo?"" [5]

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

Productividad total = (calidad y cantidad de salida)/(calidad y cantidad de entrada)

Sin embargo, parece que estos esfuerzos por incluir la calidad en la determinación de la productividad aún no han dado lugar a un concepto operacionalizable. Actualmente no está claro cómo cuantificar los términos vagos “calidad y cantidad de productos” y “calidad y cantidad de insumos”, y mucho menos calcular la relación.

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.

Coco II

Boehm fue uno de los primeros investigadores que abordó sistemáticamente el campo de la productividad del software. Su modelo de estimación de costes COCOMO -actualmente COCOMO II [10] - es un conocimiento estándar de la ingeniería de software. En este modelo, define un conjunto de factores que influyen en la productividad, como la fiabilidad requerida o la capacidad de los analistas. Estos factores han sido ampliamente reutilizados en otros enfoques de productividad similares. El resto del modelo se basa en puntos de función y, finalmente, en líneas de código fuente (LOC). Las limitaciones de LOC como medida de productividad son bien conocidas.

La productividad del software de Jones

Jones es autor de una serie de libros sobre productividad de software. Además de varias consideraciones teóricas, su principal contribución es la provisión e integración sistemática de una gran cantidad de datos relevantes para los análisis de productividad. En al menos dos de sus libros, [11] [12] proporciona una serie de factores de productividad, pero también señala que para cada proyecto influye un conjunto diferente de factores. Estos factores pueden formar una base para las evaluaciones de productividad y para la comparación con los promedios industriales.

Esta es una de esas listas:

Los 20 factores cuyos impactos cuantificados en los proyectos de software se han determinado a partir de datos históricos son los siguientes:

Puntos de función

Los puntos de función fueron propuestos en 1977 por Albrecht como una mejor medida del tamaño del software que el LOC, ya que se basa en la especificación del software y, por lo tanto, tiene como objetivo medir el tamaño de su funcionalidad en lugar del código en sí. La razón es que el tamaño del código no solo depende del tamaño de la funcionalidad, sino también de la capacidad del programador: los mejores programadores producirán menos código para la misma funcionalidad. Los puntos de función han sufrido varios rediseños a lo largo de los años, principalmente impulsados ​​por el International Function Point User Group (IFPUG). Este grupo es grande y cuenta con más de 1200 empresas como miembros, lo que demuestra la fuerte aceptación de esta medida. Sin embargo, en muchos dominios aún carece de aplicación práctica porque a menudo se concibe como aplicable solo a los sistemas de información empresarial.

Ingeniería de software basada en valor

Varios investigadores propusieron la ingeniería de software basada en el valor o impulsada por la economía como un paradigma importante en la investigación futura de la 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 el valor se centra en el valor para el cliente, medido principalmente en unidades monetarias.

Gente de la calle

El famoso libro Peopleware: Productive Projects and Teams de De Marco y Lister [14] atrajo la atención de un público más amplio sobre la importancia de los factores relacionados con las personas. Recopilaron experiencias de muchos proyectos de software con buenas y malas prácticas de gestión que influyen en la productividad del equipo. Ellos y otros demostraron que estos son los temas decisivos en la ingeniería de software, pero solo fueron capaces de describirlos anecdóticamente.

Factores que influyen en la productividad de la programación

Probablemente exista una gran cantidad de factores que influyen en la productividad de programación de individuos y equipos. Por ejemplo, el proceso de desarrollo de software utilizado probablemente influya en la eficacia y eficiencia de un equipo.

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

En la cultura popular

En 2007, el cómic xkcd popularizó el concepto de pico Ballmer , en el que un programador, con la cantidad justa de embriaguez , alcanza un alto estado de productividad. El pico Ballmer debe su nombre al exdirector ejecutivo de Microsoft, Steve Ballmer , [16] y es probable que sea un juego de palabras con la serie Balmer de líneas espectrales de hidrógeno que lleva el nombre de Johann Balmer . [17]

Referencias

  1. ^ abc 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. (ed.) Manual de psicología industrial, del trabajo y organizacional Productividad en las organizaciones. Sage Publications Ltd, 2002, 8-24
  3. ^ abcd 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. ^ abc Drucker, PF Productividad de los trabajadores 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 Construction Engineering Research Lab (USACERL), 1994
  7. ^ Al-Darrab, IA Relaciones entre productividad, eficiencia, utilización y calidad. Estudio del trabajo, 2000, 49, 97-104
  8. ^ ab Saari, S. Productividad: teoría y medición. En Business Proc. de la Conferencia Europea de Productividad (EPC), 2006
  9. ^ Ray, P., Sahu, S. Medición y evaluación de la productividad de los trabajadores de cuello blanco. Revista internacional de gestión de operaciones y producción, 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. ^ ab Jones, Casper (1986). Productividad en la programación . Nueva York: McGraw-Hill Book Company. pág. 85-86. ISBN 9780070328112. OCLC  611260287 . Consultado el 14 de abril de 2020 .
  13. ^ Barry Boehm, Li Guo Huang. Ingeniería de software basada en 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 desempeño 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 de xkcd". www.explainxkcd.com . Consultado el 7 de octubre de 2023 .

Lectura adicional