Cuando las empresas dan a los posibles programadores pruebas de codificación, ¿consideran medidas aproximadas de la productividad típica del programador?

Para responder a su pregunta, he oído hablar de empresas que intentan evaluar la productividad de los empleados con tales medidas, pero nunca para posibles programadores.

En una prueba de codificación, preferiría evaluar los métodos mediante los cuales un candidato intenta resolver el problema, la capacidad de la persona para inspeccionar y criticar su propio trabajo, la lógica presentada, sus habilidades de argumentación, etc., todo eso después de descansar aseguró que no había invitado a un impostor a perder nuestro tiempo en la sesión de detección más incómoda de la historia (sí, he tenido la mala suerte de ver que eso suceda).


Sin embargo, tengo que estar en desacuerdo con la descripción de tu pregunta.

¿Por qué crees que 20KLoC / a se considera buena productividad? ¿Dónde se aplica?

Las empresas que usan esa “medida de productividad” corren un alto riesgo de hacer que la gente escriba detalladamente, sobre soluciones complicadas incluso para los problemas más triviales, solo para hacerse pasar por trabajadores productivos, en lugar de favorecer un código correcto, simple y legible que reduzca el error propensión y costo total de mantenimiento.

Además, la productividad debe medirse por la calidad de los resultados presentados dentro de las estimaciones dadas (cualquier impedimento externo considerado), no por la cantidad de esfuerzo realizado por los trabajadores para producir la solución final.

Un buen ingeniero de software produce un par de miles de LOC en un proyecto establecido.

Un gran ingeniero de software produce unos pocos miles negativos de LOC en el mismo proyecto. Negativo, como en menos de lo que había al principio.

Resulta que LOC es una medida inútil de ingeniería de software, pero los gerentes parecen adorarlo. Si desea un valor medible para SWE, lo mejor que obtendrá es boletos aceptados / boletos desplegados por sprint. Si su base de código apesta lo suficiente, incluso eso no funcionará terriblemente bien.

Lo sentimos, administrar ingenieros es más difícil que usar un contador de línea.

No creo que los empleadores usen líneas de código para medir la productividad del desarrollador.

Me centraría más en (sin ningún orden en particular):

  • mantener a sus clientes felices
  • manteniendo una baja tasa de defectos
  • cubriendo su código con suficientes unidades y pruebas de aceptación
  • refactorizando su código regularmente; trabajar para que el costo del cambio sea bajo

De hecho, valoraría mucho más las líneas que puede eliminar (sin afectar la funcionalidad y la calidad de su código) que las líneas que puede agregar 🙂

Si está hablando de una prueba de codificación, su posible empleador evaluará su capacidad para comprender la especificación, implementarla correctamente y, nuevamente, escribir una prueba para proteger su implementación de errores. ¿Ha oído hablar del desarrollo basado en pruebas? Vale la pena echarle un vistazo si no.

No puedo responder por todas las empresas, pero al seleccionar tareas de codificación para posibles candidatos y establecer límites de tiempo, mis colegas y yo generalmente intentamos tener plazos realistas y no demasiado ajustados, ya que estamos más interesados ​​en ver qué tan bien puede analizar el candidato y resuelva el problema, en lugar de su capacidad para realizar bajo presión de tiempo. Sin embargo, nunca hemos analizado el número de líneas de código en la solución, y no lo usamos como métrica internamente durante el desarrollo.

Otro aspecto es que no creo que sea justo y práctico pedirle a la candidata que pase más de 2..3 horas en un descanso de codificación, y preferiría pasar una hora extra con ella en una entrevista cara a cara si la codificación La prueba parece prometedora.

El software no es lo mismo que cavar agujeros. Tengo desarrolladores que se enorgullecen de KLOC negativo. Esto representa la eliminación de código redundante, lo que hace que la aplicación o el marco en el que están trabajando sea más rápido y confiable. Sin embargo, cuando sea necesario, el mismo desarrollador puede lanzar KLOC relativamente libre de errores durante todo el día. La calidad no es el volumen de producción y esto es difícil de evaluar a corto plazo, especialmente utilizando medidas como KLOC.

Las líneas de código a veces son inversamente proporcionales a la habilidad, y cualquier mono puede escribir 20KLOC incluso en una semana. Juzgar la habilidad de KLOC es, por lo tanto, una muy mala idea.

Es como si no juzgarías a un trabajador de la línea de ensamblaje por lo rápido que se mueven sus manos. No es bueno si están poniendo partes en el sentido contrario.

More Interesting

Sistemas operativos: ¿cuál es la diferencia entre un sistema operativo original y uno pirateado? ¿Por qué debería uno ir por el original, beneficios como tal?

Ingeniería de software: si una función tiene controles / condicionales y no está claro para qué sirven, ¿cómo podemos mejorar este patrón?

¿Qué dificultades uno enfrenta para saborear este éxito?

¿Cuánto vale una pensión al considerar una oferta de trabajo en ingeniería de software?

¿El código debe ser claro y simple o inteligente y novedoso?

¿Las pruebas unitarias de escritura son mejor realizadas por los desarrolladores o el control de calidad?

¿Por qué debería elegir las pruebas de software como mi carrera?

¿Con qué temas debe estar familiarizado todo ingeniero de software?

¿Cuál es una descripción de trabajo común para un vicepresidente de ingeniería en una startup de software financiada por una empresa?

¿Cuál es el mejor software para crear AMV?

Windows XP requirió 256 MB de memoria del sistema para funcionar sin problemas. Hoy, incluso 4 GB de memoria parecen bajos. ¿Se ha vuelto el software hinchado e ineficiente?

¿Cuáles son las ventajas de usar Spring para el desarrollo de servicios web RESTful? ¿Cuál es la razón de la popularidad de este enfoque en la industria del software?

¿Cómo usar Entity Framework? ¿Qué es una muestra de código de alguien que usa Entity Framework?

Estoy estudiando ingeniería de software en la Universidad de Waterloo. Siento que si abandonara y estudiara cosas en línea o tomara un descanso de un semestre, aprendería mucho. ¿Es una mala idea? Además, el programa aquí está muy estructurado, por lo que es difícil tomarse un año libre. ¿Qué tengo que hacer?

¿Cómo encuentra un buen ingeniero de software un mejor segundo trabajo?