¿Cómo se mide la productividad o las horas de trabajo en los trabajos de desarrollo de software? [cerrado]

Así que muy pronto comenzaré mi trabajo como ingeniero de software. Nunca he trabajado en una empresa antes. Lo que no me queda claro es cómo las personas/empresas en trabajos de desarrollo de software miden su productividad u horas de trabajo, especialmente cuando tienen horarios de trabajo flexibles.

Me refiero a que en otros trabajos existe el tema de las horas de trabajo de 9 a 5, donde vas a la oficina y haces un tipo claro de trabajo. Por ejemplo, como ser cajera en el supermercado. Está muy claro cómo se mide tu productividad o si lo estás haciendo bien. Si simplemente está sirviendo a todos los clientes y en su silla, ¡entonces lo está haciendo muy bien! Pero ¿qué pasa con los trabajos de desarrollo de software?

En los trabajos de desarrollo de software es bastante difícil medir eso. Realmente tengo dificultades para entender la atmósfera de las horas de trabajo para el desarrollo de software. Quiero decir, podrías estar trabajando en un error y podría llevarte 2 días, pero alguien más podría resolverlo en un par de horas más o menos. O bien, es posible que se le asigne una tarea para programar, pero en ese día en particular es posible que su mente no esté en su mejor momento, por lo que es posible que no escriba mucho código o algo así. En otras palabras, dando dos horas de trabajo, pero diferentes modos personales, en un día probablemente puedas escribir una gran cantidad de código en esas dos horas siendo muy productivo, pero al otro día y dando las mismas dos horas, es posible que solo ser capaz de escribir muy poco código. Entonces, ¿cómo se miden la productividad y las horas de trabajo en nuestro dominio/campo?

Me encantaría saber eso antes de comenzar mi trabajo porque ya me siento preocupada y preocupada por no poder ser productiva durante mis días malos más o menos. Quiero decir que a veces puedes dormir un poco menos y ser menos productivo como programador. Pero un cajero puede hacer su trabajo incluso cuando tiene sueño, y no necesita preocuparse por pensar si realmente merece el dinero al final del mes o no, ¡como yo! ¿Asi que?

Quiero decir que definitivamente puedo tratar de tener una vida buena/saludable para ser lo mejor posible en mi trabajo, ¡pero estas cosas no están garantizadas!

Pareces equiparar escribir mucho código con productividad. Estos no son necesariamente los mismos. Por ejemplo, si usa TDD, probablemente podría medir las pruebas escritas y las conversiones de fallas a aprobados mientras escribe el código que se ajusta a esas pruebas.
Con demasiada frecuencia se mide por vagos en el tiempo de asiento.
Las métricas de rendimiento utilizadas variarán de una empresa a otra. Hable con Recursos Humanos o con su supervisor para averiguar cuáles son aplicables en su caso.
Lo que realmente cuenta, más que nada, es la opinión de sus compañeros de trabajo y de su jefe. Considerarán su situación, el trabajo que está haciendo y sus antecedentes. Al principio, probablemente sea una buena idea poner menos consideración en las dudosas "métricas" de productividad y más esfuerzo en las relaciones y en conocer al equipo.
@Brandin: Y, a veces, pasa días enteros simplemente comunicándose con un cliente para aclarar lo que realmente necesita sin escribir ningún código.

Respuestas (3)

Una persona nueva en el mundo laboral, esto es en lo que me concentraría:

Conozca las expectativas de su supervisor con respecto al tiempo y la asistencia. Algunos lugares tienen horarios de trabajo más flexibles que otros, algunos lugares tienen la expectativa de trabajar de 60 a 80 horas a la semana. Mucho de esto se centra en qué tipo de negocio tiene la empresa. Por ejemplo, hay empresas que facturan el tiempo a los clientes. Una empresa como esa va a tener diferentes expectativas que una que crea aplicaciones y las vende después. Y una agencia gubernamental puede tener expectativas diferentes o un programador en una empresa que en su mayoría tiene una fuerza laboral sindicalizada en una planta de fabricación. También puede depender de si se necesita soporte de producción en tiempo real o no. Si bien las expectativas de la empresa difieren, el lugar para obtener esas expectativas no lo es y ese lugar es su supervisor inmediato.

A continuación, descubra cómo es el proceso de trabajo. ¿Dónde verifica el código, cuáles son los estándares de codificación, qué herramientas se espera que use, tiene procesos de compilación automatizados o control de calidad con los que debe poder trabajar? ¿Qué tipo de pruebas hacen? ¿Qué se espera en términos de trabajar juntos? ¿Hacen programación en pareja? ¿Hacen revisión de código? ¿Son ágiles? ¿Cómo se asigna el trabajo? ¿Cómo se determinan los plazos?

A continuación, hable con su jefe inmediato sobre exactamente cómo quiere que se ponga al día y exactamente qué espera en términos de su trabajo. Es probable que al principio tengas muchas preguntas. Pregúntale si deberías acercarte a él o si hay alguien más a quien quiera guiar. Asegúrese de hablar con él sobre su primera tarea cuando esté terminada, incluso si no tienen una revisión de código formal. Es mucho mejor descubrir que vas en una dirección que no les gusta de inmediato que después de que se den cuenta seis meses después. Asegúrese de conocer la fecha límite de su primera tarea y comuníquese si ve algún problema para cumplirla.

Espere que su supervisor y usted no siempre estén de acuerdo en el enfoque. Sin embargo, recuerde que generalmente es su trabajo tomar la decisión final y usted debe aceptar esas decisiones con buena disposición, incluso cuando no esté de acuerdo. El momento de influir en una decisión es antes de que se tome. Recuerde que las necesidades o los deseos técnicos no son el único ni el más importante factor que influye en la mayoría de las decisiones. Trate de comprender qué más está afectando las decisiones con las que no está de acuerdo y eso lo ayudará a ser más convincente en el futuro. Necesitará construir una reputación de entrega de trabajo antes de que pueda tener mucha influencia en las decisiones, así que concéntrese en eso primero.

Recuerde también que en los negocios tenemos plazos que a menudo significan que no puede modificar ese último 5% de perfección. Lo perfecto es enemigo de lo suficientemente bueno. No estamos creando una obra de arte, estamos creando una pieza de software que hace algo y, a veces, es mejor publicarlo de manera imperfecta que no entregarlo en absoluto.

Es mejor hacer una pregunta que hacer una suposición equivocada. Es mejor dar malas noticias (como un problema que afecta una fecha límite) más temprano que tarde. Es mejor pedir ayuda (bueno, después de intentar resolver el problema por tu cuenta, a nadie le gusta un vampiro del tiempo tampoco) que luchar y no poder cumplir.

Asegúrese de consultar con su supervisor al menos una vez al mes (o preferiblemente con más frecuencia, pero depende de la personalidad de su supervisor) y vea qué tan bien está cumpliendo con las expectativas. Desarrollará más juicio sobre esto a medida que adquiera más experiencia, pero por ahora, realmente preste atención para asegurarse de recibir esa retroalimentación. Y cuando la retroalimentación sea negativa, haga un cambio. Su jefe tiene control sobre sus aumentos de sueldo y bonificaciones e incluso si va a seguir trabajando. Su opinión sobre tu desempeño es más importante que la tuya.

Finalmente comience a observar la cultura de la empresa. Podrá saber si hay momentos en los que está bien holgazanear o cuántas horas extra se espera para cumplir con los acuerdos o qué tan formalmente se comunican las personas.

El mejor consejo que he recibido desde que empecé a buscar trabajo. ¡Gracias!
+1 para "Tendrá que construir una reputación por entregar trabajo antes de poder tener mucha influencia en las decisiones". ¡¡Buen consejo!! ¡Gracias!

Entonces, ¿cómo se miden la productividad y las horas de trabajo en nuestro dominio/campo?

No hay una respuesta fácil para esto. Si desea un trabajo con una productividad fácilmente medible, el trabajo del conocimiento es el campo equivocado.

Hay todo tipo de métricas inventadas y, en última instancia, sin sentido, líneas de código, cobertura de prueba, recuento de errores, recuento de funciones. Todos estos tienen inconvenientes significativos y debe sospechar de cualquiera que los use. Recomendaría no usarlos (incluso para usted mismo) como métricas, ya que puede jugar con ellos de manera trivial.

Lo que importa es "¿piensa mi supervisor que estoy cumpliendo con las expectativas?"

Esto es algo que debe hablar con su supervisor para entenderlo. Realmente no hay otra manera de saber "Estoy cumpliendo con las expectativas" que preguntándole a su supervisor. Aquí hay una buena manera de hacerlo.


Solo una nota, su actitud sobre esto es realmente crítica (y incorrecta):

Pero un cajero puede hacer su trabajo incluso cuando tiene sueño, y no necesita preocuparse por pensar si realmente merece el dinero al final del mes o no, ¡como yo!

Habiendo hecho tanto el desarrollo de software como el de caja, esto no es cierto en absoluto.

Sus artículos por minuto disminuirán significativamente si está cansado. Te llevará más tiempo resolver los problemas. Estarás físicamente cansado, lo que hará que seas más lento. Serás menos amigable con los clientes.

Estar cansado afecta tu desempeño laboral, en todos los campos.

Estar cansado afecta todo lo que hacemos, pero no afecta todo lo que hacemos por igual. La forma en que impacta en una tarea determinada también puede diferir entre individuos, lo que hace que cualquier medición sea difícil, si no inútil. Lo único que hay que hacer es evaluarse honestamente y preguntarse si uno ha dado un día de trabajo honesto por el pago de un día honesto.

Lo mejor que puede esperar aquí es "cualitativamente": después de un poco de experiencia en la industria, conocerá a algunos desarrolladores que obviamente son mejores que otros. Hay un meme bien conocido que dice que los mejores desarrolladores son 10 veces mejores que otros . Los números específicos se discuten mucho, pero ciertamente es cierto que hay algunos desarrolladores muy buenos, una gran cantidad de desarrolladores promedio y algunos malos también. El problema de detectar a los "mejores" desarrolladores es que sus habilidades varían: un desarrollador puede ser excelente porque escribe código que contiene muy pocos errores, mientras que otro desarrollador puede ser excelente porque escribe código que se ejecuta muy rápido.

Lo único de lo que sería muy cauteloso es de cualquier empresa que intente medir el rendimiento del desarrollador mediante métricas similares a "líneas de código escritas" o "errores introducidos". Cualquiera de ellos es demasiado fácil de jugar para que sea una medida útil de la habilidad de un desarrollador; para tomar un ejemplo específico, algunos de los mejores fragmentos de código que he escrito han sido los fragmentos que eliminaron líneas de código, por ejemplo, al generalizar algunos fragmentos dispares de código en una sola función, pero obviamente no lo habría hecho si mi productividad se hubiera medido de alguna manera por el número de líneas de código escritas.